Bluetooth Overview - AOSP11

此文描述的是 AOSP11(Android R) 版本的蓝牙内容。

1. AOSP11 Bluetooth Relative Repos

Repos Documents Installed Product
packages/apps/Settings/ src/com/android/settings/bluetooth/ Settings.apk
src/com/android/settings/development/bluetooth/ Settings.apk
frameworks/base/ packages/SettingsLib/src/com/android/settingslib/bluetooth/ ??
core/java/android/bluetooth/ framework.jar
services/core/java/com/android/server/ services.jar
packages/apps/Bluetooth/ * (exclude jni/) Bluetooth.apk
jni/ libbluetooth_jni.so
system/bt/ * libbluetooth.so
hardware/interfaces/ bluetooth/ ??
  1. packages/apps/Settings/ 包含蓝牙的设置和开发者选项;
  2. frameworks/base/ 包含蓝牙的 API封装(供设置等系统应用使用)、标准API、system_server中运行的常驻蓝牙服务;
  3. packages/apps/Bluetooth/ 包含蓝牙的核心服务和各种profile服务等;
  4. system/bt/ 包含蓝牙的协议栈实现、apex、binder接口定义(AIDL);
  5. hardware/interfaces/ 包含蓝牙的 HAL 层接口定义(AIDL/HIDL)。

2. AOSP11 Bluetooth Architecture

AOSP11 Bluetooth Architecture
  1. 紫色框是进程;
  2. 黑色框是模块(Android 上可独立修改安装的包)。
  3. 由于蓝牙进程(com.android.bluetooth)仅在蓝牙开启时运行,因此,在蓝牙进程未启动时,在系统中需要有一个常驻模块接收并处理 enable bluetooth 操作,该模块即为 system_server 进程中的 BluetoothManagerService。

2.1 AOSP11 Bluetooth Stack Architecture

AOSP11 Bluetooth Stack Architecture

注意:以上名称主要来自AOSP的目录名称,不确保具备通用性。

  1. BTIF:Bluetooth Interface,表示 JNI 与 BTA 之间的接口;
  2. BTA:Bluetooth Application,表示蓝牙应用(如 profile或 与profile相关)的实现;
  3. STACK:Bluetooth Stack,表示蓝牙核心协议栈的 Protocol 的实现(可能包含部分 Profile 的实现);
  4. BTU:Bluetooth Upper,表示 HCI 的上层,是 HCI 与 Stack 之间的接口,主要是对 HCI 操作的封装;
  5. HCI:Host Controller Interface,表示蓝牙 Core Spec 描述的 HCI 在AOSP中的实现。

3. AOSP11 Bluetooth Code Description

3.1 system/bt/

Part of Bluetooth Code Description

4 AOSP11 Bluetooth Initialization Arch

Bluetooth initialization - enable in Settings & System_server process
   Bluetooth initialization - Bluetooth process Initialization - Framework(Java)
   Bluetooth initialization - Bluetooth process Initialization - Native(Cpp)
Bluetooth initialization - enable in Bluetooth process

你可能感兴趣的:(Bluetooth Overview - AOSP11)