HCI 连接命令流程:
- 蓝牙协议栈向芯片发送连接命令:
HCI Connect command
- 蓝牙芯片上报命令状态到蓝牙协议栈:
HCI Command Complete
- 连接成功后,蓝牙芯片上报蓝牙协议栈连接成功事件:
HCI LE Connect complete
更多事件类型查阅 Core
1、HCI Connect command
Core v5.4 P1843
该命令用于让 Link Manager 链路管理器去连接远程设备。
封包格式如下:
-
OCF
:这里可以看到OCF的值,那么 OGF 值为多少呢?- 打开 Core v5.4 P1843,我们可以看到
HCI_Create_Connection
命令属于LINK CONTROL COMMANDS
链路控制命令组,该组 OGF 为0x01。详见 Core v5.4 P1836:“For the Link Control commands, the OGF is defined as 0x01”.
- 打开 Core v5.4 P1843,我们可以看到
-
BD_ADDR
:要连接的远程设备的蓝牙地址,6 个字节。 -
Packet_Type
:支持的数据封包类型,2 个字节。 -
Page_Scan_Repetition_Mode
:是否重复扫描
-
Clock_Offset
:主从设备之间的时钟偏移。 -
Allow_Role_Switch
:是否支持主从角色转换
2、Command Complete Event
Core v5.4 P2178
当 Controller 接收到 Create_Connection
命令,会发送一个 Command Complete
事件给 Host 。
事件格式如下:
该事件被用于大多数命令发送后的状态返回。
-
Event Code
:事件代码 -
Num_HCI_Command_Packets
:设置 Host 可以发送给 Controller 的命令包的个数,如果不允许,则设置为0
-
Command_Opcode
:表示相应的命令代码
-
Return_Parameters
:返回命令指定的参数
3、Connection Complete Event
Core v5.4 P2160
该事件表明了 Host 与 Controller 之间建立连接通道成功。
-
Event Code
:事件代码 -
Status
:连接状态
-
Connection_Handle
:连接成功后,生成的 Handle 值
-
BD_ADDR
:连接成功后的MAC地址
-
Link_Type
:连接类型
-
Encryption_Enabled
:是否加密