本文依照蓝牙核心规范Core_v4.2和核心规范补充Css_v10展开。
1、ADV_IND包PDU
AdvA
:6字节,广播者的地址,公共或者随机地址,如果是公共地址则Header
中的TxAdd
为1,否则为0;
AdvData
:0-31字节,广播数据。
2、广播数据格式
可以看出广播数据格式由多个AD Structure
组成,每个AD Structure
由3部分构成,Length
、AD Type
、AD Data
组成;Length为1字节,表示AD Type和AD Data的总长度;现有的AD Type也都是一字节的。
3、ADV_IND整包结构
由上面1、2可以得出整个ADV_IND结构如下:
关于Preamble
、Access Address
、Header
、CRC
等字段可参考图解ble4.2空口包(air interface packets)一文。
4、ADV_IND抓包
使用wireshark和Nordic BLE Sniffer抓包。
可以看出广播数据是14字节,总共4个AD Structure,如下:
这里要注意,广播数据不能超过31字节。
5、部分AD Type说明
5.1、Flags(0x01)
可以看出,flags的值是一个字节,bit5-bit7保留。
5.2、不完整的16位UUID(0x02)
5.3、广播间隔(0x1A)
可以看出,广播间隔数据为2个字节。
5.4、LE角色(0x1C)
可以看出,LE角色数据为1个字节。