QuakeGod
2023-02-01 7a2ff321965f1f24f3047fedd44a83f451f1f793
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
/**
  ******************************************************************************
  * @file           : MyQueue.h
  * @brief          : Header for MyQueue.c file.
  *                   This file contains the common defines of the application.
  ******************************************************************************
    */
#ifndef __MYQUEUE_H__
#define __MYQUEUE_H__
 
typedef struct 
{
    unsigned char * buf1;    
    int Caps;
    volatile int wp; //Write Pointor
    volatile int rp; //Read Pointor
//    volatile int DataSize;
    volatile int RecvBytes;    
    volatile int bFull;
    volatile int bEmpty;
    volatile int state;    
 
}stMyQueue,* pMyQueue;
 
    int initQueue(pMyQueue theQueue, void * pBuf, int nSize);
    int EmptyQueue(stMyQueue * theQueue);
static __inline int GetCap(pMyQueue theQueue)
    {
        return theQueue->Caps;
    }
static __inline int GetDataLen(pMyQueue theQueue)
    {
        int size=theQueue->wp -theQueue->rp;
        if (theQueue->bFull)
        {
                return theQueue->Caps;
        }else if (theQueue->bEmpty)
        {
                return 0;
        }else    if (size >0 )
        {
            return size;
        }else if (size < 0)
        {
            return size + theQueue->Caps;
        } else
        {
            return 0;
        }
    }
static __inline int GetLeftRoom(pMyQueue theQueue)
    {
        return (theQueue->Caps - GetDataLen(theQueue));
    }
static __inline int IsFull(pMyQueue theQueue)
    {
        return (theQueue->bFull);
    }
static __inline int IsEmpty(pMyQueue theQueue)
    {
        return (theQueue->bEmpty);
    }
 
    int GetContinueEmptyRoom(pMyQueue theQueue);
    int GetContinueData(pMyQueue theQueue);
static __inline    unsigned char * GetReadBuffer(pMyQueue theQueue)
    {
        return theQueue->buf1+theQueue->rp;
    }
static __inline    unsigned char * GetWriteBuffer(pMyQueue theQueue)
    {
        return theQueue->buf1+theQueue->wp;        
    }
    int AddSpace(pMyQueue theQueue, int nSize);    
    int DelData(pMyQueue theQueue, int nSize);
 
    int CopyData(pMyQueue theQueue, void * pData, int nSize);
    
    int PushIn(pMyQueue theQueue, void * pData, int nSize);
    int PopOut(pMyQueue theQueue, void * pData, int nSize);
    
    int PushOne(pMyQueue theQueue, unsigned char ch);
    int PopOne(pMyQueue theQueue);
 
#endif  /* __MYQUEUE_H__ */