97 lines
1.6 KiB
C
97 lines
1.6 KiB
C
|
#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;
|
|||
|
}
|
|||
|
|
|||
|
|