当前位置:   article > 正文

Android Bluetooth 架构_android 蓝牙框架

android 蓝牙框架

Android 蓝牙学习  @# Android 蓝牙


目录

Android 蓝牙学习  @# Android 蓝牙

1. 架构

1.1  应用框架

1.2 蓝牙系统服务

1.3 JNI

1.4 HAL

1.5 蓝牙堆栈

1.6 供应商扩展程序

2. 代码结构


1. 架构


Android  8[引入HIDL] 开始蓝牙的架构就没怎么变化了。

 

上图是google 关于蓝牙架构的介绍哈,资料参考  蓝牙概览

1.1  应用框架

处于应用框架级别的是应用代码,它利用 android.bluetooth API 与蓝牙硬件进行交互。此代码在内部通过 Binder IPC 机制调用蓝牙进程。

1.2 蓝牙系统服务

蓝牙系统服务(位于 packages/apps/Bluetooth 中)被打包为 Android 应用,并在 Android 框架层实现蓝牙服务和配置文件。该应用通过 JNI 调用 HAL 层。

1.3 JNI

与 android.bluetooth 相关联的 JNI 代码位于 packages/apps/Bluetooth/jni 中。当发生特定蓝牙操作时(例如发现设备时),JNI 代码会调用 HAL 层并从 HAL 接收回调。

1.4 HAL

硬件抽象层定义了 android.bluetooth API 和蓝牙进程会调用的标准接口,并且您必须实现该接口才能使蓝牙硬件正常工作。蓝牙 HAL 的头文件是 hardware/libhardware/include/hardware/bluetooth.h。另外,请查看所有 hardware/libhardware/include/hardware/bt_*.h 文件。

1.5 蓝牙堆栈

系统为您提供了默认蓝牙堆栈(位于 system/bt 中)。该堆栈会实现常规蓝牙 HAL,并通过扩展程序和更改配置对其进行自定义。

1.6 供应商扩展程序

要添加自定义扩展程序和用于跟踪的 HCI 层,您可以创建一个 libbt-vendor 模块并指定这些组件。

2. 代码结构


上面是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连接硬件

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/326552
推荐阅读
相关标签
  

闽ICP备14008679号