標籤:android 4.2 藍芽 bluedroid blue stack 架構
藍芽,wifi,3g 作為移動端平台最常見的dongle,藍芽現在應用越來越廣泛,特別是現在流行智能終端,多點互控,wifi,3g等資源消耗大,紅外又有距離和障礙物的限制,所以說藍芽通訊在未來其它的不說,單在智能TV上應用的情景將會越來越廣泛.這裡只是初步理解學習,之後將會一層一層從kernel直到application
撰寫不易,轉載需註明出處:http://blog.csdn.net/jscese/article/details/41283879
結構層次:
先看一張層次圖:
可以看到大體分成了三個部分,
java:
最上層就是 application framework,供應用程式使用的API,
java層的api類的 源碼路徑:framework/base/core/java/android/bluetooth
以及packages/apps/Bluetooth/src/com/android/bluetooth下的bluetooth services (以Bluetooth.apk形式編譯進系統)
native space:
第二層由上面的packages/apps/Bluetooth下的service調用到的本地的JNI開始,調用到hardware中的定義(hardware/libhardware/include/hardware/bluetooth.hhardware/libhardware/include/hardware/bt_*.h),
bluetooth.default.so 的實現放在external/bluetooth/bluedroid
這裡面就是bluetooth的核心協議棧
可以看到分為了幾部分,後面介紹分別的代表的作用
其中還有一個抽象的介面協議層hci,用於與不同廠家的Vendor 連通,Vendor HCI中是需要實現必需的介面的
kernel:
最下面 核心層,是linux的通用驅動了,這裡的都是linux 對與藍芽操作涉及到的驅動模組
之前的android版本我不熟,但是網上的說android4.2相對比之前的,藍芽改動很大,把原來的BlueZ替換成了Bluedroid(也就是external中的),把原來放在framework中的bluetooth service jni 改放到了package中app中,
就我目前調試來看 之前的/system/bluetooth也沒有用到.
模組圖:
這是來自google官網 http://source.android.com/devices/bluetooth.html 裡面的一張圖:
這就是從application到vendor,其中Bluetooth Stack中模組則由Bluetooth Application Layer(縮寫為BTA)和Bluetooth Embedded System(縮寫為BTE)兩大部分組成。
BTA 實現了藍牙裝置管理、狀態管理及一些應用規範,與Android framework 互動.
BTE 則通過HCI與廠商藍芽晶片互動以實現了藍芽協議棧的通用功能和相關協議。另外,BTE還包括一個統一核心介面(GKI),藍芽晶片廠商可藉助GKI快速輕鬆得移植藍芽協議棧.
後續再來分析每個層次的模組運作與上下互動~
Android——4.2 藍芽 BlueTooth 初探入門 (一)