一、前言
二、阅读说明
1、泰凌微芯片学习者。2、蓝牙 spec学习者
三、正文
1、广播数据结构体
如上图所示,将event_adv_report_t的结构体展开如下所示:
/*** @brief Event Parameters for "7.7.65.2 LE Advertising Report event"*/typedef struct {u8 subcode;u8 nreport;u8 event_type;u8 adr_type;u8 mac[6];u8 len;u8 data[1];} event_adv_report_t;
那么这里面的这些数据都代表了什么呢,这就需要查看蓝牙spec文件了,如下第2小节。
2、蓝牙spec文件中的广播数据结构描述
2.1、广播数据结构描述
如上图所示,这是蓝牙spec文件中的广播数据结构,可以看到和代码里面的结构是一样的,其中对其描述如下
2.2、Subevent_Code描述
该值为0x02,表示低功耗广播的事件
2.3、Num_Reports描述
代表响应事件中的数字,这个一般不用看
2.4、Event_Type[i]描述
上述代表的是事件的类型,其中0x00代表的是可连接,可扫描,未定向的广播,0x01代表的是可连接的定向广播,0x02代表的是可扫描未定向广播,0x03代表的是不可连接未定向广播,0x04代表的是扫描响应。
2.5、Address_Type[i]
上述代表广播地址的类型,0x00代表公共地址,0x01代表随机地址,0x02代表已经解析成功的公共地址,0x03代表已经成功解析的随机地址。
2.6、Address[i]
上述代表6个字节的设备地址。
2.7、Length_Data[i]
上述代表真正的广播数据,也就是后面的Data[i]中数据的大小。
2.8、Data[i]:
上述代表,真正的广播数据。
2.9、RSSI[i]
上述代表信号强度数值,如下图所示
四、结尾
本篇结合蓝牙spec分析了广播数据结构,下一篇将修改代码,打印扫描响应数据。
164