目录
一、命令概述
二、命令格式及参数说明
2.1. HCI_Write_Inquiry_Mode命令格式
2.2. Inquiry_Mode
三、响应事件格式及参数
3.1. HCI_Command_Complete事件格式
3.2. 参数说明
3.2.1. 事件代码(Event Code)
3.2.2. 参数总长度(Parameter Total Length)
3.2.3. 事件参数(Event Parameters)
四、命令执行流程
4.1. 命令发起阶段(主机端)
4.2. 命令接收与解析阶段(蓝牙控制器端)
4.3. 执行查询模式设置阶段(蓝牙控制器端)
4.4. 完成操作与事件反馈阶段(蓝牙控制器端)
4.5. 主机接收事件并处理阶段(主机端)
4.6. 示例代码
五、使用场景
5.1. 蓝牙设备发现
5.2. 蓝牙设备连接前的准备
5.3. 蓝牙设备配对与绑定
5.4. 蓝牙设备管理与监控
5.5. 设备连接维护场景
5.6. 多设备协同工作场景
5.7. 蓝牙协议栈开发与调试
六、注意事项
6.1. 参数设置方面
6.2. 命令执行顺序和时机方面
6.3. 事件处理方面
6.4. 硬件和资源限制方面
6.5. 安全性方面
6.6. 执行流程方面
HCI_Write_Inquiry_Mode指令是蓝牙技术中用于设置本地BR/EDR(Basic Rate/Enhanced Data Rate)控制器查询模式(Inquiry Mode)的HCI(Host Controller Interface)指令。通过该命令,可以控制蓝牙设备如何主动去发现周围其他可连接的蓝牙设备,以满足不同应用场景下设备发现与连接的需求。
一、命令概述
HCI_Write_Inquiry_Mode命令允许主机(Host)配置本地BR/EDR控制器(Controller)在查询(Inquiry)过程中的工作模式。查询是蓝牙设备发现机制的一部分,允许一个蓝牙设备(称为主设备或Master)搜索其通信范围内的其他蓝牙设备(称为从设备或Slave)。
通过设置不同的查询模式,主机可以控制蓝牙控制器在查询过程中返回的信息类型和详细程度。这有助于主机根据具体需求优化设备发现过程,例如,在需要获取更多设备详细信息时选择RSSI和EIR查询模式,而在仅需要基本设备信息时选择标准查询模式以节省资源和时间。
二、命令格式及参数说明
- HCI 命令通用格式基础:
- HCI(主机控制器接口)命令通常遵循一定的格式,包括操作码(Opcode)和参数部分。操作码用于标识命令的类型,由操作码组字段(OGF - Opcode Group Field)和操作码命令字段(OCF - Opcode Command Field)组成。对于HCI_Write_Inquiry_Mode命令,有其特定的操作码组合,通过这个操作码,蓝牙设备的主机可以向蓝牙控制器表明这是一个设置查询模式的命令。
- 参数部分则跟在操作码之后,用于传递具体的设置信息,如查询模式的参数值。这些参数的格式和长度等都要符合蓝牙协议的规定。
- 可能的字节顺序和数据类型:
- 在指令格式中,数据的字节顺序(大端序或小端序)也需要遵循蓝牙协议规定。例如,如果参数是一个多字节的整数,那么其存储顺序可能是按照大端序(高位字节在前)或者小端序(低位字节在前)来排列的。而且参数的数据类型(如无符号整数、有符号整数等)也是明确规定的,这保证了指令在不同设备之间的一致性和可理解性。
2.1. HCI_Write_Inquiry_Mode命令格式
HCI_Write_Inquiry_Mode命令通常遵循蓝牙核心规范中定义的HCI指令格式。
具体来说,它可能包括一个操作码(Opcode),后跟一个或多个参数,用于指定所需的查询模式。
2.2. Inquiry_Mode
Inquiry_Mode是一个关键参数,用于指定查询模式。不同的模式会影响查询结果的详细程度和格式。
Inquiry_Mode的模式包括标准查询模式(可能不包含RSSI或EIR信息)、带RSSI的查询模式(包含设备信号强度信息)以及RSSI和EIR查询模式(同时包含设备信号强度和扩展查询响应信息)。
- 0x00:标准查询结果事件格式
- 描述:标准查询结果事件格式,作为默认设置。
- 应用场景:此模式返回的查询结果仅涵盖被发现设备的基本信息,如设备地址等,不包含RSSI(接收信号强度指示)信息。它适用于设备发现与初步筛选阶段,帮助用户快速识别并筛选出周围的蓝牙设备,为后续操作提供基础数据。
-
0x01:带RSSI的查询结果格式
- 描述:查询结果带有RSSI信息的格式。
- 应用场景:此模式不仅返回设备的基本信息,还包含RSSI信息,有助于评估与被发现设备之间的连接质量和距离。在需要根据信号强度选择优先连接设备的场景中,如多耳机连接选择,此模式尤为适用。
-
0x02:带RSSI的查询结果格式或扩展查询结果格式
- 描述:可以是带有RSSI的格式或扩展查询结果格式。
- 应用场景:此模式提供了更大的灵活性。它既可以返回带有RSSI的常规查询结果,用于信号强度分析;也可以返回更详细的扩展查询结果,满足对设备信息要求更高的场景,如蓝牙设备调试或高级应用场景。
-
其他值
- 描述:保留用于未来扩展或新功能添加。
- 注意事项:在当前的蓝牙协议应用中,应避免使用这些保留值,以确保兼容性和稳定性。这些保留值为未来的技术发展和功能升级预留了空间。
Inquiry_Mode参数是蓝牙查询操作中用于指定结果格式的关键参数。通过正确配置该参数,用户可以优化设备发现过程,并获取所需的设备信息。在选择Inquiry_Mode时,应根据实际应用场景和需求进行权衡,以确保查询结果的准确性和实用性。同时,遵循蓝牙协议的规范,避免使用保留值,以确保系统的稳定性和兼容性。
三、响应事件格式及参数
当HCI_Write_Inquiry_Mode命令执行完毕后,会生成一个HCI_Command_Complete事件(除非该事件被屏蔽)。这是蓝牙HCI(Host Controller Interface,主机控制器接口)协议中的标准行为。
3.1. HCI_Command_Complete事件格式
HCI_Write_Inquiry_Mode命令的响应事件(HCI_Command_Complete)通常遵循蓝牙HCI(Host Controller Interface)协议的通用事件格式。
该事件包含有关命令执行结果的信息,一般包括事件头(Event Header)和事件参数(Event Paramete