#define ADV_DATA_DEPTH 10 //10帧数据深度
#define ADV_DATA_LENGTH_MAX 128 //每帧数据最大长度为128字节
//结构体声明
typedef struct{
U8 ucHeadPtr; //头指针
U8 ucTailPtr; //尾指针
U8 ucAdvData[ADV_DATA_DEPTH][ADV_DATA_LENGTH_MAX];
}ADV_DATA_LIST;
ADV_DATA_LIST stAdvDataList;
//清消息队列
void Adv_Data_Clear(void)
{
stAdvDataList.ucHeadPtr = stAdvDataList.ucTailPtr =0;
}
//获取队列长度
U8 Adv_Data_GetLength()
{
U8 ucLen = 0;
if((stAdvDataList.ucHeadPtr >= ADV_DATA_DEPTH)||(stAdvDataList.ucTailPtr >= ADV_DATA_DEPTH)) //超过数组长度则清零
Adv_Data_Clear();
if( stAdvDataList.ucTailPtr >= stAdvDataList.ucHeadPtr) //如果尾指针大于头指针 则长度正常取 (尾位置 - 头位置)
ucLen = stAdvDataList.ucTailPtr - stAdvDataList.ucHeadPtr;
else //否则若头位置大于尾位置 则表明数据二次写入 头指针靠近消息队列出口 尾指针靠近消息队列