BLE協議棧的學習筆記

BLE的協議可分爲Bluetooth Application 和Bluetooth Core兩大部分,而Bluetooth Core又包含BLE Controller和BLE Host兩部分。


Physical Layer:任何一個通信系統,首先要確定的就是通信介質(物理通道,Physical Channel),BLE也不例外.在BLE協議中,"通信介質"的定義是由Physical Layer(其它通信協議也類似)負責.

Physical Layer是這樣描述BLE的通信介質的:

由於BLE屬於無線通信,則其通信介質是一定頻率範圍下的頻帶資源(Frequency Band);

BLE的市場定位是個體和民用,因此使用免費的ISM頻段(頻率範圍是2.400-2.4835 GHz);

爲了同時支持多個設備,將整個頻帶分爲40份,每份的帶寬爲2MHz,稱作RF Channel。

經過上面的定義之後,BLE的物理信道已經出來了,即"頻點分別是'f=2402+k*2 MHz ,k=0,...,39'",帶寬爲2MHz的40個RF Channel。


Link Layer:

Link Layer主要的功能就是在這些Physical Channel上收發數據,與此同時,不可避免的需要控制RF收發相關的參數。Link Layer需要解決

Physical Channel的共享問題;實體之間的獨享的傳輸通道;校驗,重傳,數據傳輸的可靠性等問題。


1.怎麼解決Physical Channel的共享問題?

BLE系統只有有限的40個Physical Channel,怎麼容納多個通信實體呢?

Link Layer將BLE的通信場景分爲兩類:

(1)數據量比較少,發送不頻繁,對時延不是很敏感的場景

這種數據場景,BLE的Link Layer採取了一種比較懶的處理方式——廣播通信:從40個Physical Channel中選取3個,作爲廣播通道,在廣播通道上,任何參與者,愛發就發,愛收就收,隨便;所有參與者,共享同一個邏輯傳輸通道(廣播通道)

(2)數據量較大,發送頻率較高,對時延較敏感的場景

BLE的Link Layer會從剩餘的37個Physical Channel中,選取一個,爲這種場景裏面的通信雙方建立單獨的通道(data channel)。這就是連接(connection)的過程。同時,爲了增加容量,增大抗干擾能力,連接不會長期使用一個固定的Physical Channel,而是在多個(如37個)之間

隨機但有規律的切換,這就是BLE的跳頻(Hopping)技術。


狀態(state)和角色(role)的定義:

BLE協議在Link Layer抽象出5種狀態:

Standby State

Advertising State

Scanning State

Initiating State

Connection State

其狀態轉換如下圖所示:


Standby狀態是初始狀態,即不發送數據,也不接收數據。根據上層實體的命令(如位於host軟件中GAP),可由其它任何一種狀態進入,也可以切換到除Connection狀態外的任意一種狀態

Advertising狀態是可以通過廣播通道發送數據的狀態,由Standby狀態進入。它廣播的數據可以由處於Scanning或者Initiating狀態的實體接收。上層實體可通過命令將Advertising狀態切換會Standby狀態。另外,連接成功後,也可切換爲Connection狀態.

Scanning狀態是可以通過廣播通道接收數據的狀態,由Standby狀態進入。根據Advertiser所廣播的數據的類型,有些Scanner還可以主動向Advertiser請求一些額外數據。上層實體可通過命令將Scanning狀態切換回Standby狀態.

Initiating狀態和Scanning狀態類似,不過是一種特殊的接收狀態,由Standby狀態進入,只能接收Advertiser廣播的connectable的數據,並在接收到數據後,發送連接請求,以便和Advertiser建立連接。當連接成功後,Initiater和對應的Advertiser都會切換到Connection狀態。

Connection狀態是和某個實體建立了單獨通道的狀態,在通道建立之後,由Initiating或者Advertising自動切換而來。通道斷開後,會重新回到Standby狀態。


通道建立後,處於Connection狀態的雙方,分別有兩種角色Master和Slave:Initiater方稱作Mater;Advertiser方稱作Slave。


Air Interface Protocol



L2CAP(Logical Link Control and Adaptation Protocol)

經過Linke Layer的抽象之後,兩個BLE設備之間可存在兩條邏輯上的數據通道:一條是無連接的廣播通道,天高任鳥飛;另一條是基於連接的數據通道,是一個點對點(Master對Slave)的邏輯通道。

L2CAP是一個介於應用程序(Profile、Application等)和Link Layer之間的協議,它提供的功能主要包括:

Protocol/channel mutiplexing,協議/通道的多路複用(分爲基於通道的多路複用和基於協議的多路複用,基於通道的多路複用採用CID的方式,基於協議的多路複用採用PSM的方式,基於協議的多路複用只允許在BR/EDR controller中使用);

Segmentation and reassembly,上層應用數據(L2CAP Service Data Units,SDUs)的分割(和重組),生成協議數據單元(L2CAP Packet Data Units,PDUs),以滿足用戶數據傳輸對延時的要求,並便於後續的重傳、流控等機制的實現;

