OCF_LE_SET_SCAN_RESPONSE_DATA
和 OCF_LE_SET_ADVERTISING_DATA
是蓝牙 Low Energy (BLE) 协议中用于控制设备广播行为的两个关键 HCI(Host Controller Interface)命令,具体作用如下:
1. OCF_LE_SET_ADVERTISING_DATA
- 作用:设置设备的广播数据(Advertising Data)。
- 功能细节:
- 广播数据是设备主动向外发送的数据包,用于向周围的扫描设备(如手机、网关)宣告自身的存在和能力。
- 数据内容通常包括:
- 设备名称(可选)
- UUID(服务标识)
- Tx Power(发射功率)
- Manufacturer Specific Data(厂商自定义数据)
- 其他标准或自定义字段。
- 最大长度:31 字节(BLE 4.x/5.0)。
- 使用场景: 例如,一个温度传感器通过广播数据发送自身的服务UUID和当前温度值。
2. OCF_LE_SET_SCAN_RESPONSE_DATA
- 作用:设置设备的扫描响应数据(Scan Response Data)。
- 功能细节:
- 当扫描端(如手机)主动发送扫描请求(Scan Request)时,设备会通过扫描响应返回额外信息。
- 这是对广播数据的补充,用于传递更多静态信息(如完整的设备名称)。
- 最大长度:31 字节(与广播数据独立)。
- 使用场景: 例如,BLE设备在广播数据中只包含短名称“Temp_1”,而在扫描响应中返回完整名称“Temperature_Sensor_V1”。
核心区别
特性 | OCF_LE_SET_ADVERTISING_DATA |
OCF_LE_SET_SCAN_RESPONSE_DATA |
---|---|---|
触发条件 | 设备主动周期性广播 | 仅在收到扫描请求后响应 |
数据用途 | 基础信息宣告 | 补充信息(如完整名称、附加服务) |
是否必需 | 必须设置 | 可选(根据业务需求) |
底层实现注意事项
HCI层交互:
- 这两个命令属于蓝牙 HCI Command,由主机(Host)发送给控制器(Controller)。
- OCF (OpCode Command Field)是操作码的一部分,需结合OGF (OpCode Group Field)使用。
数据结构规范:
// Advertising Data格式示例 uint8_t adv_data[] = { 0x02, // Length of this field AD_TYPE_FLAGS, // Type: Flags 0x06, // Value: LE General Discoverable + BR/EDR Not Supported 0x03, // Length of next field AD_TYPE_NAME_SHORT,// Type: Shortened Name 'T', 'e', 'm' // Value: "Tem" };
兼容性要求:
- BLE协议要求广播数据和扫描响应数据总长度不能超过62字节(31+31)。
如果需要进一步了解蓝牙协议栈的实现细节或代码示例,可以参考零声教育的《高性能网络协议栈》课程中的相关章节。
内容由零声教学AI助手提供,问题来源于学员提问