Android Bluetooth源码结构

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
  • 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
  • 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
  • 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的核心代码,包括驱动

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值