自已项目上一直用的循环buffer的源码,可用于中断。
c文件
#include "buffer.h"
#if C_CODE //c code
void DataBufferInit(DataBuffer *intance)
{
if(NULL == intance){
return;
}
intance->last_recv_time = 0;
intance->first = 0;
intance->last = 0;
intance->full = 0;
}
uint16_t BufferAvailable(DataBuffer *intance)
{
if(NULL == intance){
return 0;
}
uint16_t len = 0;
if(intance->last > intance->first)
{
len = intance->last - intance->first;
}else if(intance->last < intance->first)
{
len = (BUFFER_DAT_LEN - intance->first) + intance->last;
}else if(intance->last == intance->first)
{
len = 0;
}
return len;
}
uint8_t BufferRead(DataBuffer *intance)
{
if(NULL == intance){
return 0;
}
uint8_t dat = 0;
if( BufferAvailable(intance