藍芽協議系列之(四) L2CAP

2021-08-20 18:46:54 字數 4210 閱讀 2210

4  l2cap protocol

7)quality of service,qos的支援。

那cid是怎麼確定的呢?有一些固定用途的l2cap channel,其cid是固定值,另外一些則是動態分配的,具體如下: 

有關cid的具體數值可參考:core_v4.2.pdf, volume 3, part a - logical link control and adaptation protocol specification

4.2.2 無連線的方法

另外,為了提高資料傳輸的效率,方便廣播通訊等應用場景,l2cap在提供基於連線的通訊機制之外,也提供了無連線的資料傳輸方法。基於這種方法,cid不存在了,取而代之的是乙個稱作protocol/service multiplexer(psm)的字段。

由於protocol multiplexing只允許在br/edr controller中使用,就不再詳細介紹了。

4  l2cap protocol

7)quality of service,qos的支援。

那cid是怎麼確定的呢?有一些固定用途的l2cap channel,其cid是固定值,另外一些則是動態分配的,具體如下: 

有關cid的具體數值可參考:core_v4.2.pdf, volume 3, part a - logical link control and adaptation protocol specification

4.2.2 無連線的方法

另外,為了提高資料傳輸的效率,方便廣播通訊等應用場景,l2cap在提供基於連線的通訊機制之外,也提供了無連線的資料傳輸方法。基於這種方法,cid不存在了,取而代之的是乙個稱作protocol/service multiplexer(psm)的字段。

由於protocol multiplexing只允許在br/edr controller中使用,就不再詳細介紹了。

5  attribute protocol

由上面章節的描述可知,在ble協議棧中:

physical layer負責提供一系列的physical channel;

基於這些physical channel,link layer可在兩個裝置之間建立用於點對點通訊的logical channel;

而l2cap則將這個logical channel換分為乙個個的l2cap channel,以便提**用程式級別的通道復用。到此之後,基本協議棧已經構建完畢,應用程式已經可以基於l2cap歡快的run起來了。

談起應用程式,就不得不說ble的初衷----物聯網。物聯網中傳輸的資料和傳統的網際網路有什麼區別呢?拋開其它不談,物聯網中最重要、最廣泛的一類應用是:資訊的採集。

這些資訊往往都很簡單,如溫度、濕度、速度、位置資訊、電量、等等。

採集的過程也很簡單,節點裝置定時的向中心裝置匯報資訊資料,或者,中心裝置在需要的時候主動查詢。

基於資訊採集的需求,ble抽象出乙個協議:attribute protocol,該協議將這些「資訊」以「attribute(屬性)」的形式抽象出來,並提供一些方法,供遠端裝置(remote device)讀取、修改這些屬性的值(attribute value)。

attribute protocol的主要思路包括:

1)基於l2cap,使用固定的channel id(0x004,具體可參考「圖3」)。

2)採用client-server的形式。提供資訊(以後都稱作attribute)的一方稱作att server(一般是那些感測器節點),訪問資訊的一方稱作att client。

3)乙個attribute由attribute type、attribute handle和attribute value組成。

attribute type用於標示attribute的型別,類似於我們常說的「溫度」、「濕度」等人類可識別的術語,不過與人類術語不同的是,attribute type使用uuid(universally unique identifier,16-bit、32-bit或者128-bit的數值)區分。

attribute handle是乙個16-bit的數值,用作唯一識別attribute server上的所有attribute。attribute handle的存在有如下意義: 

a)乙個server上可能存在多個相同type的attribute,顯然,client有區分這些attribute的需要。 

b)同一型別的多個attribute,可以組成乙個group,client可以通過這個group中的起、始handle訪問所有的attributes。

attribute value代表attribute的值,可以是任何固定長度或者可變長度的octet array(理解為位元組型別的陣列即可)。

4)attribute可以定義一些許可權(permissions),以便server控制client的訪問行為,包括:

訪問有關的許可權(access permissions),readable、writeable以及readable and writable;

加密有關的許可權(encryption permissions),encryption required和no encryption required;

認證有關的許可權(authentication permissions),authentication required和no authentication required;

授權有關的許可權(authorization permissions),authorization required和no authorization required。

5)根據所定義的attribute pdu的不同,client可以對server有多種訪問方式,包括:

find information,獲取attribute type和attribute handle的對應關係;

reading attributes,有read by type、read by handle、read by blob(只讀取部分資訊)、read multiple(讀取多個handle的value)等方式;

writing attributes,包括需要應答的writing、不需要應答的writing等。

6  generic attribute protocol

作為乙個profile framework,gatt profile提出了如下的層次結構:

由上圖可知,gatt profile的層次結構依次是:profile—>service—>characteristic。

「profile」是基於gatt所派生出的真正的profile,位於gatt profile hierarchy的最頂層,由乙個或者多個和某一應用場景有關的service組成。

乙個service包含乙個或者多個characteristic(特徵),也可以通過include的方式,包含其它service。

characteristic則是gatt profile中最基本的資料單位,由乙個properties、乙個value、乙個或者多個descriptor組成。

characteristic properties定義了characteristic的value如何被使用,以及characteristic的descriptor如何被訪問。

characteristic value是特徵的實際值,例如乙個距離特徵,其characteristic value就是距離長度。

characteristic descriptor則儲存了一些和characteristic value相關的資訊(例如value記錄距離長度,那麼descriptor可以是長度單位m/km)。

以上除「profile」外的每乙個定義,service、characteristic、characteristic properties、characteristic value、characteristic descriptor等等,都是作為乙個attribute存在的,包括之前所描述的attribute的所有特徵:attribute 

handle、attribute types、attribute value和attributepermissions。

7  generic access profile(gap)

藍芽的class(class of device,和發射功率有關);

藍芽L2CAP剖析(一)

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

BLE主機之L2CAP層

本文介紹l2cap 部分 l2cap 的全稱是 邏輯鏈路控制和適配協議,l2cap 是低功耗藍芽的復用層,該層定義兩個基本概念 l2cap 通道和l2cap 信令,l2cap 通道是乙個雙向資料通道,通向對端裝置上的某一特定的協議或規範,經典藍芽使用 l2cap 的大部分功能,包括動態通道識別符號,...

網路協議系列之四 IGMP ICMP和ARP

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!前言 igmp協議是乙個組管理協議,它幫助多播路由器建立以及更新與每乙個路由介面相連的忠實成員列表 就是與該路由介面連線頻率較高 icmp協議實際上就是差錯控制協議,彌補了ip協議沒有差錯糾正機制以及差錯報告的缺憾。arp是乙個位址對映協議,可以把...