• 正文
  • 相关推荐
申请入驻 产业图谱

BLE主机实战:分析主机扫描到的广播数据结构体

08/20 07:53
164
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

一、前言

本篇会结合蓝牙spec分析扫描到的广播数据结构体

二、阅读说明

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分析了广播数据结构,下一篇将修改代码,打印扫描响应数据。

相关推荐