目录
2.1. HCI_LE_Read_Local_Supported_Features命令格式
2.1. HCI Command Complete响应命令格式
三、返回命令 HCI Command Complete参数说明
HCI_LE_Read_Local_Supported_Features命令是蓝牙低功耗(Bluetooth Low Energy, BLE)协议中的一个关键命令,它用于读取控制器(Controller)支持的LE(低功耗)特性列表。这个命令是Host Controller Interface(HCI)的一部分,允许主机(Host)查询并了解控制器的功能和特性,从而进行更有效的设备配置和兼容性检查。
一、命令概述
HCI_LE_Read_Local_Supported_Features命令的主要功能是读取并返回控制器支持的BLE特性。这些特性以位域(bit-field)的形式表示,每个位代表一个特定的BLE功能或能力。通过了解这些特性,主机可以判断控制器是否支持特定的BLE功能,从而进行相应的配置和使用。
通过发送HCI_LE_Read_Local_Supported_Features命令,主机可以:
- 查询控制器特性:了解控制器所支持的LE功能,如加密、连接参数请求、广播数据长度扩展等。
- 设备配置:根据控制器支持的特性,进行更精确的设备配置,以优化性能和兼容性。
- 兼容性检查:确保主机与控制器之间的功能匹配,避免在连接或数据传输过程中出现问题。
二、命令格式
2.1. HCI_LE_Read_Local_Supported_Features命令格式
HCI_LE_Read_Local_Supported_Features命令的格式通常遵循HCI命令包的标准结构,包括操作码(Opcode)、参数总长度(Parameter Total Length)以及参数(Parameter,如果有的话)。对于此特定命令,它通常不包含任何参数,因此参数总长度为0。
- 操作码(Opcode):操作码命令字段(OCF):0x0002(表示读取本地支持的LE特性)
- 参数总长度(Parameter Total Length):对于此命令,通常为0,因为没有额外的参数需要发送。
- 参数(Parameter):无(因为参数总长度为0)
2.1. HCI Command Complete响应命令格式
HCI Command Complete命令是蓝牙协议栈中用于确认HCI(Host Controller Interface)命令已成功执行的事件。当命令HCI_LE_Read_Local_Supported_Features完成时,会生成一个HCI_Command_Complete事件作为响应。
其格式通常遵循HCI事件包的标准结构,并包含特定于该响应的信息。
- HCI_type:1个字节,用于标识这是一个HCI事件包。对于HCI Command Complete事件,其值通常为0x04。
- Event_Code:1个字节,用于标识事件的具体类型。对于HCI Command Complete事件,其值通常为0x0E。
- Parameter_Total_Length:1个字节,表示后续参数的总长度(包括Num_HCI_Command_Packets、Command_Opcode和Return_Parameters等字段)。
- Num_HCI_Command_Packets:1个字节(可选,但通常存在),表示允许发送的HCI命令包的数量。这个字段在某些情况下可能不被使用或不被返回。
- Command_Opcode:2个字节,表示触发此响应的HCI命令的操作码(Opcode)。这允许接收方将响应与之前的命令请求相关联。
- Return_Parameters:可变长度,包含命令执行的结果或状态信息。其长度和内容取决于触发此响应的HCI命令。
三、返回命令 HCI Command Complete参数说明
当BLE设备接收到HCI_LE_Read_Local_Supported_Features命令时,它会返回一个包含本地支持特性的响应HCI Command Complete。响应的格式通常包括状态码(Status)和返回参数(Return Parameters)。
3.1. Status
- 这是一个1字节的字段,用于表示HCI命令执行的状态。
- 如果值为
0x00
,则表示命令成功执行。 - 其他值(如
0x01
到0xFF
):表示命令执行过程中发生了错误,具体错误码需要参考蓝牙核心规范中的定义。
3.2. LE_Features
- 这是一个8字节(64位)的字段,用于表示本地设备支持的BLE(蓝牙低功耗)特性。
- 这些特性以位域(bit-field)的形式表示,每个位代表一个特定的BLE特性。
- 如果某一位被设置为1,则表示该特性受支持;如果为0,则表示不受支持。
3.3. 示例
假设HCI_LE_Read_Local_Supported_Features命令成功执行,并返回了以下HCI_Command_Complet