標籤:藍芽
關鍵詞:bluedroid bluez
xubin341719(歡迎轉載,請註明作者,請尊重著作權,謝謝!)
歡迎指正錯誤,共同學習、共同進步!!
一、名詞解釋:(有用資訊增加中……)
BTI F: Bluetooth Interface
BTU : Bluetooth Upper Layer
BTM: Bluetooth Manager
BTE :Bluetooth embedded system
BTA :Blueetooth application layer
CO: call out\CI: call in
HF : Handsfree Profile
HH: HID Host Profile
HL: Health Device Profile
AV:audio\vidio
ag: audio gateway
ar: audio/video registration
gattc: GATT client
BLE:
二、 BlueDroid && BlueZ
Android 4.2之前,Google一直使用的是Linux官方藍芽協議棧BlueZ。BlueZ實際上是由高通公司在2001年5月基於GPL協議發布的一個開源項目,做為Linux 2.4.6核心的官方藍芽協議棧。隨著Android裝置的流行,BlueZ也得到了極大的完善和擴充。例如Android 4.1中BlueZ的版本升級為4.93,它支援藍芽核心規範4.0,並實現了絕大部分的Profiles。
從Android 4.2開始,Google便在Android源碼中推出了它和博通公司一起開發的BlueDroid以替代BlueZ。BlueZ的創始者,高通公司也將在基於其晶片的Android參考設計中去除BlueZ,支援BlueDroid。
相比BlueZ,BlueDroid最值得稱道的地方就是其架構結構變得更為簡潔和清晰。對我們工程師來說這也是個不錯的福利,清晰、簡潔的架構使我們在debug過程中思路更清晰;
1、Android 4.2中BlueDroid的架構結構圖:(Google官方提供)。
(1)、應用程式通過android.bluetooth package下的API來調用系統的Bluetooth功能。
(2)、應用程式層空間增加了一個名為Bluetooth的App。它做為系統的bluetooth核心進程而存在。其內部將通過JNI來調用Bluetooth HAL層以完成各種藍芽請求。
(3)、Bluetooth HAL也屬於Android 4.2新增模組,它由藍芽核心規範硬體抽象層和藍芽應用規範硬體抽象層組成。由於HAL層的隔離作用,上層代碼可輕鬆移植到不同晶片平台。
(4)、作為整個藍芽服務的核心,Bluetooth Stack模組則由Bluetooth Application Layer(縮寫為BTA)和Bluetooth Embedded System(縮寫為BTE)兩大部分組成。BTA實現了藍牙裝置管理、狀態管理及一些應用規範。而BTE則通過HCI與廠商藍芽晶片互動以實現了藍芽協議棧的通用功能和相關協議。另外,BTE還包括一個統一核心介面(GKI),藍芽晶片廠商可藉助GKI快速輕鬆得移植藍芽協議棧到其他動作系統或手機平台上。
(5)、Vendor Extentions(廠商擴充):開發人員可以添加自訂擴充以實現廠商特定的模組和組件。
(6)、bluedroid 整體協議棧架構:
整個系統的架構很簡單,因為大多的事情都是在Bluedroid層裡面做的,上層只管去Call和Callback就是了,這部分我們在後面分析代碼做詳細分析。
2、BlueZ 代碼架構
和Bluedroid類似,BlueZ也是按照標準流程從應用一直走下來,不過兩者唯一的區別是BlueZ的DBUS。blueDroid中取出DBUS是代碼結構變的更加清晰,看起來跟順暢。如藍芽代碼架構(Google官方提供):
3、BlueDrod PK BlueZ
BlueDroid雖然對BlueZ大有取而代之的趨勢,但現在它對藍芽應用規範的支援還不夠完善。例如BlueDroid僅支援AVRCP 1.0,而非最新的AVRCP 1.5。所以,國內某些晶片或手機廠商若能及早完成BlueZ相關模組到BlueDroid的移植工作,相信能協助它們在競爭日趨白日化的移動世界中拔得先機。另外,作為一種成熟、低功耗無線通訊技術的先鋒,藍芽未來在穿戴式裝置領域中也將扮演越來越重要的作用。
Android BlueDroid(一):BlueDroid概述