藍(lán)牙協(xié)議規(guī)范遵循開放系統(tǒng)互連參考模型(OSI/RM),從低到高地定義了藍(lán)牙協(xié)議棧的各個(gè)層次。SIG所定義的藍(lán)牙技術(shù)規(guī)范的目的是使符合該規(guī)范的各種應(yīng)用之間能夠?qū)崿F(xiàn)互操作?;ゲ僮鞯倪h(yuǎn)端設(shè)備需要使用相同的協(xié)議棧,不同的應(yīng)用需要不同的協(xié)議棧。完整的藍(lán)牙協(xié)議棧如下圖所示,不是任何應(yīng)用都必須使用全部協(xié)議,而是可以只使用其中的一列或多列。圖中顯示了所有協(xié)議之間的相互關(guān)系,但這種關(guān)系在某些應(yīng)用中是有變化的。
BLE協(xié)議棧主要用來對(duì)你的應(yīng)用數(shù)據(jù)進(jìn)行層層封包,以生成一個(gè)滿足BLE協(xié)議的空中數(shù)據(jù)包。也就是說,把應(yīng)用數(shù)據(jù)包裹在一系列的幀頭和幀尾中。藍(lán)牙協(xié)議棧分為:應(yīng)用層、主協(xié)議層、控制層,如下圖所示:
1、藍(lán)牙核心協(xié)議
藍(lán)牙核心協(xié)議關(guān)注對(duì)藍(lán)牙核心技術(shù)的描述和規(guī)范,它只提供基礎(chǔ)的機(jī)制,并不關(guān)心如何使用這些機(jī)制。藍(lán)牙核心協(xié)議又包含BLE Controller和BLE Host兩部分。
Controller:負(fù)責(zé)定義RF、Baseband等偏硬件的規(guī)范,并在這之上抽象出用于通信的邏輯鏈路;
Host:負(fù)責(zé)在邏輯鏈路的基礎(chǔ)上,進(jìn)行更為友好的封裝,這樣就可以屏蔽掉藍(lán)牙技術(shù)的細(xì)節(jié),讓Bluetooth Application更為方便的使用。
2、藍(lán)牙應(yīng)用層協(xié)議
藍(lán)牙應(yīng)用層協(xié)議,是在藍(lán)牙核心協(xié)議的基礎(chǔ)上,根據(jù)具體的應(yīng)用需求,百花齊放,定義出各種各樣的策略,如FTP、文件傳輸、局域網(wǎng)等等。
3、低功耗藍(lán)牙核心協(xié)議層
主要分為如下幾層:
① 物理層
PHY層用來指定BLE所用的無線頻段,調(diào)制解調(diào)方式和方法等。PHY層做得好不好,直接決定整個(gè)BLE芯片的功耗,靈敏度以及selectivity等射頻指標(biāo)。
② 鏈路層
LL層是整個(gè)BLE協(xié)議棧的核心。LL層要做的事情非常多,比如具體選擇哪程度 個(gè)射頻通道進(jìn)行通信,怎么識(shí)別空中數(shù)據(jù)包,具體在哪個(gè)時(shí)間點(diǎn)把數(shù)據(jù)包發(fā)送出去,怎么保證數(shù)據(jù)的完整性,ACK如何接收,如何進(jìn)行重傳,以及如何對(duì)鏈路進(jìn)行管理和控制等等。LL層只負(fù)責(zé)把數(shù)據(jù)發(fā)出去或者收回來,對(duì)數(shù)據(jù)進(jìn)行怎樣的解析則交給上面的GAP或者ATT。
③ 主機(jī)控制接口層
HCL是可選的,主要用于兩個(gè)芯片實(shí)現(xiàn)BLE協(xié)議棧的場(chǎng)合,用來規(guī)范兩者之間的通信協(xié)議、通信命令等。
④ 通用訪問配置文件層
GAP主要用來進(jìn)行廣播、掃描和發(fā)起連接等。
⑤ 邏輯鏈路控制及自適應(yīng)協(xié)議層
L2CAP對(duì)LL進(jìn)行了一次簡(jiǎn)單封裝。LL層只關(guān)心傳輸?shù)臄?shù)據(jù)本身,L2CAP就要區(qū)分加密通道還是普通通道,同時(shí)還要對(duì)連接間隔進(jìn)行管理。
⑥ 安全管理層
SM用來管理BLE連接的加密和安全的。
⑦ 屬性協(xié)議層
簡(jiǎn)單來說,ATT層用來定義用戶命令及命令操作的數(shù)據(jù),比如讀/寫某個(gè)數(shù)據(jù)。開發(fā)者接觸最多的就是ATT。BLE引入了attribute(屬性)概念,用來描述一條條數(shù)據(jù),attribute除了定義數(shù)據(jù),還定義該數(shù)據(jù)可以使用的ATT命令,因此這一層被稱為ATT層。
⑧ 通用屬性配置文件層
GATT用來規(guī)范attribute中的數(shù)據(jù)內(nèi)容,并用group(分組)的概念進(jìn)行分類管理。
下圖是協(xié)議棧的總體結(jié)構(gòu)分層圖: