藍牙Host Controller Interface筆記


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傳輸。
 
下圖為簡單的架構:
藍牙Host <wbr>Controller <wbr>Interface筆記
兩個設備間數據的流向如下圖:
藍牙Host <wbr>Controller <wbr>Interface筆記

2.COMMANDS AND EVENTS
   通過HCI接口,Host與controller通過Command和Event的形式進行通信,其中command是Host傳給controller的,Event是controller反饋給Host的,如下圖所示:
藍牙Host <wbr>Controller <wbr>Interface筆記
Command和Event根據不同的類型進行了以下分組,具有以下幾種:
藍牙Host <wbr>Controller <wbr>Interface筆記
每一組內有一個或者對個Command和Event,舉例如下:
藍牙Host <wbr>Controller <wbr>Interface筆記

藍牙Host <wbr>Controller <wbr>Interface筆記
可以看出,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
藍牙Host <wbr>Controller <wbr>Interface筆記
OpCode Field分為兩個Field:OCF和OGF:
OGF Range (6 bits): 0x00-0x3F (0x3F reserved for vendor-specific debug commands)
OCF Range (10 bits): 0x0000-0x03FF
 
(2) HCI ACL Data Packet
藍牙Host <wbr>Controller <wbr>Interface筆記
參數HANDLE的定義如下:
藍牙Host <wbr>Controller <wbr>Interface筆記
參數PB的定義如下:
藍牙Host <wbr>Controller <wbr>Interface筆記
參數Broadcast_Flag的定義如下:
藍牙Host <wbr>Controller <wbr>Interface筆記

藍牙Host <wbr>Controller <wbr>Interface筆記

(3)HCI Synchronous Data Packets
藍牙Host <wbr>Controller <wbr>Interface筆記
Packet_Status_Flag參數定義如下:
藍牙Host <wbr>Controller <wbr>Interface筆記

(4)HCI Event Packet
藍牙Host <wbr>Controller <wbr>Interface筆記
注意,LE控制器使用的是sub-event Code。
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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM