Android Bluedroid 結(jié)構(gòu)

Bluedroid框架

                        Java                                                                                   
+--------------------------------+                                                                              
  +-----------------+     C++/C                                                                                 
  |       BTIF      |                                                                                           
  +-----------------+                                                                                           
  |       BTA       |                                                                                           
  +-----------------+                                                                                           
  | Bluedroid Stack |                                                                                           
  +-----------------+  user space                                                                               
+---------------------------------+                                                                             
                      kernel space         

Bluedroid.png

Bluedroid主要分為3個部分:BTIF, BTA, Stack俱济。
作為藍(lán)牙核心服務(wù),Bluetooth Stack模塊則由Bluetooth Application Layer(BTA)和Bluetooth Embedded System(縮寫為BTE)兩大部分組成。
BTE:bluedroid的內(nèi)部處理裤纹,又可以細(xì)分為BTA砾省,BTU,BTM鸳劳,HCI等

BTIF (Bluetooth Profile Interface)

BTIF:Bluetooth Application task(BTA)和JNI層之間從當(dāng)媒介(網(wǎng)上也說膠水層)。
對上層JNI提供所有profile功能行的接口也搓。該層還存在Bluetooth Interface Instance,所有Profile操作接口注冊在其中(GAP, AV, DM, PAN, HF,HH, HL, Storage, Sockets)赏廓。Client應(yīng)用通過Instance來操作Profile

BTA (Bluetooth Appication)

BTA:藍(lán)牙應(yīng)用層。指bluedroid中對各個profile實現(xiàn)和處理傍妒。上層下來的請求經(jīng)過BTA層幔摸,通過消息發(fā)送的方式將請求傳到BTA層中處理。

所有BTA消息送到BTU_TASK中颤练,由bta_sys_event來處理既忆;如果是Gatt相關(guān)的消息,由bta_gatt_hdl_event處理。

Stack:實現(xiàn)藍(lán)牙底層操作患雇。

BTU (Bluetooth Upper Layer)

BTU:承接BTA和HCI

BTM(Bluetooth Manager )

BTM:Bluedroid中的管理層跃脊。藍(lán)牙配對和鏈路管理

HCI

HCI:讀取和寫入數(shù)據(jù)到藍(lán)牙HW。主機(jī)與BT控制器之間的接口苛吱。

GKI模塊

內(nèi)核統(tǒng)一接口酪术。該層是一個適配層,適配了OS相關(guān)的進(jìn)程翠储、內(nèi)存相關(guān)的管理绘雁,還可以用于線程間傳遞消息 。主要通過變量gki_cb實現(xiàn)對進(jìn)程的統(tǒng)一管理援所。GKI模塊在Bluedroid中主要用于線程間通信庐舟。

bluedroid協(xié)議棧消息傳遞和處理

藍(lán)牙協(xié)議棧里通信通過消息隊列完成。

BLE

概念

BLE根據(jù)需要提供短數(shù)據(jù)包住拭,然后關(guān)閉鏈路挪略,BLE低功耗的原因之一。相對于常規(guī)藍(lán)牙的傳統(tǒng)配對方式废酷,BLE設(shè)備盡在需要收發(fā)信息時才進(jìn)行鏈接瘟檩。

BLE通信方式極其嚴(yán)密。設(shè)備顯示收發(fā)數(shù)據(jù)的服務(wù)澈蟆,后者包含稱之為特征的內(nèi)容墨辛,用于定義可共享的數(shù)據(jù)。特征可包含描述符趴俘,幫助 定義數(shù)據(jù)睹簇。

大多數(shù)BLE API都支持搜索本地設(shè)備和發(fā)現(xiàn)有關(guān)設(shè)備的服務(wù)、特征和描述符寥闪。

ATT(Attribute Protoco:屬性定義)
ATT是專門針對BLE設(shè)備而設(shè)計的優(yōu)化型協(xié)議太惠。ATT通過發(fā)送字節(jié)盡可能少的數(shù)據(jù)。所有屬性均帶有通用唯一標(biāo)識符(UUID)疲憋,后者為標(biāo)準(zhǔn)的128位字符串ID凿渊,以唯一的方式識別信息。ATT傳輸?shù)膶傩员桓袷交癁樘卣骱头?wù)缚柳。

  • 特征(Characteristic):包含一個單獨(dú)數(shù)據(jù)以及0個或多個描述符以描述特征值埃脏。
  • 描述符(Descriptor):描述符制定了屬性,可以描述特征值秋忙〔势可讀的描述如可注明單位或測量,或定義可以接受的數(shù)值范圍
  • 服務(wù)(Service):服務(wù)指特征的集合灰追。例如一個service叫做“Heart Rate Monitor”堵幽,它可能包含多個Characteristics狗超,其中可能包含一個叫做“heart rate measurement"的Characteristic。

