OpenHarmony蓝牙子系统介绍

1 蓝牙概述


蓝牙是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电
脑、相关外设等众多具有蓝牙模块的设备之间进行短距离无线信息交换,使得数据传输变得更加迅速高效。它是爱
立信、IBM等5家公司在1998年联合推出的一项无线通信技术,随后成立的蓝牙技术特殊兴趣组织(SIG)来负责该
技术的开发和技术协议的制定,如今全世界已有1800多家公司加盟该组织。
蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.15协议。作为一种的短距离无线
通信技术,在现在的生活中,正扮演着极其重要的角色。当然,在操作系统中,蓝牙模块正扮演着必不可少的基础
功能。

2 蓝牙架构图

 在蓝牙技术中,有Application,Host和Controller三个角色。这三个角色可以位于不同的设备,也可以位于同
一个设备上。在一个系统中,Host只有一个,但Controller可以一个也可以有多个。
 Application:由不同的Profiles来限定,蓝牙系统中的应用程序互操作性是由profiles完成的。profiles定义了蓝牙系
统中从PHY到L2CAP以及核心规范之外的任何其他协议所需的每层功能和特性。配置文件定义了层之间的垂直交互
以及设备之间特定层的点对点交互。此外,应用程序的行为和数据格式也由profiles定义。

Host:负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让Bluetooth
Application更为方便的使用。
Controller:负责定义RF、Baseband等底层的规范,并在这之上抽象出用于通信的逻辑链路。

 

3  OpenHarmony蓝牙子系统代码架构图


下图为OpenHamony蓝牙子系统的代码结构,图中可以看到从上层到底层的整个过程。

 注:
1.JS API 支持lite以及standard系统,支持L0-L5
2.C interface 需要跨L0-L2通用,尤其外部子系统模块的需求
3.C++ interface 支持L2+,只存在standard系统, lite系统不支持
4.模块特性尽可能的模块化,可动态裁剪
5.要支持竞争力特性的定制, 扩展接口尽可能的通用,即支持L0-L5
6.支持其他协议栈的接入


4 OpenHarmony蓝牙子系统代码目录


bluetooth 框架层的代码目录结构如下: 

 interfaces,负责向上层应用程序提供相应的功能接口,使应用开发者实现具体蓝牙业务功能,目前提供c/c++接口。
services负责interfaces接口的实现。系统提供C/C++接口定义及服务和协议栈的代码,目前提供的只有BLE相关的接口,
包括BLE设备GATT相关的操作,以及BLE广播、扫描等功能,其它A2DP,AVRCP,HFP等相关接口在后续增量发布。
services部分主要是通过bluetooth_standard目录下的相关模块来实现interfaces接口。相关的模块有common、hardware、
external、etc、ipc、stack、service、server。模块间利用c++的相关特性,完成了各自的分层功能,
最终实现了蓝牙不同协议的场景功能。

代码架构如下:

  

5 OpenHarmony蓝牙子系统协议


蓝牙相关协议栈在stack目录下按照目录进行协议分类,如下:

 

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