Bluedroid框架
Java
+--------------------------------+
+-----------------+ C++/C
| BTIF |
+-----------------+
| BTA |
+-----------------+
| Bluedroid Stack |
+-----------------+ user space
+---------------------------------+
kernel space
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ù)器。
參考
- http://www.wowotech.net/bluetooth/ble_stack_overview.html
- https://software.intel.com/zh-cn/articles/connecting-to-intel-edison-from-android-with-bluetooth-le-ble
- https://segmentfault.com/a/1190000002982295?utm_source=tuicool&utm_medium=referral
- http://blog.csdn.net/javon_hzw/article/details/48731281
- http://www.cnblogs.com/jeanschen/p/3550652.html
- http://blog.csdn.net/xubin341719/article/details/40378205
- http://www.2cto.com/kf/201609/545121.html