OpenHarmony 4.0蓝牙代码结构简析 原创

深开鸿
发布于 2024-1-19 09:56
浏览
0收藏

作者:石悌君

前言

OpenHarmony 4.0上蓝牙仓和目录结构进行一次较大整改,本文基于4.0以上版本对蓝牙代码进行分析,便于读者快速了解和学习OpenHarmony蓝牙模块

代码仓和目录结构

当前蓝牙完整的代码涉及多个代码仓

代码路径 说明
应用接口 https://gitee.com/openharmony/interface_sdk-js/tree/master/api 当前所有应用层接口统一归并到interface仓;api 10中蓝牙接口按照profile拆分了多个d.ts文件
框架层 https://gitee.com/openharmony/communication_bluetooth 该仓之前包含框架层和系统服务层代码;架构拆分后只保留框架层代码
系统服务层 https://gitee.com/openharmony/communication_bluetooth_service
驱动 https://gitee.com/openharmony/drivers_peripheral/bluetooth IDL模式,蓝牙驱动接口实现;<br/>接口定义在https://gitee.com/openharmony/drivers_interface/bluetooth;<br/>完整的代码还应该包括vendor(蓝牙芯片)代码,如dayu200的vendor代码在https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568

系统服务层代码仓目录相对较多,目录划分原则和功能描述如下

OpenHarmony 4.0蓝牙代码结构简析-鸿蒙开发者社区

架构及进程部署

OpenHarmony 4.0蓝牙代码结构简析-鸿蒙开发者社区

1、蓝牙模块按照OpenHarmony系统架构分层原则进行分层

2、框架层分为JSAPI和NativeAPI,JSAPI用于用户APP调用;NativeAPI生成btframework.so,供其它系统服务(net_manager…)调用;部署在调用者进程

3、系统服务层内部分为5层,分别对应目录结构中描述的5个目录;部署在蓝牙系统服务进程

4、驱动进程中部署Hdi和Vendor模块;和蓝牙芯片对接,在蓝牙系统服务进程和蓝牙芯片间处理报文收发

版本间差异

1、原来蓝牙框架层和系统服务层都在bluetooth代码仓,现在拆分成了bluetooth和bluetooth_service两个仓;主要理念是考虑可以方便替换或升级蓝牙系统服务层的实现;比如厂商可以使用私有的蓝牙协议实现,只需要框架层接口保持一致即可

2、为了减少应用程序的运行内存和程序加载速度,JSAPI按照profile拆分出了多个so;应用程序可以按需最小引用蓝牙模块功能

总结

本文基于OpenHarmony 4.0版本对蓝牙代码架构/目录分层原则做了简单分析,同时分析了4.0版本的重要改动点

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
1
收藏
回复
举报
回复
    相关推荐