GATT(Generic Attribute Profile:通用屬性配置文件)
GATT配置文件是關(guān)于通過藍(lán)牙低功耗鏈路收發(fā)短數(shù)據(jù)(稱為屬性)的通用規(guī)范朴下。當(dāng)前BLE應(yīng)用配置文件均以GATT為基礎(chǔ)努咐。SIG對BLE設(shè)備的配置文件數(shù)量進(jìn)行了預(yù)定義。這些配置文件是關(guān)于描述設(shè)備使用方法的規(guī)范桐猬。

GAP( Generic Access Profile:通用訪問規(guī)范)
定義了設(shè)備如何發(fā)現(xiàn)麦撵,建立連接刽肠,實現(xiàn)綁定溃肪。

SM(Security Manager)
負(fù)責(zé)BLE通信中安全。

中心設(shè)備和外圍設(shè)備
Central與peripheral
GATT server與GATT client

GAP用于外設(shè)設(shè)備與中心設(shè)備音五,每個設(shè)備可以充當(dāng)多種角色惫撰,同一時間只能充當(dāng)一種角色
GATT用于客戶端與服務(wù)器。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末躺涝,一起剝皮案震驚了整個濱河市厨钻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坚嗜,老刑警劉巖夯膀,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苍蔬,居然都是意外死亡诱建,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門碟绑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俺猿,“玉大人,你說我怎么就攤上這事格仲⊙号郏” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵凯肋,是天一觀的道長谊惭。 經(jīng)常有香客問我,道長侮东,這世上最難降的妖魔是什么圈盔? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮苗桂,結(jié)果婚禮上药磺,老公的妹妹穿的比我還像新娘。我一直安慰自己煤伟,他們只是感情好癌佩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布木缝。 她就那樣靜靜地躺著,像睡著了一般围辙。 火紅的嫁衣襯著肌膚如雪我碟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天姚建,我揣著相機(jī)與錄音矫俺,去河邊找鬼。 笑死掸冤,一個胖子當(dāng)著我的面吹牛厘托,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稿湿,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼铅匹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饺藤?” 一聲冷哼從身側(cè)響起包斑,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涕俗,沒想到半個月后罗丰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡再姑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年萌抵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片询刹。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡谜嫉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凹联,到底是詐尸還是另有隱情沐兰,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布蔽挠,位于F島的核電站住闯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏澳淑。R本人自食惡果不足惜比原,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杠巡。 院中可真熱鬧量窘,春花似錦、人聲如沸氢拥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冬殃,卻和暖如春囚痴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背审葬。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工深滚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涣觉。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓痴荐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親旨枯。 傳聞我的和親對象是個殘疾皇子蹬昌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

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

  • Key Terms And Concepts 關(guān)鍵術(shù)語和概念 Here is a summary of key B...
    Jaesoon閱讀 2,432評論 0 5
  • 前言: 本文主要描述Android BLE的一些基礎(chǔ)知識及相關(guān)操作流程,不牽扯具體的業(yè)務(wù)實現(xiàn)攀隔,其中提供了針對廣播包...
    幻影宇寰閱讀 5,348評論 6 19
  • 背景 藍(lán)牙歷史說到藍(lán)牙,就不得不說下藍(lán)牙技術(shù)聯(lián)盟(Bluetooth SIG),它負(fù)責(zé)藍(lán)牙規(guī)范制定和推廣的國際組織...
    徐正峰閱讀 12,386評論 6 33
  • 低功耗藍(lán)牙(BLE)設(shè)備的通信基本協(xié)議是 GATT, 要操作 BLE 設(shè)備栖榨,第一步就是要連接設(shè)備昆汹,其實就是連接 B...
    風(fēng)雨byt閱讀 4,119評論 1 11
  • 藍(lán)牙 藍(lán)牙的波段為2400-2483.5MHz(包括防護(hù)頻帶)。這是全球范圍內(nèi)無需取得執(zhí)照(但定不是無管制的)的工...
    蘇永茂閱讀 6,170評論 0 11