赞
踩
分布式软总线能做什么?
1.1 通过共享一个局域网(wifi或蓝牙),可以发现设备。
通过设备名等关键字可以查找到在共享的网络中所有设备,并进行通信。关键是不需要预告知晓对方设备的IP地址与端口。
1.2 支持消息、字节、流、文件的数据传输能力。
实际应用中,可以将文字、图片、文件或音视频流进行传输。
1.3 支持富设备、小型设备、轻量设备。
实际应用中,可以做到跨设备间使用。笔者在L0与L2、L2与L2等两类设备间测试通过。
现实中多设备间通信方式多种多样(wifi、NFC、蓝牙等),不同的通信方式使用差异大,导致通信问题多;同时还面临设备间通信链路的整合共享和冲突无法处理等挑战。分布式软总线实现近场设备间统一的分布式通信管理能力,提供不区分链路的设备间发现连接、组网和传输能力,主要功能如下:
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;
软总线提出了自动发现的概念,实现用户零等待的自发现体验,附件同账号的设备自动发现无需等待。
多设备互联后的组技术:软总线组网-异构网络组网,比如:蓝牙-wifi。
设备上线后会向网络层注册,同时网络层会与设备建立通道连接,实时检测设备的变换。
网络层负责管理设备的上线下线变换,设备间可以监听自己感兴趣的设备,设备上线后可以立即与其建立连接,实现零等待。
软总线可以自动构建一个逻辑全连接网络,用户或者业务开发者无需关心组网方式与物理协议。对于软件开发者来说软总线异构组网可以大大降低开发成本。
//foundation/communication/dsoftbus/README_zh.md
对照代码说明
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
# 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",
]
分布式软总线接口分为三类
//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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。