目录
一、命令概述
二、命令格式及参数
2.1. HCI_Write_Extended_Inquiry_Response命令格式
2.2. FEC_Required
2.3. Extended_Inquiry_Response
三、生成事件及参数
3.1. HCI_Command_Complete 事件
3.2. Status
四、命令执行流程
4.1. 命令准备阶段(主机端)
4.2. 命令发送阶段(主机端)
4.3. 命令接收与验证阶段(控制器端)
4.4. 命令执行阶段(控制器端)
4.5. 返回结果阶段(控制器端至主机端)
4.6. 响应接收与处理阶段(主机端)
4.7. 示例代码
五、应用场景
5.1. 设备发现与信息共享
5.2. 蓝牙设备配对前的信息交流
5.3. 蓝牙设备管理与维护
5.4. 优化蓝牙通信性能
六、注意事项
6.1. 命令参数准备
6.2. 命令发送与接收
6.3. 命令执行与后续操作
6.4. 其他注意事项
HCI_Write_Extended_Inquiry_Response命令是蓝牙协议栈中的一个关键命令,允许蓝牙设备设置其扩展搜索响应(Extended Inquiry Response,EIR)数据。
一、命令概述
HCI_Write_Extended_Inquiry_Response 命令主要用于写入在扩展查询响应(extended inquiry response)过程中要发送的信息。让设备能够定制在被其他蓝牙设备查询时返回的详细响应内容,从而提供更多关于自身的信息。
二、命令格式及参数
2.1. HCI_Write_Extended_Inquiry_Response命令格式
HCI_Write_Extended_Inquiry_Response命令的格式通常遵循蓝牙核心规范中定义的HCI(Host Controller Interface)命令结构。
HCI命令的头部通常包含以下字段:
- Opcode:操作码,用于标识具体的HCI命令。对于HCI_Write_Extended_Inquiry_Response命令,其操作码通常为
0x04|0x0052
(其中0x04
是命令组的标识,0x0052
是该命令在组内的唯一标识)。 - Parameter Length:参数长度,表示紧随命令头部之后的参数部分的字节数。长度将取决于EIR数据的实际大小。
HCI_Write_Extended_Inquiry_Response命令的参数部分包含以下字段:
- FEC_Required:1位字段,用于指示是否需要对EIR数据进行前向纠错编码(FEC)。如果该位设置为1,则表示需要FEC编码;如果设置为0,则表示不需要。
- Extended Inquiry Response Data:变长字段,包含要写入控制器的EIR数据。EIR数据的格式和内容应遵循蓝牙规范中的相关规定。通常,EIR数据以一系列的类型-长度-值(TLV)三元组的形式组织,其中每个三元组都包含一个类型字段、一个长度字段和一个值字段。
2.2. FEC_Required
FEC_Required
参数通常用于指示是否需要对某些数据进行前向纠错编码(Forward Error Correction,简称FEC)。通过正确配置和使用这个参数,可以提高蓝牙数据传输的可靠性和效率。
0x00
:FEC不是必需的。意味着在传输过程中不需要对数据进行FEC编码。0x01
:FEC是必需的。表示在数据传输之前,需要对数据进行FEC编码以提高传输的可靠性。- 所有其他值:除
0x00
和0x01
之外的值,当前规范中没有被定义。
2.3. Extended_Inquiry_Response
Extended_Inquiry_Response 是一种重要的数据结构,它允许蓝牙设备在响应查询时提供比标准查询响应更详细的信息。通过正确配置和使用这个数据结构,可以提高蓝牙设备的可见性和互操作性,从而增强用户体验。
- 默认值:所有八位字节均为零。意味着如果没有特别设置,蓝牙设备在响应查询时将不会提供任何额外的信息。
Extended_Inquiry_Response 数据结构通常包含一系列的类型-长度-值(TLV)三元组,每个三元组都包含一个类型字段、一个长度字段和一个值字段。这些三元组允许蓝牙设备在响应查询时提供多种类型的信息,如设备名称、服务UUID、制造商信息等。
- 类型字段:标识后续长度字段和值字段所包含的信息类型。蓝牙核心规范中定义了多种类型字段,每种类型字段都对应着一种特定的信息类型。例如,某些类型字段可能用于表示设备名称,而其他类型字段则可能用于表示设备支持的服务UUID。
- 长度字段:表示紧随其后的值字段的字节数。它允许接收方正确地解析和解释值字段中的内容。
- 值字段:包含实际的信息数据。根据类型字段的不同,值字段可能包含设备名称、服务UUID、制造商信息等。这些信息允许其他蓝牙设备在查询过程中获取有关目标设备的更多详细信息。