ZNKT-ST-M/queue/user_queue.c

97 lines
1.6 KiB
C
Raw Permalink Normal View History

#include "user_queue.h"
#include<string.h>
Queue queue;
DATA_LOAD_T data_load;
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void InitQueue(pQueue queue)
{
queue->qFront = 0;
queue->qRear = 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
bool IsEmptyQueue(pQueue queue)
{
if (queue->qFront == queue->qRear)//<2F><><EFBFBD>׵<EFBFBD><D7B5>ڶ<EFBFBD>β
return true;
else
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
bool IsFullQueue(pQueue queue)
{
//<2F><>β<EFBFBD>¸<EFBFBD><C2B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if (((queue->qRear + 1) % QUEUE_ZISE) == queue->qFront)
return true;
else
return false;
}
//<2F><><EFBFBD><EFBFBD>
uint8_t EnterQueue(pQueue queue, uint8_t *value,uint16_t len)
{
if (IsFullQueue(queue))
{
return 0;
}
//<2F>Ӷ<EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>
memcpy(&queue->BasicArr[queue->qRear],value,len);
queue->qRear = (queue->qRear + len) % QUEUE_ZISE;//<2F><>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>λ<EFBFBD><CEBB>
return 1;
}
//<2F><><EFBFBD><EFBFBD>
uint8_t OutQueue(pQueue queue,uint8_t *out,uint16_t len)
{
if (IsEmptyQueue(queue))
{
return 0;
}
memcpy(out,&queue->BasicArr[queue->qFront],len);//<2F><><EFBFBD><EFBFBD>ֵ
queue->qFront = (queue->qFront + len) % QUEUE_ZISE;//ָ<><D6B8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
return 1;
}
uint8_t Analysis_Queue_data(pQueue queue)
{
uint8_t bcc=0,i,bcc1=0;
if (IsEmptyQueue(queue))//<2F>ж϶<D0B6><CFB6><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return 0;
}
while(queue->BasicArr[queue->qFront] != 0xAA)//<2F><>֡ͷ
{
queue->qFront++;
if(IsEmptyQueue(queue)==true)
return 0;
}
bcc = queue->BasicArr[queue->BasicArr[++queue->qFront]+2] ;//У<><D0A3>λ <20><>ʱ<EFBFBD><CAB1><EFBFBD>׵<EFBFBD><D7B5><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
for(i=2;i<queue->BasicArr[queue->qFront]+2;i++)
{
bcc1+=queue->BasicArr[i] ;
}
if(bcc != bcc1)//<2F>ж<EFBFBD>У<EFBFBD><D0A3>
{
return 0;
}
if(queue->BasicArr[queue->BasicArr[queue->qFront]+3]!=0x55)//<2F>ж<EFBFBD>֡β
{
return 0;
}
queue->qFront--;//<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
return 1;
}