rb_t pRb; ///< 环形缓冲区结构体变量
uint8_t rbBuf[RB_MAX_LEN]; ///< 环形缓冲区数据缓存区
void rbCreate(rb_t* rb,u8 *Buff,uint32_t BuffLen)//创建或者说初始化环形缓冲区
{
if(NULL == rb)
{
printf("ERROR: input rb is NULL\n");
return;
}
rb->rbCapacity = BuffLen;
rb->rbBuff = Buff;
rb->rbHead = rb->rbBuff;//头指向数组首地址
rb->rbTail = rb->rbBuff;//尾指向数组首地址
}
void rbDelete(rb_t* rb)//删除一个环形缓冲区
{
if(NULL == rb)
{
printf("ERROR: input rb is NULL\n");
return;
}
rb->rbBuff = NULL;//地址赋值为空
rb->rbHead = NULL;//头地址为空
rb->rbTail = NULL;//尾地址尾空
rb->rbCapacity = 0;//长度为空
}
int32_t rbCapacity(rb_t *rb)//获取链表的长度
{
if(NULL == rb)
{
printf("ERROR: input rb is NULL\n");
return -1;
}
return rb->rbCapacity;
}
int32_t rbCanRead(rb_t *rb)//返回能读的空间
{
if(NULL == rb)
{
printf("ERROR: input rb is NULL\n");
return -1;
}
if (rb->rbHead == rb->rbTail)//头与尾相遇
{
return 0;
}
if (rb->rbHead < rb->rbTail)//尾大于头
{
return rb->rbTail - rb-