广播报文结构
一个完整的BLE广播报文由四部分组成,分别是前导码、接入地址、协议数据单元和CRC校验码。
Preamble 前导 | Access address(接入设备) | PDU | CRC校验 |
1 Bytes | 4 Bytes | 2-37 Bytes | 3 Bytes |
- 前导码:用来同步时序,可以是0x55或者0xAA,由接入地址的第一个比特决定。如果接入地址的第一个比特是“0”,则前导码是0x55;如果接入地址的第一个比特是“1”,则前导码是0xAA。 在广播报文里面,这一字节为0xAA。
- 接入地址:长度为4个字节,广播报文的接入地址为0x8E89BED6
- 协议数据单元:包含两个字节的报头和0 ~ 37字节的净荷
- CRC校验码:长度为3个字节
PDU由Header和Payload组成
广播报文之PDU报头
PDU Type(协议数据类型) | RFU(保留) | TxAdd | RxAdd | Length | RFU(保留) |
4 bits | 2 bits | 1 bits | 1 bits | 6 bits | 2 bits |
- PDU Type:PDU类型,标识广播报文的类型
- RFU:Reserved For Future,保留位
- TxAdd:发送地址类型,标识广播地址是公有地址还是随机地址
- RxAdd:接收地址类型,广播报文不使用这一比特
- Length:长度,标识净荷的长度(6 ~ 37字节)
PDU类型
广播报文之PDU Payload
- AdvA: 广播设备地址,分为公有地址和随机地址。
- 公有地址:类似MAC地址,由OUI和一个唯一的数字组成
- 随机地址:为了防止设备被跟踪,广播地址可以是随机的。随机地址又分为静态设备地址(Static Device Address)、私有设备地址(Private Device Address)和不可解释私有地址(Non-resolvable Private Address)。
- AdvData:广播数据,包含N个AD Structure,每个AD Structure由Length,AD Type和AD Data组成
广播报文之CRC检验码
报文的最后是3个字节的循环冗余校验。CRC对报头、长度域以及净荷域进行计算。该CRC的计算公式如下: