OH分布式软总线
-
概述
- 简介
- 分布式软总线的特征
- 官方说明
- 目录结构与代码说明
-
分布式软总线使用
- 使用说明
- 接口说明
-
发现
- 发现的接口
- C++示例说明
-
组网
- 组网的接口
- C++示例说明
-
传输
- 软总线传输关键流程
- 传输的接口
- 注意事项
一、概述
1.1 简介
分布式软总线能做什么?
1.1 通过共享一个局域网(wifi或蓝牙),可以发现设备。
通过设备名等关键字可以查找到在共享的网络中所有设备,并进行通信。关键是不需要预告知晓对方设备的IP地址与端口。
1.2 支持消息、字节、流、文件的数据传输能力。
实际应用中,可以将文字、图片、文件或音视频流进行传输。
1.3 支持富设备、小型设备、轻量设备。
实际应用中,可以做到跨设备间使用。笔者在L0与L2、L2与L2等两类设备间测试通过。
现实中多设备间通信方式多种多样(wifi、NFC、蓝牙等),不同的通信方式使用差异大,导致通信问题多;同时还面临设备间通信链路的整合共享和冲突无法处理等挑战。分布式软总线实现近场设备间统一的分布式通信管理能力,提供不区分链路的设备间发现连接、组网和传输能力,主要功能如下:
- 发现连接:提供基于wifi、蓝牙等通信方式的设备发现连接能力
- 设备组网:提供统一的设备组网和拓扑管理能力,为数据传输提供已组网设备信息
typedef enum {
/* Passive 主动*/
DISCOVER_MODE_PASSIVE = 0x55,
//lite device support the passive mode only.
/* Proactive 被动*/
DISCOVER_MODE_ACTIVE = 0xAA
} DiscoverMode;
//媒介
typedef enum {
/* Automatic medium selection */
AUTO = 0,
/* Bluetooth*/
BLE = 1,
/* wifi*/
COAP = 2,
/* USB*/
USB = 3,
/* HiLink*/
COAP1 = 4,
MEDIUM_BUTT
} ExchangeMedium;
-
数据传输:提供数据传输通道,支持消息、字节数据传输等能力
业务方通过使用分布式软总线提供API实现设备间的高速通信,不用关心通信细节,进而实现业务平台的高效部署与运行能力。
//设备类型 DeviceType
typedef enum {
/* Smart speaker */
SMART_SPEAKER = 0x00,
/* PC */
DESKTOP_PC,
/* LAPTOP */
LAPTOP,
/* Mobile phone */
SMART_PHONE,
/* Table */
SMART_PAD,
/* Smart watch */
SMART_WATCH,
/* Smart car */
SMART_CAR,
/* Kids' watch */
CHILDREN_WATCH,
/* Smart TV */
SMART_TV,
} DeviceType;
typedef enum {
CONNECT_ADDR_WLAN = 0, /**< WLAN wifi(无线局域网)*/
CONNECT_ADDR_BR= 0, /**< BR 基础速率*/
CONNECT_ADDR_BLE = 0, /**< BLE 低功耗蓝牙*/
CONNECT_ADDR_ETH = 0, /**< Ethernet 以太网*/
CONNECT_ADDR_MAX = 0, /**< Invalid type*/
} ConnectionAddrType;
1.2 分布式软总线的特征
- 自动发现/即连即用
- 高带宽
- 低时延
- 高可靠
- 开放/标准
软总线提出了自动发现的概念,实现用户零等待的自发现体验,附件同账号的设备自动发现无需等待。
多设备互联后的组技术:软总线组网-异构网络组网,比如:蓝牙-wifi。
设备上线后会向网络层注册,同时网络层会与设备建立通道连接,实时检测设备的变换。
网络层负责管理设备的上线下线变换,设备间可以监听自己感兴趣的设备,设备上线后可以立即与其建立连接,实现零等待。
软总线可以自动构建一个逻辑全连接网络,用户或者业务开发者无需关心组网方式与物理协议。对于软件开发者来说软总线异构组网可以大大降低开发成本。
1.3 官方说明
//foundation/communication/dsoftbus/README_zh.md
1.4 目录结构与代码说明
对照代码说明
二、分布式软总线使用
2.1 使用说明
- 使用跨设备通信时,必须添加权限ohos.permission.DISTRIBUTED_DATASYNC,该权限类型为 _*dangerous*_ 。
L2与L1设备通过检查softbus_trans_permission.json文件判断应用的传输权限,L0不用设置权限文章来源:https://www.toymoban.com/news/detail-639928.html
- 设备主动发现手机时,手机需打开超级终端的允许被“附近设备”发现开关(设置-超级终端-我的设备-允许被发现-附近设备),才能被设备发现。
- 包含头文件
# C头文件
//foundation/communication/dsoftbus/interfaces/kits/discovery/discovery_service.h
#C++头文件
//foundation/communication/dsoftbus/sdk/discovery/ipc/include/disc_server_proxy.h
- 包含依赖包
# C依赖包
deps = [
"//foundation/communication/dsoftbus/adapter:softbus_adapter",
"//foundation/communication/dsoftbus/core/common:softbus_utils",
]
# C++依赖包
deps = [
"//foundation/communication/dsoftbus/sdk:softbus_client",
"//foundation/communication/dsoftbus/core/common:softbus_server",
]
2.2 接口说明
分布式软总线接口分为三类文章来源地址https://www.toymoban.com/news/detail-639928.html
- 发现
- 组网
- 传输
2.3 发现
2.3.1 发现接口
- C接口
//foundation/communication/dsoftbus/interfaces/kits/discovery/discovery_service.h
// 发布回调
typedef struct {
void (*OnPublishSuccess)(int publishId); //发布成功时回调
void (*OnPublishFail)(int publishId, PublishFailReason reason);//发布失败时回调
} IPublishCallback;
// 发布服务
int PublishService(const char *pkgName, const PublishInfo *info, const IPublishCallback *cb);
// 注销服务
int UnPublishService(const char
到了这里,关于Openharmony重要特性之一浅析分布式软总线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!