HCI層資料報格式

2021-06-27 21:22:57 字數 2891 閱讀 9255

host 和藍芽控制器都是通過hci接**互的,所以了解hci通訊包格式是很有必要的。有助於抓包分析和解決問題!

opcode的bit10~bit15用來表示ogf域,用來表示hci命令的種類。hci總共有7中型別的命令,分別定義如下:

for the link control commands, the ogf is defined as 0x01.

for the link policy commands, the ogf is defined as 0x02.

for the hci control and baseband commands, the ogf is defined as0x03

for informational parameters commands, the ogf is defined as 0x04

for the status parameters commands, the ogf is defined as 0x05.

for the testing commands, the ogf is defined as 0x06.

the ogf of 0x3f is reserved for vendor-specific debugcommands.

ogf 和ocf都為00,表示

nop命令。

ocf對應每組命令組相應的命令。

parameter length表示所帶引數的長度,以位元組數為單位,隨後就是所帶的引數列表。下面以inquiry命令為例對hci的命令包做具體說明:

在inquiry命令中,ogf=0x01表示此命令屬於鏈路控制命令,同時ocf=0x0001則表示此命令為鏈路控制命令中的inquiry命令。ocf與ogf共佔2位元組,又由於底位位元組在前,則它們在命令包為0x0104。在inquiry 命令中,引數parameter length為5。inquiry命令帶3個引數,第乙個引數為lap(low address part), 它將用來產生baseband中查詢命令包的包頭中的access code。第二個引數為inquiry_length,它時表示在inquiry命令停止前所定義的最大時間,超過此時間,inquiry命令將終止。第三個引數為num_response,它的值為0x00表示裝置響應數不受限制,只為0x00-0xff則表示在inquiry命令終止前最大的裝置響應數。因此,若lap=0x9e8b00,inquiry_length=0x05,num_response=0x05,則協議上層呼叫inquiry命令是hci向基帶發的明令包將為:0x01 04 05 00 8b 9e 05 05。

handle表示connection_handle .

acl和sco(esco)資料報中的connection handle即連線控制代碼,是乙個12位元的標誌符,是用來描述host和藍芽控制器之間的邏輯通道,當乙個新的邏輯鏈結(具體可以參考藍芽核心-鏈路管理相關概念)建立時由控制器分配。控制器分配後通過

connection complete,synchronous connection complete, or le connection complete events事件包返回給host。connection handle用於唯一確認兩台藍芽裝置間的資料或語音連線,可以看作是兩台藍芽裝置間唯一的資料通道的標識。

兩台裝置間只能有一條acl連線,也就是只有乙個acl的連線控制代碼,相應l2cap的通道都是建立在這個連線控制代碼表示的資料通道上;兩台裝置間可以有多個sco的連線,則一對裝置間會有多個sco的連線控制代碼。連線控制代碼在兩裝置連線期間一直存在,不管裝置處於什麼狀態。在acl資料報中,flags分為pb flag和bc flag,pb flag為包的界限標誌,pb flag=0x00表示此資料報為上層協議包(如l2cap包)的起始部分;pb flag=0x01表示此資料報為上層協議包(如l2cap包)的後續部分。bc flag為廣播傳送的標誌,bc flag=0x00表示無廣播傳送,只是點對點的傳送;bc flag=0x01表示對所有處於啟用狀態的從裝置進行廣播傳送,bc flag=0x02表示對所有的從裝置包括處於休眠狀態的從裝置進行廣播傳送。acl和sco資料報中的data total length 都表示所載荷的資料的長度,以位元組位單位。

事件包的event code用來區分不同的事件包,parameter length表示所帶引數的長度,以位元組數為單位,隨後就是所帶的引數列表。以command status event事件包為例對hci的事件包進行具體說明。

當主機控制器收到主機發來的如上面所提到的inquiry命令包並開始處理時,它就會向主機傳送command status event事件包,此事件包為:0x0f 04 00 0a 01 04。0xof表示此事件包為command status event事件包,0x04表示此事件包帶4位元組長度的引數,0x00為此事件包的第乙個引數即status,表示命令包正在處理。0x0a為事件包的第二個引數num_hci_command_packets,表示主機最多可在向主機控制器發10個命令包。0x01 04 為第三個引數command_opcode, 表示此事件包是對inquiry命令包的響應。

ZigBee MAC層資料報格式

zigbee的mac層直接使用了ieee 802.15.4的mac層。mac子層資料報由mac子層幀頭 mhr,mac header mac子層載荷和mac子層幀尾 mfr,mac footer 組成。2位元組1位元組 0 2位元組 0 2 8位元組 0 2位元組 0 2 8位元組 可變2位元組 幀...

網路層資料報處理流程

網路位址為a,實體地址為10的計算機需要向網路位址為p,實體地址為95的計算機傳送乙個分組。這裡我們用字母表示邏輯位址,用數字表示實體地址。傳送方在網路層將資料封裝在乙個分組中,並加入兩個邏輯位址 a和p 注意在大多數協議中,邏輯源位址是出現在邏輯目的位址之前的 與實體地址的順序正好相反 網路層必須...

資料報格式 USB資料報解析

由域構成的包有四種型別,分別是令牌包 資料報 握手包和特殊包,前面三種是重要的包,不同包的域結構不同,介紹如下 1 令牌包 分為輸入包 輸出包 設定包和幀起始包 注意這裡的輸入包是用於設定輸入命令的,輸出包是用來設定輸出命令的,而不是放資料的 其中輸入包 輸出包和設定包的格式都是一樣的 sync p...