目录
一、命令概述
二、命令格式及参数说明
2.12. HCI_Read_Remote_Version_Information 命令格式
2.2. Connection_Handle
三、生成事件
3.1. HCI_Command_Status 事件
3.2. HCI_Read_Remote_Version_Information_Complete 事件
四、命令执行流程
4.1. 命令发起阶段(主机)
4.2. 命令接收与初步反馈阶段(蓝牙控制器)
4.3. 版本信息获取与处理阶段
4.4. 结果反馈阶段
4.5. 主机处理响应阶段
4.6. 示例代码
五、使用场景
5.1. 设备兼容性评估
5.2. 设备功能适配与优化
5.3. 设备管理与维护
5.4. 故障诊断与排除
5.5. 其它
六、注意事项
6.1. 连接句柄准确性
6.2. 事件处理完整性
6.3. 远程设备响应性
6.4. 命令频率与资源占用
6.5. 其他基础注意事项
HCI_Read_Remote_Version_Information
是一个蓝牙主机控制器接口(HCI)命令。主要目的是获取由 Connection_Handle
参数所标识的远程设备的版本信息。通过这个命令,主机能够了解远程设备的软件或硬件版本相关的数据,对于设备兼容性检查、功能匹配以及故障排查等方面都非常有用。
一、命令概述
当执行 HCI_Read_Remote_Version_Information
命令时,它会通过指定的 Connection_Handle
发送请求到远程设备,以获取该设备的版本信息。
这些信息通常包括:
- LMP 版本(Link Manager Protocol 版本): 表示蓝牙核心规范的版本。
- 制造商名称:远程设备的制造商。
- LMP 子版本:提供更详细的版本信息,有助于区分同一LMP版本下的不同更新或修订。
二、命令格式及参数说明
2.12. HCI_Read_Remote_Version_Information
命令格式
HCI_Read_Remote_Version_Information
命令属于HCI命令集的一部分。和其他 HCI 命令一样,具有特定的格式,包括命令操作码(OCF)和参数部分。
以下是该命令的详细格式:
- 操作码(Opcode):2字节
- OGF(操作码组字段):用于指示命令所属的功能组。
- OCF(操作码命令字段):用于标识具体的命令类型。对于HCI_Read_Remote_Version_Information命令,OCF的值为
0x001D
。
- 参数:2字节
- Connection_Handle:是一个16位的值,用于唯一标识已经建立的蓝牙连接。该值在建立连接时由蓝牙控制器分配,并在后续通信中用于引用该连接。
2.2. Connection_Handle
当使用 HCI_Read_Remote_Version_Information
命令时,通过指定这个 Connection_Handle
参数就能准确地告知蓝牙协议栈,要获取的是哪个连接所指向的远程设备的版本信息。
如果指定的值不在这个 0x0000
到 0x0EFF
范围之内,命令很可能无法正确执行,因为该值不符合协议对于有效连接句柄的定义,协议栈无法依据其识别出对应的连接,进而也就没办法获取到期望的远程设备版本信息了。
三、生成事件
HCI_Read_Remote_Version_Information
命令本身直接不存在返回参数,意味着主机在发送命令后,并不会立刻接收到关于远程设备版本信息的相关数据。而是需要借助后续触发产生的特定事件来获取相应内容。
3.1. HCI_Command_Status 事件
当蓝牙控制器接收到 HCI_Read_Remote_Version_Information
命令时,会向主机发送 HCI_Command_Status
事件。主要作用在于通知主机,表明控制器已经成功接收到了该命令,并且命令已进入处理流程。
事件包含了命令的状态码,用于指示命令是否被成功接收、执行中、还是由于某种原因失败。不过需要注意的是,此事件本身并不携带远程设备版本信息的具体内容,它仅仅是起到一个让主机知晓命令传递环节正常、开始进入后续处理阶段的告知作用。
3.2. HCI_Read_Remote_Version_Information_Complete 事件
在链路管理器或者链路层完成相应的操作序列,成功确定了远程设备的版本信息之后,本地的控制器会向主机发送 HCI_Read_Remote_Version_Information_Complete
事件。
这个事件十分关键,因为它包含了两方面重要的信息: