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

Android Bluetooth源码结构相关推荐

  1. 【Android 系统开发】Android框架 与 源码结构

    一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...

  2. android源码结构

    android源码结构 Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编 ...

  3. android 系统源码分析

    获得Android源码后,我们来分析源码结构.源码的全部工程分为如下三个部分. ①Core Project:核心工程部分,这是建立Android系统的基础,保存在根目录的各个文件夹中. ②Extern ...

  4. Android系统源码目录及功能介绍

    Android的移植按如下流程:     1.android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     2.正确挂载文件系统,确保内核启动参数和 android 源代码 ...

  5. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

  6. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  7. Android ADB 源码分析(三)

    前言 之前分析的两篇文章 Android Adb 源码分析(一) 嵌入式Linux:Android root破解原理(二) 写完之后,都没有写到相关的实现代码,这篇文章写下ADB的通信流程的一些细节 ...

  8. Android Adb 源码分析

    扭起屁股得意洋洋 最近,我负责的项目因为临近量产,把之前的userdebug版本关闭,转成了user版本,增加selinux的权限,大家都洋溢在项目准备量产的兴奋和喜悦之中不能自拔 谁知,好景不长,u ...

  9. Webrtc之源码结构

    当把代码下载完,可以通过vs2017编译之后,特别兴奋,但是,当打开工程的时候,懵了.....看下图 再看工程项目 此刻的心情,,,,,低落到无语. 这位大神介绍了一下源码结构 https://blo ...

  10. 【Android SDM660源码分析】- 02 - UEFI XBL QcomChargerApp充电流程代码分析

    [Android SDM660源码分析]- 02 - UEFI XBL QcomChargerApp充电流程代码分析 一.加载 UEFI 默认应用程序 1.1 LaunchDefaultBDSApps ...

最新文章

  1. str字符串 encoding( ) 方法
  2. twiiq开发随笔(2)
  3. Vue2.x-03使用vue-cli搭建Vue开发环境
  4. ITK:处理3D图像的2D切片
  5. IntelliJ IDEA+Mysql connecter/j JDBC驱动连接
  6. java xml接口实例化_Spring简介及xml配置
  7. mysql二级缓存,mybatis的动态sql和二级缓存
  8. android 拼图课程设计,拼图游戏设计_课程设计报告.docx
  9. Window10环境下的Jupyter notebook安装与打开默认路径的修改
  10. 释放千行百业数据价值,华为云DAYU有一套
  11. android实操--练习2
  12. windows 域的安装方法
  13. linux 快捷键回复禁用,Linux 禁用Ctrl+Alt+Delete重启服务器操作
  14. 基于LQR的车辆LKA算法设计
  15. win2012R2无法打开匿名级安全令牌,安装.net 3.5
  16. Compose Modifier
  17. 0.1+0.2 为什么不等于0.3
  18. Hexo 搭建博客提交百度 sitemap 抓取失败
  19. 跟随艺术家林曦的脚步 学习“只生欢喜不生愁”的生活态度
  20. 通过爬虫获取第五人格游戏信息整理并分析(一)

热门文章

  1. QQ、微信、QQ浏览器UserAgent
  2. python实时曲线绘制_python画曲线
  3. C++ WA, 超时,爆栈错误总结
  4. 荣耀v20屏幕测试软件,测量原来可以这么简单 荣耀V20 AR测量功能体验
  5. 声学测试软件ios,只需要 iPhone 就能进行声学测量,AcoustiTools 用 AR 帮你解决大声场环境的听感问题...
  6. drupal 电商网站_为什么小型企业应该为电子商务网站选择Drupal
  7. 软件性能测试和可靠性测试
  8. 易基因|3文解读:微量样本甲基化测序在肿瘤中的应用
  9. 现场总线技术笔记——3、通用串行端口的数据通信(RS232、RS485)
  10. 我的科幻评论——《星船伞兵》:海因莱茵最经典又最不典型之作,平凡人类勇气与责任的赞歌