当前位置:   article > 正文

Openharmony重要特性之一浅析分布式软总线

分布式软总线

OH分布式软总线

一、概述

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 数据传输:提供数据传输通道,支持消息、字节数据传输等能力

    业务方通过使用分布式软总线提供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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

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不用设置权限

  • 设备主动发现手机时,手机需打开超级终端的允许被“附近设备”发现开关(设置-超级终端-我的设备-允许被发现-附近设备),才能被设备发现。
  • 包含头文件
# C头文件
//foundation/communication/dsoftbus/interfaces/kits/discovery/discovery_service.h
#C++头文件
//foundation/communication/dsoftbus/sdk/discovery/ipc/include/disc_server_proxy.h
  • 1
  • 2
  • 3
  • 4
  • 包含依赖包
# 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",
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.2 接口说明

分布式软总线接口分为三类

  • 发现
  • 组网
  • 传输

2.3 发现

2.3.1 发现接口
  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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号