Android Bluetooth架构
Android 5.1 蓝牙源码目录
一、Bluetooth 的设置应用
packages/apps/Settings/src/com/android/settings/bluetooth/
蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等。
文件示例:
BluetoothCallback.java
BluetoothDeviceFilter.java
BluetoothDevicePreference.java
BluetoothDiscoverableEnabler.java
BluetoothDiscoveryReceiver.java
BluetoothEnabler.java
BluetoothEventManager.java
BluetoothPairingDialog.java
BluetoothPairingRequest.java
BluetoothSettings.java
CachedBluetoothDeviceManager.java
DeviceListPreferenceFragment.java
DeviceProfilesSettings.java
HidProfile.java
LocalBluetoothAdapter.java
LocalBluetoothManager.java
LocalBluetoothPreferences.java
LocalBluetoothProfile.java
LocalBluetoothProfileManager.java
二、 Bluetooth 的JAVA类
frameworks/base/core/java/android/bluetooth/
frameworks/base/services/core/java/com/android/server/BluetoothManagerService.java
如BluetoothClass,BluetoothAdapter,BluetoothDevice等。Bluetooth应用就是通过这些类实现。
文件示例:
BluetoothAdapter.java
BluetoothClass.java
BluetoothDevice.aidl
BluetoothDevice.java
BluetoothGattCallback.java
BluetoothGattCallbackWrapper.java
BluetoothGattCharacteristic.java
BluetoothGattDescriptor.java
BluetoothGatt.java
BluetoothGattServerCallback.java
BluetoothGattServer.java
BluetoothGattService.java
BluetoothInputDevice.java
BluetoothInputStream.java
BluetoothManager.java
BluetoothProfile.java
IBluetooth.aidl
IBluetoothCallback.aidl
IBluetoothGatt.aidl
IBluetoothGattCallback.aidl
IBluetoothGattServerCallback.aidl
IBluetoothInputDevice.aidl
IBluetoothManager.aidl
IBluetoothManagerCallback.aidl
IBluetoothProfileServiceConnection.aidl
IBluetoothStateChangeCallback.aidl
- le
AdvertiseCallback.java
AdvertiseData.aidl
AdvertiseData.java
AdvertiseSettings.aidl
AdvertiseSettings.java
BluetoothLeAdvertiser.java
BluetoothLeScanner.java
BluetoothLeUtils.java
ResultStorageDescriptor.aidl
ResultStorageDescriptor.java
ScanCallback.java
ScanFilter.aidl
ScanFilter.java
ScanRecord.java
ScanResult.aidl
ScanResult.java
ScanSettings.aidl
ScanSettings.java
三、 Bluetooth 的服务应用
packages/apps/Bluetooth/src/com/android/bluetooth
蓝牙btservice,gatt, hid等实现。蓝牙传输及配对等实现。
编译生成Bluetooth.apk。依赖: libbluetooth_jni.so, bluetooth.default.so
LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
LOCAL_REQUIRED_MODULES := bluetooth.default
文件示例:
- btservice:
AdapterApp.java
AdapterService.java
AdapterState.java
BondStateMachine.java
JniCallbacks.java - gatt:
AdvertiseManager.java
AdvertiseClient.java
GattService.java
ScanClient.java
ScanManager.java - hid:
HidService.java
四、 Bluetooth 的JNI接口
packages/apps/Bluetooth/jni/
主要是为Bluetooth的JAVA类提供一些底层API支持(C++实现)。如gatt等。
编译完成后生成libbluetooth_jni.so,供Bluetooth.apk使用。
文件示例:
- com_android_bluetooth_btservice_AdapterService.cpp
- com_android_bluetooth_hid.cpp
- com_android_bluetooth_gatt.cpp
五、 Bluetooth的协议栈支持
external/bluetooth/bluedroid/
提供蓝牙协议栈支持,android主要使用Bluedroid协议栈。
文件示例:
external\bluetooth\bluedroid:
-
bta: 编译生成libbt-brcm_bta.so
- gatt
bta_gattc_act.c
bta_gattc_api.c
bta_gattc_cache.c
bta_gattc_ci.c
bta_gattc_main.c - hh
bta_hh_act.c
bta_hh_api.c
bta_hh_cfg.c
bta_hh_le.c
bta_hh_main.c
- gatt
-
btif: 源文件在main中被编译
- co
bta_dm_co.c
bta_gattc_co.c
bta_gatts_co.c
bta_hh_co.c - src
bluetooth.c: // HAL,生成bluetooth.defualt.so,btif调用主入口
btif_config.c
btif_core.c
btif_dm.c
btif_gatt.c
btif_gatt_client.c
btif_hh.c
btif_sm.c
- co
-
gki: 编译生成libbt-brcm_gki.so
-
hci: 编译生成libbt-hci.so
bt_hci_bdroid.c: hci主入口
btsnoop.c
hci_h4.c
userial.c
vendor.c:打开libbt-vendor.so -
main:编译生成bluetooth.defualt.so
bte_conf.c
bte_init.c
bte_logmsg.c
bte_main.c编译生成bluetooth.defualt.so,包含所有btif的源码,
使用了libbt-brcm_bta,libbt-brcm_gki.so, libbt-brcm_stack.so, libbt-hci.so, libbt-utis.so, 依赖bt_stack.conf,libbt-vendor.so -
LOCAL_STATIC_LIBRARIES :=
libbt-brcm_bta
libbt-brcm_gki
libbt-brcm_stack
libbt-hci
libbt-utils \ -
LOCAL_REQUIRED_MODULES :=
auto_pair_devlist.conf
bt_did.conf
bt_stack.conf
libbt-vendor -
stack: 编译生成libbt-brcm_stack.so
- btm
btm_acl.c
btm_ble_addr.c
btm_ble_bgconn.c
btm_ble.c
btm_ble_gap.c
btm_inq.c
btm_main.c
btm_sec.c - btu
btu_hcif.c
btu_init.c
btu_task.c - gap
gap_api.c
gap_ble.c
gap_conn.c - gatt
att_protocol.c
gatt_api.c
gatt_attr.c
gatt_auth.c
gatt_cl.c
gatt_db.c
gatt_main.c
gatt_sr.c - hcic
hciblecmds.c
hcicmds.c - hid
hidh_api.c
hidh_conn.c - l2cap
l2c_api.c
l2c_ble.c
l2c_int.h
l2c_link.c
l2c_main.c - smp
smp_act.c
smp_api.c
smp_keys.c
smp_l2c.c
smp_main.c
- btm
-
utils:编译生成libbt-utils.so
六、Bluetooth 硬件
hardware/libhardware/include/* (添加和蓝牙相关的头文件)
hardware/broadcom/libbt :编译生成libbt-vendor.so
bt_vendor_brcm.c
conf.c
hardware.c
upio.c
userial_vendor.c
hardware/qcom/bt/libbt-vendor:编译生成libbt-vendor.so
bt_vendor_qcom.c
hardware.c
userial_vendor.c
注意:根据自己模组选择对应的厂家
七、Bluetooth的kernel层
kernel\drivers\bluetooth*
kernel\net\bluetooth*
linux系统上Bluetooth的核心代码,包括驱动