0. 协议层介绍
BLE协议栈共三层,分别是应用层、主机层、控制器层
1. BLE物理层频道
2. 广播间隔
当一个BLE设备处于广播模式时,它周期性地在3个广播通道上发送相同的报文,3个通道均发完后称为一个广播事件。
3. 广播数据包:
BLE广播数据包通过广播频道(37 38 39)发送,数据payload部分长度最大37字节,包含了设备相关信息。
4. 扫码回应数据包:
5. 广播类型:
5.1 非定向可连接广播类型(ADV_IND):通用广播,可连接、可扫描的非定向广播,包括广播数据包和扫描回应数据包,目前单车和电单都是用此类型。当前设备可接收其他设备的连接请求。
5.3 非定向不可连接类型(ADV_NONCONN_IND):不可连接、不可扫描的非定向广播,也称作发现广播。这种类型的广播不能用于发起连接,但允许其他设备扫描正在进行广播的设备。表示正在进行广播的设备可以被发现,既可以发送广播数据,也可以发送扫描回应数据包,但不能建立连接。此类型是适用于广播数据包的广播格式,动态数据可以包含在广播数据包中,静态数据也可以包含在扫描回应数据包中。
5.4 非定向可发现不可连接广播类型(ADV_SCAN_IND):可扫描的非定向广播,发送广播数据包和扫描回应数据包,但不可以被连接。
所谓的定向和非定向针对的是广播对象,如果是针对特定的对象进行广播(在广播包PDU中包含目标对象的MAC),则为定向广播。反之为非定向广播。可连接和不可连接指的是是否接受连接请求。如果是不可连接的广播类型,它将不应答连接请求报文。可扫描广播类型会回应扫描请求。
以上具体介绍参考:https://blog.csdn.net/zhi_Alanwu/article/details/126353684
PDU部分如下:
各字段含义如下:
- PDU Type:PDU类型,标识广播报文的类型
- RFU:Reserved For Future,保留位
- TxAdd:发送地址类型,标识广播地址是公有地址还是随机地址
- RxAdd:接收地址类型,广播报文不使用这一比特
- Length:长度,标识净荷的长度(6 ~ 37字节)
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组成。
常见的广播数据如下: