藍(lán)牙協(xié)議棧結(jié)構(gòu)

參考文獻(xiàn):

How Bluetooth LE works? — Link layer | by Jacob su | Medium
Bluetooth Protocol Stack - MATLAB & Simulink (mathworks.com)

藍(lán)牙協(xié)議分析(1)_基本概念 (wowotech.net)? ?系列藍(lán)牙技術(shù)介紹

(41條消息) 藍(lán)牙BLE LINK LAYER剖析(二) -- PDU_朝氣蓬勃-CSDN博客

(41條消息) BLE_StephenZhou-CSDN博客

藍(lán)牙核心系統(tǒng)結(jié)構(gòu)

藍(lán)牙協(xié)議分為四個(gè)層次:物理層(Physical Layer)谈息、邏輯層(Logical Layer)漾狼、L2CAP Layer和應(yīng)用層(APP Layer)。

Architecture of the Bluetooth stack
? ?Comparison between the BLE protocol stack and the Open System Interconnection (OSI) reference model

物理層

負(fù)責(zé)提供數(shù)據(jù)傳輸?shù)奈锢硗ǖ溃ㄍǔ7Q為信道)腐泻。通常情況下歼跟,一個(gè)通信系統(tǒng)中存在幾種不同類型的信道呕童,如控制信道砚婆、數(shù)據(jù)信道绷柒、語(yǔ)音信道等等志于。



邏輯層

在物理層的基礎(chǔ)上,提供兩個(gè)或多個(gè)設(shè)備之間废睦、和物理無(wú)關(guān)的邏輯傳輸通道(也稱作邏輯鏈路)伺绽。

在BR/EDR系統(tǒng)中,與對(duì)端的Link Manager通過(guò)LMP協(xié)議(Link Manager Protocol)進(jìn)行通信嗜湃;在BLE系統(tǒng)中則使用的是LL協(xié)議(Link Layer Protocol)奈应。

BLE鏈路層的狀態(tài)機(jī)

包含Standby、Advertising购披、Scanning杖挣、Initiating、Connection刚陡、Synchronization惩妇、Isochronous?Broadcasting state,轉(zhuǎn)換圖如下所示

BLE鏈路層有限狀態(tài)機(jī)

Master:從Initiating state進(jìn)入Connection state

Slave:從Advertising state進(jìn)入Connection state


HCI

HCI數(shù)據(jù)包分為command橘荠、event和data三種類型屿附。command表示Host發(fā)送給Controller的命令,event為Controller發(fā)送給Host的事件哥童,data通常是實(shí)際的藍(lán)牙傳輸數(shù)據(jù)挺份。

command格式:opcode 16 bit? |? 參數(shù)長(zhǎng)度 8 bit? |? 可變參數(shù)

event格式:event code 1 bit? |? 參數(shù)長(zhǎng)度 1 bit? |? 可變參數(shù)

通常Host發(fā)送的command都會(huì)收到Controller的返回event,提示命令的執(zhí)行結(jié)果贮懈。例如匀泊,HCI命令0x200c表示 LE Set Scan Enable优训,并通過(guò)參數(shù)控制開(kāi)啟和關(guān)閉BLE的掃描,Controller執(zhí)行完畢后返回event code?0x0e各聘,即Command Complete揣非,并附帶status作為參數(shù)表示結(jié)果是否成功。

ACL

HCI的ACL協(xié)議主要用于在Host和Controller之間躲因,傳輸數(shù)據(jù)早敬。

ACL數(shù)據(jù)包格式:Handle 12 bit? |? PB flag 2 bit? |? BC flag 2 bit? |? Data Total Length 16 bit? |? data?

其中,Handle用于區(qū)分Host與Controller之間的邏輯鏈路大脉,PB為Packet Boundary即包邊界標(biāo)志搞监,BC(Broadcast)為廣播標(biāo)志。由于數(shù)據(jù)總長(zhǎng)度只用2個(gè)字節(jié)(16bit)表示镰矿,因此數(shù)據(jù)加上頭部最多也只有65535bit琐驴,這意味著在發(fā)送過(guò)大的數(shù)據(jù)時(shí)需要在ACL層進(jìn)行分包和重組,PB Flag就是為了這個(gè)目的而設(shè)置的秤标,根據(jù)PB Flag的值可以表示當(dāng)前數(shù)據(jù)包在完整數(shù)據(jù)中所處的位置绝淡。


L2CAP層

L2CAP是邏輯鏈路控制和適配協(xié)議(Logical Link Control and Adaptation Protocol)的縮寫,負(fù)責(zé)管理邏輯層提供的邏輯鏈路苍姜±谓停基于該協(xié)議,不同Application可共享同一個(gè)邏輯鏈路怖现。類似TCP/IP中端口(port)的概念茁帽。

ACL只提供了一個(gè)數(shù)據(jù)傳輸協(xié)議,類比于網(wǎng)絡(luò)協(xié)議棧中的IP協(xié)議屈嗤,在其之上使用的L2CAP協(xié)議可以類比于TCP/UDP協(xié)議潘拨,實(shí)現(xiàn)了更為完善的數(shù)據(jù)傳輸功能,包括:

協(xié)議/信道(L2CAP channel)多路復(fù)用饶号、分段(segmentation)和重組(reassembly)铁追、基于L2CAP channel的流量控制機(jī)制、錯(cuò)誤控制重傳機(jī)制茫船、支持流式傳輸(streaming)琅束、分片(fragmentation)和重組(recombination)、QoS(Quality of Service)…

L2CAP channel表示兩個(gè)設(shè)備之間的一條邏輯鏈路算谈,使用Channel ID(CID)進(jìn)行區(qū)分涩禀,并以此為基本單元在Controller邏輯鏈路上進(jìn)行多路復(fù)用。在基于連接的信道(connection-oriented channels)中然眼,L2CAP PDU也稱為B-Frame艾船,其格式如下:

L2CAP PDU格式:length 16 bit? |? CID 16 bit? |? information payload

前32bit稱為L(zhǎng)2CAP header,length是除了header以外的payload長(zhǎng)度。在不同的L2CAP模式中屿岂,information payload的內(nèi)容也不盡相同践宴,比如在Supervisor Frame(S-Frame)、Information Frame(I-Frame)爷怀。而對(duì)于無(wú)連接的L2CAP數(shù)據(jù)包阻肩,在payload之前還包含大于等于2字節(jié)的PSM(Protocol/Service Multiplexer),頭部還是和B-Frame一致的运授。

在L2CAP之上烤惊,有著各種各樣的應(yīng)用層協(xié)議,比如服務(wù)發(fā)現(xiàn)協(xié)議SDP吁朦,藍(lán)牙傳輸協(xié)議RFCOMM/OBEX撕氧,BLE的屬性協(xié)議ATT,甚至是通用以太網(wǎng)協(xié)議BNEP以及其上的TCP/IP網(wǎng)絡(luò)棧等喇完。通過(guò)分層和抽象使得上層應(yīng)用無(wú)需關(guān)心底層的細(xì)節(jié),從而實(shí)現(xiàn)了整個(gè)藍(lán)牙協(xié)議棧的普適性和拓展性剥啤。


APP層

理解藍(lán)牙協(xié)議中的應(yīng)用層锦溪,基于L2CAP提供的channel,實(shí)現(xiàn)各種各樣的應(yīng)用功能府怯。Profile是藍(lán)牙協(xié)議的特有概念刻诊,為了實(shí)現(xiàn)不同平臺(tái)下的不同設(shè)備的互聯(lián)互通,藍(lán)牙協(xié)議不止規(guī)定了核心規(guī)范(稱作Bluetooth core)牺丙,也為各種不同的應(yīng)用場(chǎng)景则涯,定義了各種Application規(guī)范,這些應(yīng)用層規(guī)范稱作藍(lán)牙profile冲簿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粟判,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子峦剔,更是在濱河造成了極大的恐慌档礁,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吝沫,死亡現(xiàn)場(chǎng)離奇詭異呻澜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)惨险,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門羹幸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人辫愉,你說(shuō)我怎么就攤上這事栅受。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵窘疮,是天一觀的道長(zhǎng)袋哼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)闸衫,這世上最難降的妖魔是什么涛贯? 我笑而不...
    開(kāi)封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蔚出,結(jié)果婚禮上弟翘,老公的妹妹穿的比我還像新娘。我一直安慰自己骄酗,他們只是感情好稀余,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著趋翻,像睡著了一般睛琳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上踏烙,一...
    開(kāi)封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天师骗,我揣著相機(jī)與錄音,去河邊找鬼讨惩。 笑死辟癌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荐捻。 我是一名探鬼主播黍少,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼处面!你這毒婦竟也來(lái)了厂置?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸳君,失蹤者是張志新(化名)和其女友劉穎农渊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體或颊,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砸紊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囱挑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片醉顽。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖平挑,靈堂內(nèi)的尸體忽然破棺而出游添,到底是詐尸還是另有隱情系草,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布唆涝,位于F島的核電站找都,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏廊酣。R本人自食惡果不足惜能耻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亡驰。 院中可真熱鬧晓猛,春花似錦、人聲如沸凡辱。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)透乾。三九已至洪燥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乳乌,已是汗流浹背蚓曼。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钦扭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓床绪,卻偏偏與公主長(zhǎng)得像客情,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子癞己,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容