HCI,即主机控制接口,属于蓝牙协定栈的一部分。
基本介绍
- 中文名主机控制接口
- 外文名Host Controller Interface
- 简称HCI
概念
主机控制接口属于蓝牙协定栈的一部分。
蓝牙规范包含了一个符合标準的接口定义(主机控制器接口),它适用于蓝牙通讯模组的硬体部分。此定义描述了位于HCI驱动程式(主机的一部分,也即蓝牙通讯模组的使用者)和主机控制器固件(蓝牙通讯模组本身的一部分)之间的接口。
命令数据
命令(command)由HCI驱动程式发至主机控制器
数据包指示符(对UART接口而言)为1
操作码(Op-code)(16比特)对命令进行识别
组域(OGF)(最高有效位6比特)
命令域(OCF)(最低有效位10比特)
参数长度(8比特)所有参数的总长度(以位元组为单位)
命令参数参数的个数及其长度是与具体命令相关的
HCI数据包用于ACL数据时
数据包指示符(对UART接口而言)为2
控制信息(16比特)
广播标识(最高有效位2比特) 00 = 点对点数据包(非广播)
01 = 活动从设备广播
10 = 休眠(Parked)从设备广播
数据包边界标识(2比特) 01 = 更高层信息数据包的后继部分
10 = 更高层信息数据包的初始部分
连线句柄(最低有效位12比特)
数据长度(16比特)数据的总长度(以位元组为单位) HCI数据包用于SCO数据时
数据包指示符(对UART接口而言)为3
连线句柄(12比特)
未使用(4比特)
数据长度(8比特)数据的总长度(以位元组为单位)
事件数据
主机控制器以事件(event)通知HCI驱动程式
数据包指示符(对UART接口而言)为4
事件码(Event code)(8比特)对事件进行识别
参数长度(8比特)所有参数的总长度(以位元组为单位)
事件参数参数的个数及其长度是与具体命令相关的
命令是异步处理的,所以介由一个“命令完成(Command Complete)”的事件来通告命令处理完毕。命令也可以并行处理,所以后面的命令可能比前面的命令先结束。
蓝牙规范也定义了数个标準机制,通过一个主机控制器传输层(Host Controller Transport Layer),在HCI驱动程式和主机控制器之间进行HCI数据包的传输,这些传输层包括
USB(通用串列汇流排)
RS232(标準串口),带错误检测及恢复
通用UART,假设无传输错误
上面所涉及的缩写的含义
HCI Host Controller Interface
OGF Op-code Group Field
OCF Op-code Command Field
USB Universal Serial Bus
UART Universal Asynchronous Receiver Transmitter
ACL : Asynchronous Connection Less