文章目录
- 1、蓝牙广播数据格式
- 2、扫描响应数据
1、蓝牙广播数据格式
蓝牙广播包的最大长度是37个字节,其中设备地址占用了6个字节,只有31个字节是可用的。这31个可用的字节又按照一定的格式来组织,被分割为n个AD Structure。如下图所示:
(BLE5.0广播包最大可用长度是254个字节)
每个AD Structure包含又包含三部分,分别是:
Length(1字节),AD Type(1字节),AD Data(n字节)
其中Length = AD Type 长度 + AD Data 长度
AD Type 由蓝牙组织联盟指定并发布,可以在蓝牙官方网站上下载相关文档,常用的 AD Type 及其含义如下:
常用的有:格式定义字段(Flags), UUID字段,设备名称字段,厂商自定义字段等
这些字段中,除了格式定义字段是必须存在,且需要放在广播内容中,其他字段都是可选的,并且位置并不重要,放在广播内容或扫描回复内容中都可以,效果基本相同。
格式定义字段
格式定义字段(Flags)是一个字节的配置字段,是唯一一个必须包含的字段,用于指示设备是否可以被搜到、是否支持传统蓝牙,是否支持可被连接等。
UUID字段
UUID是一种唯一代号,一般每个service会对应一个UUID,一个设备可以有多个UUID。
一个完整的UUID是128bit,也可以以32bit或16bit缩写的方式表示。
通过此字段,可以选择将全部或部分UUID广播出来。
名称字段
名称字段(Local Name)决定了设备在手机中搜索出来的名字
特别注意:
ADType 0x01 表示的是设备标识,其含义如下:
BLE(低功耗蓝牙),不支持BR/EDR(经典蓝牙),一般都将设备设为处于普通发现模式,所以只设置 bit1和 bit2,即0x06(b00000110)。
2、扫描响应数据
扫描响应是, 当蓝牙主机收到从机的广播数据后,如果想要进一步了解该从机设备的信息,可以向从机设备发送扫描请求,从机收到扫描请求后,向对应的主机回复扫描响应。