Flow control per L2CAP channel,基於L2CAP Channel的流控機制

Error control and retransmissions,錯誤控制和重傳機制;

Support for Streaming ,支持流式傳輸(如音頻、視頻等,不需要重傳或者只需要有限重傳);

Fragmentation and Recombination ,協議數據單元(PDUs)的分片(和重組),生成符合Link Layer傳輸要求的數據片(長度不超過251)

Quality of Service ,QoS的支持。



ATT(Attribute Protocol)

到目前爲止,我們可以知道的是,在BLE協議棧中:Physical Layer負責提供一系列的Physical Channel;基於這些Physical Channel,Link Layer可在兩個設備之間建立用於點對點通信的Logical Channel;而L2CAP則將這個Logical Channel劃分爲一個個的L2CAP Channel,以便提供應用程序級別的通道複用。到此之後,基本協議棧已經構建完畢,應用程序已經可以基於L2CAP運行起來了。

ATT將信息以Attribute(屬性)的形式抽象出來,並提供一些方法,供遠端設備(remote device)讀取,修改這些屬性的值(Attribute value)。

Attribute Protocol的主要思路包括:

(1)基於L2CAP,使用固定的Channel ID(0x004)

(2)採用client-server的形式.提供信息(以後都稱作Attribute)的一方稱作ATT server(一般是那些傳感器節點),訪問信息的一方稱作ATT client。

(3)一個Attribute由Attribute Type、Attribute Handle和Attribute Value組成:

Attribute Type 用於標識Attribute的類型,類似於我們常說的"溫度","溼度"等人類可識別的術語,不過與人類術語不同的是,Attribute Type使用UUID(Universally Unique IDenifier,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的值,可以是任何固定長度或者可變長度的字節數組

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

根據所定義的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等


GATT(Generic Attribute Profile)

ATT之所以稱作"protocol",是因爲它還比較抽象,僅僅定義了一套機制,允許client和server通過Attribute的形式共享信息.而具體共享哪些信息,ATT並不關心,這是GATT的主場。

GATT相對ATT只多了一個'G',但含義卻大不同,因爲GATT是一個profile

在藍牙協議中,profile一直是一個比較抽象的概念,我們可以將其理解爲"應用場景、功能、使用方式"都被規定好的Application。傳統的BR/EDR如此,BLE更甚。BLE很大一部分的應用場景是信息的共享,因此,BLE協議棧基於Attribute Protocol,定義了一個稱作GATT的profile framework,用於提供通用的、信息的存儲和共享等功能。


GATT profile的層次結構依次是:profile->service->characteristic。

“Profile”是基於GATT所派生的真正的Profile,位於GATT Profile hierarchy的最頂層,由一個或者多個和某一應用場景有關的Service組成。

一個Service 包含一個或多個Characteristic(特徵),也可以通過include的方式,包含其它Service。

Characteristic則是GATT profile中最基本的數據單位,由一個Properties,一個Value,一個或者多個Descriptor組成。

Characteristic Properties定義了charactertistic的value如何被使用,以及characteristic的Descriptor如何被訪問。

Characteristic Value是特徵的實際值。

Characteristic Descriptor則保存了一些和Characteristic Value相關的信息.

以上除"Profile"外的每一個定義,Service,Characteristic,Characteristic Properties,Characteristic Value、Characteristic Descriptor等等,都是作爲一個Attribute存在的,都具有Attribute的所有特徵:Attribute Handle、Attribute Types、Attribute Value 和Attribute Permissions。


SM(Security Manager)

Security Manager負責BLE通信中有關安全的內容,包括配對、認證、加密等過程。

GAP(Generic Access Profile)

BLE協議棧定義了一個稱作Generic Access(通用訪問)的profile,以實現如下功能:

1)定義GAP層的藍牙設備角色(role)

和5.3中的Link Layer的role類似,只不過GAP層的role更接近用戶(可以等同於從用戶的角度看到的藍牙設備的role),包括:

Broadcaster Role,設備正在發送advertising events;

Observer Role,設備正在接收advertising events;

Peripheral Role,設備接受Link Layer連接(對應Link Layer的slave角色);

Central Role,設備發起Link Layer連接(對應Link Layer的master角色)。

2)定義GAP層的、用於實現各種通信的操作模式(Operational Mode)和過程(Procedures),包括:

Broadcast mode and observation procedure,實現單向的、無連接的通信方式;

Discovery modes and procedures,實現藍牙設備的發現操作;

Connection modes and procedures,實現藍牙設備的連接操作;

Bonding modes and procedures,實現藍牙設備的配對操作。

3)定義User Interface有關的藍牙參數,包括:

藍牙地址(Bluetooth Device Address);

藍牙名稱(Bluetooth Device Name);

藍牙的pincode(Bluetooth Passkey);

藍牙的class(Class of Device,和發射功率有關);

等等。


該篇文章只是對於另一篇文章的摘錄沒有加入自己的理解,故定義爲轉載,原文地址爲:http://www.wowotech.net/bluetooth/ble_stack_overview.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章