Bluetooth HCI介绍

Bluetooth HCI介绍

2014年06月23日 22:22:11 hzl6255 阅读数:3219

HCI, 主机控制接口(Host Controller Interface), 是蓝牙协议栈的重要部分, 
相应的规范位于Core Version 4.1的vol 2:Part E和vol 4

HCI提供了对控制器的统一接口,用来沟通Host和Control,如下图所示 
HCI
在规范中对HCI分为两个部分介绍 
~1 沟通Host和Control的接口(vol 2:Part E) 
~2 HCI传输层(vol 4)

1. HCI功能

HCI可分为三个部分,前两个即对应于上面的~1 
~ 位于Control中的HCI Firmware 
~ 位于Host的HCI Driver 
~ 位于Host 和Control的HCI 传输层

HCI_OBJECTS

HCI Firmware实现了访问蓝牙设备的HCI Commands(Baseband/Link Manager Command, status/control/event registers)
HCI Driver接收并处理HCI events(传递给High Lawyer) 
HCI 传输层在HCI Firmware和HCI Driver之间进行HCI Packet的传输, Spec V4.1中定义了四种: UART/USB/Secure Digital/Three-wire UART

2. HCI Packet

HCI Packet在Host和Control之间进行传输,通常有三种类型Command,Event,Data(ACL和SCO/eSCO) 
其中Data是双向的, Command只能从Host发往Control, Event始终是Control发向Host的

1. HCI Command

HCI Command包格式如下图所示

 HCI_COMMAND_PACKET

(OCF=OpCode Command Field, OGF=OpCode Group Field)

OpCode                        用以区分不同的命令,OCF占用10bits(0x0000~0x03FF),OGF占用6个bits(0x00~0x3F)
Parameter_Total_length  参数的长度(以字节为单位) 
Parameter 0~N              参数列表

Command分为六种类型(case OGF) 
~0x01 链路控制命令(Link Control Commands) 
~0x02 链路政策命令(Link Policy Commands) 
~0x03 控制和基带命令(Control & Baseband Commands) 
~0x04 信息命令(Informational Parameters) 
~0x05 状态命令(Status Parameters) 
~0x06 测试命令(Testing Commands) 
~0x3F 厂商调试命令(Reserved)

tip: Host发出的大多数Command都会触发Control产生相应的Event作为响应

2. HCI Event

HCI Event包格式如下图所示 
HCI_EVENT_PACKET
Event Code                     用以区分不同的事件(0x00~0xFF) 
Parameter_Total_length    参数的长度(以字节为单位) 
Event Parameter 0~N       参数列表

3. HCI Data

ACL(Asynchronous Connection Less) 
HCI_ACL_PACKET
Handle                        连接句柄(0x000~0xEFF) 
Packet_Boundary_Flag   包分界标志(2bits) 
HCI_COMMAND_PACKET_PBF
HCI_COMMAND_PACKET_BF
Data_Total_length         数据的长度(以字节为单位) 
Data                           数据

SCO(Synchronous Connection Oriented) 
HCI_SCO_PACKET
Connection_Handle           连接句柄(0x0000~0x0EFF) 
HCI_SCO_PACKET_PSF
Data_Total_length             数据的长度(以字节为单位) 
Data                               数据

参考:

3. HCI传输层

Spec V4.1中定义了四种HCI 传输层:

UART/USB/Secure Digital/Three-wire UART

你可能感兴趣的:(蓝牙)