分布式软总线是 OpenHarmony 的重要能力,设计目标是实现多设备间的通信方式。分布式软总线是分布式硬件和分布式软总线的重要基础,分布式软总线提供一种不区分链路的设备间发现、组网和传输的能力:
- 发现:应用 WiFi,蓝牙相关协议实现设备发现能力;
- 组网:提供统一的设备组网和拓扑管理能力;
- 传输:提供数据传输能力,支持消息、字节、流,文件的数据传输能力;
概述
在 OpenHarmony 的源码里和系统功能相关的部分大多都放在 foundation 这个文件夹里,而通讯相关的部分则是在 communication 这个文件夹内。我们本篇要分析的软总线功能就是在 foundation/communication/dsoftbus 路径下,具体目录结构如下:
.
├── adapter //适配层
│ ├── BUILD.gn
│ ├── common //适配层管理,网络适配,协议适配等
│ └── default_config //适配层配置
├── BUILD.gn
├── bundle.json
├── check_sub_module.py
├── components //依赖组件
│ ├── mbedtls //开源ssl库,在三方库里
│ └── nstackx //tcp/ip协议管理模块
├── config.py
├── core //核心层
│ ├── adapter //适配接口
│ ├── authentication //认证接口
│ ├── BUILD.gn
│ ├── bus_center //组网代码
│ ├── common //通用代码
│ ├── connection //连接代码
│ ├── discovery //发现代码
│ ├── frame //框架代码
│ └── transmission //传输代码
├── dsoftbus.gni
├── figures
│ ├── dsoftbus-architecture.png
│ └── dsoftbus-architecture_zh.png
├── hisysevent.yaml
├── interfaces //对外头文件
│ ├── inner_kits
│ └── kits
├── Kconfig
├── LICENSE
├── OAT.xml
├── README.md
├── README_zh.md
├── sdk //对外应用sdk
│ ├── BUILD.gn
│ ├── bus_center //组网
│ ├── discovery //发现
│ ├── frame //框架
│ └── transmission //传输
├── tests
│ ├── adapter
│ ├── BUILD.gn
│ ├── core
│ ├── include
│ └── sdk
└── tools //工具
├── BUILD.gn
└── device_info
- 约束:
- 设备发现需要在同二层网络中(即同交换机,同 WiFi 路由或者近场通信范围内)
- 组网前需要有设备认证过程(绑定)
架构简析
- 根据目录结构和内部文件及编译框架总结架构如下:
- SDK:为其他业务提供软总线的能力接口,如发现设备,发布服务,设备连接,远端设备信息获取,时间同步,注册回调接收设备上下线消