ZBLOG

OCF_LE_SET_SCAN_RESPONSE_DATA 和 OCF_LE_SET_ADVERTISING_DATA的作用

OCF_LE_SET_SCAN_RESPONSE_DATAOCF_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
触发条件 设备主动周期性广播 仅在收到扫描请求后响应
数据用途 基础信息宣告 补充信息(如完整名称、附加服务)
是否必需 必须设置 可选(根据业务需求)

底层实现注意事项

  1. HCI层交互

    • 这两个命令属于蓝牙 HCI Command,由主机(Host)发送给控制器(Controller)。
    • OCF (OpCode Command Field)是操作码的一部分,需结合OGF (OpCode Group Field)使用。
  2. 数据结构规范

    // 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"
    };
    
  3. 兼容性要求

    • BLE协议要求广播数据和扫描响应数据总长度不能超过62字节(31+31)。

如果需要进一步了解蓝牙协议栈的实现细节或代码示例,可以参考零声教育的《高性能网络协议栈》课程中的相关章节。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8361

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?