#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; } }