Android藍牙系統框架和代碼結構

Android藍牙系統框架和代碼結構

概述

在 Android 4.2版本中,谷歌公司和博通合作,引入了博通的 BTE/BTA 協議棧,重構了藍牙子系統。新的藍牙協議棧被命名爲 BlueDroid。它包含了兩層:BTE(完成藍牙核心功能)和 BTA(與 Android 藍牙服務層進行通信)。藍牙服務層與 Bluedroid (封裝了 BTIF 層)通過 JNI 進行通信,與上層應用通過 Binder IPC 進行通信。BlueZ 及配套框架在 Android 系統上被移除。

Application Framework

該層代碼主要是利用 android.bluetooth API 和藍牙進程(Bluetooth Process)進行交互,也就是通過 Binder IPC 機制調用了藍牙進程的各個服務(Service)封裝的接口。代碼位於 frameworks/base/core/java/android/bluetooth 下。

Bluetooth Process

該層代碼主要是在 Bluetooth Process 裏實現各種 Bluetooth Service 和各種配置文件(Profile),Service 通過 JNI 調用到硬件抽象(HAL)層。代碼最後編譯形成一個 Android Application 包(Bluetooth.apk)。代碼位於 packages/apps/Bluetooth 下。

Bluetooth JNI

該層代碼位於 packages/apps/bluetooth/jni 下,定義了藍牙適配層和協議層對應的 JNI 服務,直接調用 HAL 層並給 HAL 層提供相應的回調。

Bluetooth HAL

該層代碼定義了 android.bluetooth API 和 Bluetooth Process 調用的標準接口,通過調用這些接口使得硬件(Hardware)運行正常。代碼位於 hardware/libhardware/include/hardware 下。

在 HAL 層並沒有實現定義的藍牙協議與屬性,默認實現在 Bluedroid 中,位於 external/bluetooth/bluedroid 下(6.0版本之後在system/bt),用戶可以根據自己的需求增加屬性。

Bluetooth Stack

該層代碼實現了 HAL 層中的定義,可以通過擴展和改變配置來自定義。代碼位於 external/bluetooth/bluedroid 下(6.0版本之後在system/bt)。

參考資料

《低功耗藍牙智能硬件開發實戰》第2章《Android藍牙系統框架和代碼結構》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章