BLE主機之L2CAP層

2022-08-05 04:12:23 字數 2646 閱讀 7565

本文介紹l2cap 部分

l2cap 的全稱是 邏輯鏈路控制和適配協議,  l2cap 是低功耗藍芽的復用層,該層定義兩個基本概念

l2cap 通道和l2cap 信令,l2cap 通道是乙個雙向資料通道,通向對端裝置上的某一特定的協議或規範,

經典藍芽使用 l2cap 的大部分功能,包括動態通道識別符號,協議服務多路復用器、增強

的重傳、流模式等、相比而言,低功耗藍芽只用到了 l2cap 的較少功能。此處略過。

低功耗藍芽部分的 l2cap 的功能總結為:

1,支援資料的分割和重組,使得較大的報文可以在底層無線電中進行傳輸。

2,復用通道,低功耗藍芽中復用三條不同的通道。

低功耗藍芽中值使用固定通道:乙個用於信令通道,乙個用於安全管理器,還有乙個用於

屬性協議。本問只介紹信令通道。

由於通道傳輸的內容是報文,所以先去看看報文結構;

l2cap 層資料報文

l2cap 報文結構如下:

淨荷前端包含乙個32位即4位元組的報頭,包括長度和通道識別符號。

長度標識後面的資訊載荷部分的位元組數,經典藍芽中資訊載荷還可以包含額外的報頭和資訊。但在低功耗藍芽

的l2cap 層中並沒有其他有意義的資訊結構。

由於低功耗藍芽的資訊載荷最大是23位元組,mtu=23,所以所有低功耗藍芽必須支援在空間傳輸27位元組

資料報,(23位元組資訊載荷和4位元組l2cap 報頭), 

由於本文介紹信令通道,所以在此先介紹 l2cap 資料報文中的 l2cap 命令資料報

l2cap 命令資料報

l2cap 命令資料報通過 l2cap 資料報進行傳輸,見下面的結構,位於l2cap 報文的資訊載荷部分。

結構解析如下:

操作碼:

操作碼包括下面三種:

識別符號1位元組

用於匹配請求和響應,如,請求的識別符號為0x35,則響應該請求的資料報也必須包含0x35作為識別符號。

而下乙個請求不允許重複,需要依次遞增,如果用完再從頭開始,但是不使用0x00,這樣的好處是

可以多個請求同時傳送。

l2cap 通道

通道的概念

通道是指乙個資料報序列,連線兩個裝置上的一對服務。

低功耗只支援固定通道。

固定通道指的是兩個裝置一建立就已經存在的沒有任何配置引數的通道。

通道通過通道識別符號進行標識,l2cap 通道識別符號如下:

低功耗藍芽一共使用3條通道:

0x0004用於屬性協議

0x0005用於低功耗信令通道

0x0006用於安全管理。

本文只介紹低功耗藍芽信令通道

低功耗信令通道

低功耗信令通道用於主機層級的信令。

信令通道傳輸的為 l2cap 命令資料報。資料報結構在前面 l2cap 資料報文部分已經描述。

下面通過不同命令資料報的用途分析來了解低功耗信令通道的用途。

不同的命令操作碼有不同的用途,下面來介紹不同的命令的操作碼的用途來分析;

命令拒絕

用於拒絕裝置收到的不支援的資訊包,該命令與經典藍芽中的命令拒絕完全一樣,它包含乙個原因**以及相關的

資訊,原因**就是表達拒絕的原因。

「命令不理解」: 標識裝置收到了不支援的命令

「信令mtu溢位」: 表示裝置接收到的命令大於23位元組

連線引數更新請求和響應

用於從裝置更新鏈路層的連線引數,這些引數包括連線事件間隔(從裝置希望主裝置允許從裝置傳送資料報的頻率)

、以及從裝置延遲、還有監控超時。

連線引數更新過程如下:

什麼情況下需要更新連線引數呢?

在連線過程中,有時候連線事件的間隔太短,導致電量消耗過快,在從裝置延遲大還好說,否則的話,從裝置

會頻繁的偵聽鏈路,此時,從裝置就可能需要更新鏈路引數,來降低電量的消耗。

要注意的是,

1,連線引數更新請求命令僅用於從裝置向主裝置傳送,因為主裝置隨時都能啟動鏈路層連線引數更新。

如果是主裝置傳送。從裝置會人為這是乙個錯誤。返回命令不理解。

2,從裝置可以在任何時候傳送該命令,收到該資訊的主裝置可以修改連線引數,然後返回對應的響應。

主裝置也可以不同意從裝置的請求引數,然後傳送結果**為拒絕的連線引數更新響應。此時從裝置

要麼接受主裝置希望的正在使用的連線引數,要麼終止連線。

藍芽L2CAP剖析(一)

邏輯連線控制和適配協議 the logical link control and adaptation layer protoco 縮寫為 l2cap l2cap通過協議多路復用 分段重組操作和組概念,向高層提供面向連線的和無連線的資料服務,l2cap還遮蔽了低層傳輸協議中的很多特性,使得高層協議應...

藍芽協議系列之(四) L2CAP

4 l2cap protocol 7 quality of service,qos的支援。那cid是怎麼確定的呢?有一些固定用途的l2cap channel,其cid是固定值,另外一些則是動態分配的,具體如下 有關cid的具體數值可參考 core v4.2.pdf,volume 3,part a l...

TI BLE軟體開發者指導6 L2CAP(筆記)

texas instruments cc2540 41 bluetooth low energy software developer s guide v1.3.2 document number swru271f 低功耗藍芽開發權威指南 robin heydon著,陳燦峰 劉嘉 譯 機械工業出版社...