forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "sys.h"    
#include "gprs_message_queue.h"
 
 
 
 
 
// ³õʼ»¯¶ÓÁÐ
void initQueue(queue_t * queue_eg, GPRS_SEND_MESSAGE * message_addr)  
{  
    queue_eg->head = 0;             //¶ÓÍ·±ê־λ  
    queue_eg->tail = 0;             //¶Óβ±ê־λ  
    queue_eg->queue_num = 0;        //¶ÓÁÐÖÐÊý¾Ý¶àÉÙ
    queue_eg->memory_block = message_addr;
}  
 
//²åÈë¶ÓÁÐ
u8 enQueue(queue_t *hq, GPRS_SEND_MESSAGE ins)  
{    
    int index;
    u8 * qptr;
    u8 * ins_ptr;
 
    
 
    if(hq->queue_num == MESSAGE_NUM)
        return    QUEUE_FULL;
 
    /**/
    qptr         = (u8 *)&hq->memory_block[hq->head];
    ins_ptr     = (u8 *)&ins;
    if(hq->head == MESSAGE_NUM)
    {
        hq->head = 0;
    }else
    {
        hq->head = hq->head + 1;
    }
    hq->queue_num = hq->queue_num + 1;
 
    /*ÄÚ´æ¿é¸³Öµ*/
    for(index = 0; index < sizeof(GPRS_SEND_MESSAGE); index ++)
    {
        *qptr = *ins_ptr;
        qptr ++;
        ins_ptr ++;
        
    }
    
    return QUEUE_OK;  
}  
 
 
/*´ÓÁжӠȡ³öÊý*/  
u8 outQueue(queue_t * hq, GPRS_SEND_MESSAGE * ins)  
{
    u8 * qptr;
    u8 * ins_ptr;
    int index;
 
    
    if(hq->queue_num == 0)
        return    QUEUE_EMPTY;
    
    
    qptr         = (u8 *)&hq->memory_block[hq->tail];
    ins_ptr     = (u8 *)ins;    
    
      if(hq->tail == MESSAGE_NUM)
    {
        hq->tail = 0;
    }else
    {
        hq->tail = hq->tail + 1;
    }
 
    hq->queue_num --;
 
    /*ÄÚ´æ¿é¸³Öµ*/
    for(index = 0; index < sizeof(GPRS_SEND_MESSAGE); index ++)
    {
        *ins_ptr = *qptr;
        qptr ++;
        ins_ptr ++;
        
    }
 
    return QUEUE_OK;
    
}  
 
  
/*Çå³ýÁ´¶ÓÖеÄËùÓÐÔªËØ*/  
  
void clearQueue(queue_t * hq, GPRS_SEND_MESSAGE * message_addr)  
{  
    hq->head = 0;             //¶ÓÍ·±ê־λ  
    hq->tail = 0;             //¶Óβ±ê־λ  
    hq->queue_num = 0;        //¶ÓÁÐÖÐÊý¾Ý¶àÉÙ
    hq->memory_block = message_addr;
}