BLE 协议之传输层-三、HCI 连接示例

时间:2024-10-25 13:23:36

HCI 连接命令流程:

  1. 蓝牙协议栈向芯片发送连接命令: HCI Connect command
  2. 蓝牙芯片上报命令状态到蓝牙协议栈: HCI Command Complete
  3. 连接成功后,蓝牙芯片上报蓝牙协议栈连接成功事件: 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”.
  • 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 :是否加密