目录
2.1. HCI_PIN_Code_Request_Negative_Reply命令事件格式
HCI_PIN_Code_Request_Negative_Reply命令用于在蓝牙设备配对过程中,当主机(Host)无法为连接指定一个PIN码时,回复来自BR/EDR(基本速率/增强数据速率)控制器的PIN码请求事件。这个命令会导致与远程设备的配对请求失败。
一、命令概述
当BR/EDR控制器生成一个HCI_PIN_Code_Request事件,以响应来自远程链路管理器(Link Manager)的请求时(通常是由于远程主机发送了HCI_Create_Connection或HCI_Authentication_Requested命令),本地主机需要在远程链路管理器检测到LMP(链路管理协议)响应超时之前,使用HCI_PIN_Code_Request_Reply或HCI_PIN_Code_Request_Negative_Reply命令进行回复。
如果主机无法为连接指定一个PIN码,则应发送HCI_PIN_Code_Request_Negative_Reply命令。这会导致配对请求失败,并且远程设备将不会与本地设备建立连接。
二、命令事件及参数说明
2.1. HCI_PIN_Code_Request_Negative_Reply命令事件格式
HCI_PIN_Code_Request_Negative_Reply命令事件格式遵循蓝牙HCI协议的规范。该命令的格式如下:
事件类型:HCI Command Packet(命令分组),以0x01开头。
操作码(Opcode):由操作码组字段(OGF)和操作码命令字段(OCF)组成。对于HCI_PIN_Code_Request_Negative_Reply命令,OGF为0x01,OCF为0x000E(或简写为0x040E,其中高4位为OGF,低8位为OCF)。
参数总长度:表示后续参数的总长度,以字节为单位。
参数(BD_ADDR):6个字节,表示请求PIN码的远程蓝牙设备的地址。
2.2. BD_ADDR(蓝牙设备地址)
当 HCI_PIN_Code_Request_Negative_Reply
命令被发送时,BD_ADDR
参数用于指定哪个设备的 PIN 码请求被拒绝。控制器会使用这个地址来识别哪个远程设备正在尝试与本地设备建立连接,并因其无法提供有效的 PIN 码而被拒绝。
BD_ADDR
代表着蓝牙设备地址(Bluetooth Device Address),它是一个在全球范围内唯一标识每个蓝牙设备的标识符,类似于网络通信中设备的 MAC 地址。在复杂的蓝牙网络环境或者多设备同时存在的场景中,通过 BD_ADDR
能清晰地界定命令的目标设备,避免出现误操作或者回复到错误设备的情况,保证整个命令执行的准确性和针对性。蓝牙MAC地址-CSDN博客
三、生成事件及参数说明
3.1.HCI_Command_Complete
事件
当HCI_PIN_Code_Request_Negative_Reply
命令执行完成后,会生成一个HCI_Command_Complete
事件。这个事件包含了:
- Num_HCI_Command_Packets:一个表示主机可以发送到控制器的HCI命令包数量的字段(这通常是一个固定的值,对于大多数命令来说都是1)。
- Command_Opcode:执行完成的命令的操作码。
- Return_Parameters:对于某些命令来说,这里可能包含额外的返回参数(对于
HCI_PIN_Code_Request_Negative_Reply
来说,通常不会有额外的参数)。 - Status:表示命令执行结果的状态码(与上面提到的状态码相同)。
3.2. Status(状态)
Status
用于指示 HCI_PIN_Code_Request_Negative_Reply
命令是否成功执行。大小为 1 个八位组(octet),即 1 字节。