赞
踩
目录
Android 8[引入HIDL] 开始蓝牙的架构就没怎么变化了。
上图是google 关于蓝牙架构的介绍哈,资料参考 蓝牙概览
处于应用框架级别的是应用代码,它利用 android.bluetooth API 与蓝牙硬件进行交互。此代码在内部通过 Binder IPC 机制调用蓝牙进程。
蓝牙系统服务(位于 packages/apps/Bluetooth
中)被打包为 Android 应用,并在 Android 框架层实现蓝牙服务和配置文件。该应用通过 JNI 调用 HAL 层。
与 android.bluetooth 相关联的 JNI 代码位于 packages/apps/Bluetooth/jni
中。当发生特定蓝牙操作时(例如发现设备时),JNI 代码会调用 HAL 层并从 HAL 接收回调。
硬件抽象层定义了 android.bluetooth API 和蓝牙进程会调用的标准接口,并且您必须实现该接口才能使蓝牙硬件正常工作。蓝牙 HAL 的头文件是 hardware/libhardware/include/hardware/bluetooth.h
。另外,请查看所有 hardware/libhardware/include/hardware/bt_*.h
文件。
系统为您提供了默认蓝牙堆栈(位于 system/bt
中)。该堆栈会实现常规蓝牙 HAL,并通过扩展程序和更改配置对其进行自定义。
要添加自定义扩展程序和用于跟踪的 HCI 层,您可以创建一个 libbt-vendor 模块并指定这些组件。
上面是google定义的模块结构,研发人员习惯从代码层次来定义架构
1. APP包括TVSettings APK和 Bluetooth APK
2. Framwork 包括为标准的android API,被系统app调用;
3. JNI为Bluetooth APK提供操作协议栈控制底层硬件的接口;
4. HAL包括
4.1 HIDL框架为Android原生提供的HAL框架;
4.2 Bluedroid 为蓝牙协议栈
4.3 Vendor HAL为蓝牙芯片厂商提供的操作驱动的接口
5. Driver 包括蓝牙驱动,硬件接口(蓝牙和主CPU硬件连接)驱动
6. Hardware同样对应蓝牙芯片和蓝牙和主CPU连接硬件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。