蓝牙系统驱动

作者: 傀儡世界 | 来源:发表于2017-03-14 20:51 被阅读64次

    蓝牙系统从上到下主要包括Jva框架中的Bluetooth类,Android适配库,BlueZ库,驱动程序和协议

    Paste_Image.png Paste_Image.png

    (1)BlueZ库
    libbluetooth.so,libbluedroid.so等库提供对用户空间蓝牙的支持,包含主机控制协议HCI以及其他内核实现协议的接口,实现了所有蓝牙应用模式Profile
    (2)蓝牙的JNI部分
    framework/base/core/jni/
    (3)java框架层
    frameworks/base/core/java/android/bluetooth
    frameworks/base/service/....
    (4)Bluetooth的适配库
    实现对蓝牙设备的管理

    蓝牙模块
    初始化蓝牙
    通过hciattach进行初始化蓝牙设备
    蓝牙服务
    init.rc配置

    低功耗蓝牙协议栈详解
    从android4.2版本开始,从BlueZ换成BlueDroid,4.3版本开始提供了蓝牙4.0BLE,讲解BLE基础知识
    基础

    Paste_Image.png

    API详解
    (1)本地蓝牙适配器设备
    framework/base/core/java/android/bluetooth/BluetoothAdapter.java
    发现其他蓝牙设备,查询匹配的设备集
    使用一个已知蓝牙地址初始化蓝牙设备BluetoothDevice
    创建一个能够监听其他设备通信的类BluetoothSocket
    (2)请求远程蓝牙设备
    framework/base/core/java/android/bluetooth/BluetoothDevice.java
    请求获取远程蓝牙设备的连接
    查询获取远程蓝牙设备的名称,地址,类和连接状态
    (3)实现客户端的低功耗蓝牙规范

    Android中的BlueDroid
    Android系统BlueDroid的架构
    Bluetooth Embedded System:实现BT(蓝牙)的核心功能
    Bluetooth Application Layer:用于与Android Framework交互

    Paste_Image.png

    Applicaiont Framework层分析
    实现源码:framework/base/core/java/android/bluetooth/
    实现BT service和各种profile
    BluetoothA2dp.java:connect会调用System Service层A2dpService.java
    Bluetooth System Service层
    实现源码:packages/app/Bluetooth
    A2dpService.java:connect会通过JNI调用到HAL层
    JNI层
    实现源码:packages/app/bluetooth/jni
    com_android_bluetooth_a2dp.cpp:connectA2dpNative
    HAL硬件抽象层
    定义Bluetooth APIs和BT process调用的标准接口
    BT HAL的头文件:hardware/libhardware/include/hardware/bluetooth.h bt_*.h

    相关文章

      网友评论

        本文标题:蓝牙系统驱动

        本文链接:https://www.haomeiwen.com/subject/vrsrgttx.html