【BLE】蓝牙广播
1. 使用场景
在 BLE 协议中,广播通信主要有两类使用场景:
- 单一方向的、无连接的数据通信,数据发送者在广播信道上广播数据,数据接收者扫描、接收数据;
- 面向连接的建立。
2. 协议层次
在 BLE 协议中,广播通信相关的协议层次主要包括:
- GAP——HCI——LL
GAP 负责从应用程序的角度,抽象并封装 LL 提供的功能,以便让应用以比较傻瓜的方式进行广播通信。
当然,这不是必须的,也就是说,我们可以在没有 GAP 参与的情况下,进行广播通信。
HCI 负责将 LL 提供的所有功能,以 Command/Event 的形式抽象出来,供 Host 使用。
LL(Link Layer) 位于最底层,负责广播通信有关功能的定义和实现,包括物理通道的选择、相关的链路状态的定义、 PDU 的定义、设备过滤(Device Filtering)机制的实现等。
3. 广播类型
- ADV_IND
- 扫描者和发起者都可以识别该广播,扫描者可以发出扫描请求包,广播者会回复扫描响应包;发起者可以
- 发出连接请求包,广播者会进入连接状态。
- ADV_DIRECT_IND
- 只有指定的发起者发送的连接请求包会使广播者进入连接状态,否则会被忽略。
- ADV_DIRECT_IND_HIGH_DUTY_CYCLE 广播适用于快速重连,同一通道上两个连续的广播事件之间不
- 大于 3.75ms,该状态持续不得超过 1.28s
- ADV_DIRECT_IND_LOW_DUTY_CYCLE 适用于对时间不敏感或主机距离不确定的重连。
- ADV_SCAN_IND
10.只有扫描者发送的扫描请求包会使广播者发送一个扫描回应包。 - ADV_NONCONN_IND
11.只有广播,没有任何响应。
4. 广播参数
- advInternal
- 单位: 0.625ms
- 最小值: 20ms, Advertising_Type=0x02 或 0x03 时,最小值为 100ms
- 最大值: 10.24s
- advDelay
- [0,10]ms
- 广播事件期间,链路层会产生一个 0ms 到 10ms 之间的伪随机时间量(广播延时),这个延时被添加到两
- 个广播事件之间,目的是为了防止多个设备间的干扰。
- 只有定向广播无 advDelay。
5. 广播数据格式
例:
LEN – length of EIR(Entended Inquiry Result ) packet(Type+Data) in bytes. 扩展查询结果
TYPE – the data type as in
https://www.bluetooth.org/en-us/specification/assigned-numbers/generic-access-profile
6. 广播数据长度
The data length of the advertising data and the scan response data for Extended Advertising is limited to 1650 bytes. The connectable undirected advertising data is limited to 212 bytes. The connectable directedadvertising data is limited to 206 bytes. For more information, refer to the Host Advertising Data section ([Vol6], Part B, Section 2.3.4.9) of the Bluetooth Core Specification Version 5.0.