| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #include "FifoQueue.h"
- #define FALSE false
- #define TRUE true
- struct FifoQueue Fas_Tasks; //fas协议任务
- struct FifoQueue Pub_Tasks; //公共任务
- /*
- 使用:
- QueueInit(&SysMsg);
- if(QueueIn(&SysMsg,i) == QueueFull) break;
- if(QueueOut(&SysMsg,&sh) == QueueEmpty) break;
- */
- //Queue Init
- void QueueInit ( struct FifoQueue *Queue )
- {
- Queue->front = Queue->rear;//初始化时队列头队列首相连
- Queue->count = 0; //队列计数为0
- }
- // Queue In
- bool QueueIn ( struct FifoQueue *Queue, ElemType sdat ) //数据进入队列
- {
- if ( ( Queue->front == Queue->rear ) && ( Queue->count == QueueSize ) )
- {
- // full //判断如果队列满了
- return FALSE; //返回队列满的标志
- }
- else
- {
- // in
- Queue->dat[Queue->rear] = sdat;
- Queue->rear = ( Queue->rear + 1 ) % QueueSize;
- Queue->count = Queue->count + 1;
- return TRUE;
- }
- }
- // Queue Out
- bool QueueOut ( struct FifoQueue *Queue, ElemType *sdat )
- {
- if ( ( Queue->front == Queue->rear ) && ( Queue->count == 0 ) )
- {
- // empty
- return FALSE;
- }
- else
- {
- // out
- *sdat = Queue->dat[Queue->front];
- Queue->front = ( Queue->front + 1 ) % QueueSize;
- Queue->count = Queue->count - 1;
- return TRUE;
- }
- }
|