1.概述
HCI提供了一個統一的使用藍牙控制器(BR/EDR Controller,BR/EDR/LE Controller,LE Controller,AMP Controller等)的方法,它屏蔽了藍牙的基帶部分,提供了統一的數據進入基帶的方法。
首先,藍牙的BaseBand部分有以下幾種控制器:
• BR/EDR Controller
• BR/EDR/LE Controller
• LE Controller
• AMP Controller
前三種稱為primary Controller,AMP是藍牙3.0后加上的,支持High Speed傳輸。
下圖為簡單的架構:
2.COMMANDS AND EVENTS
通過HCI接口,Host與controller通過Command和Event的形式進行通信,其中command是Host傳給controller的,Event是controller反饋給Host的,如下圖所示:


可以看出,Generic event組內有三種Event,Device SetUp組內只有一種reset Command。Command和Event的種類很多,這里不具體介紹,參考Spec704-1000的具體說明。
3.HCI Data Format
由上可知,HCI有三種數據,Command、Event和Data,這三種類型的HCI Data分別有不同的格式。需要注意的是,HCI Data都是Little Endian formats的,負數的存儲形式為2進制補碼。
在Host和Controller之間由HANDLES來識別不同的通道,一共有三種:
• Connection Handles
• Logical Link Handles
• Physical Link Handles
其中,Connection Handles用於primary controller(除AMP外),另外兩用用於AMP Controller。一旦一條Logical Link建立,primary controller會給Host分配一個Connection Handle。
下面分別是Command packet、Event Packet和Data packet,其中Data Packet分為HCI ACL Data Packet和HCI Synchronous Data Packet,HCI ACL Data Packet有Automatically-Flushable和Non-Automatically-Flushable兩種類型。具體說明如下:
(1) HCI Command packet
OGF Range (6 bits): 0x00-0x3F (0x3F reserved for vendor-specific debug commands)
OCF Range (10 bits): 0x0000-0x03FF
(2) HCI ACL Data Packet
(3)HCI Synchronous Data Packets
(4)HCI Event Packet
4.HCI Configuration parameters
主要用來對HCI連接進行一些必要的配置,種類比較多,參考Spec681-703。
5.常見的Command和Event
(1) Link Control commands(OGF = 0x01),用來進行連接。
該組包含Inquiry Command等44個Command,具體參考Spec。
(2)LINK POLICY COMMANDS(OGF = 0x02),對連接進行配置,如park、sniff、Roll Switch等
該組包含14個command
(3)CONTROLLER & BASEBAND COMMANDS(OGF = 0x03),改變本地Controller的行為。
該組包含Set Event Mask Command等79個command
(4)INFORMATIONAL PARAMETERS(OGF = 0x04),用來讀取本地的設備商的控制器、LM等的信息,這些信息無法改變。
該組包含Read Local Version Information Command等7個command。
(5)STATUS PARAMETERS(OGF = 0x05),狀態參數是由controller來修改的,Host可以通過一些特定的參數來進行修改。
該組包含Read Failed Contact Counter Command等10個Command。
(6)TESTING COMMANDS(OGF = 0x06),對Host提供對藍牙硬件的測試用的。
該組包括Read Loopback Mode Command等7個Command。
(7)LE CONTROLLER COMMANDS(OGF = 0x07),Host通過這些命令來影響LE的工作。
該組包括LE Set Event Mask Command等30個Command。
常見的Event:
包括Inquiry Complete Event等65種Event。