【鸿蒙南向开发】OpenHarmony 4.0 分布式软总线解析:设备发现与传输

51 篇文章 0 订阅
51 篇文章 0 订阅

前言

OpenHarmony 的分布式软总线子系统为 OpenHarmony 系统提供的通信相关的能力,包括:WLAN 服务能力、蓝牙服务能力、软总线、进程间通信 RPC(Remote Procedure Call)等通信能力。

其中主要包括:

●WLAN 服务:为用户提供 WLAN 基础功能、P2P(peer-to-peer)功能和 WLAN 消息通知的相应服务,让应用可以通过 WLAN 和其他设备互联互通。

●蓝牙服务:为应用提供传统蓝牙以及低功耗蓝牙相关功能和服务。

●软总线:为应用和系统提供近场设备间分布式通信的能力,提供不区分通信方式的设备发现,连接,组网和传输功能。

●进程间通信:提供不区分设备内或设备间的进程间通信能力。
下面我们通过阅读 OpenHarmony 4.0 的源码,来解读一下 OpenHarmony 软总线当前的一个实现情况。

设备发现与传输模块

代码框架分析
分布式软总线组件主要代码目录结构如下:/foundation/communication/dsoftbus

├── adapter                # 操作系统适配层代码
├── core                   # 核心代码
│   ├── common          # 通用代码
│   ├── authentication      # 设备认证机制和设备知识库管理代码
│   ├── bus_center         # 组网代码
│   ├── connection         # 连接代码
│   ├── discovery          # 基于coap协议的设备发现代码
│   ├── transmission        # 传输代码
│   └── frame              # 框架代码
├── sdk                     # 运行业务进程代码
│   ├── bus_center          # 组网代码
│   ├── discovery           # 发现代码
│   ├── transmission         # 传输代码
│   └── frame               # 框架代码
└── components               # 依赖组件代码

其中 interfaces 是提高给外接的接口,比较重要。

在这里插入图片描述

softbus_bus_center.h: 声明软总线组网的函数和常量。函数可用于执行以下操作:在 LNN 中添加设备和从 LNN 中删除设备,监听在线设备、离线和信息更改事件。

重要函数说明:

●JoinLNN: 此函数将当前设备加入指定设备所在的 LNN。

●JoinMetaNode: 此函数将当前设备加入指定设备所在的 MetaNode。

●LeaveLNN: 此函数将当前设备从 LNN 中移除。

●LeaveMetaNode: 此函数将当前设备从 MetaNode 中移除。

●RegNodeDeviceStateCb: 此函数注册设备状态更改的回调。

●PubLNN: 此函数在 LNN 上发布服务。

●SubLNN: 此函数在 LNN 上订阅服务。

●softbus_common.h: 它定义了一些用于通信和服务管理的常量和结构体,例如:网络 ID 长度等常量。

●ConnectionAddr 结构体定义了设备在 LNN(Logical Network)中的地址信息。它包括地址类型、连接地址和 peerUid 字段。地址类型指示了地址的类型,例如 WLAN、BR 或 BLE。连接地址包含设备的 MAC 地址、UDID 哈希值或 IP 地址。peerUid 字段是设备的 account hash code。

●DiscoverMode 枚举定义了服务发布的模式。它包括被动模式(PASSIVE)和主动模式(ACTIVE)。被动模式表示设备等待其他设备发现它。主动模式表示设备主动搜索其他设备。

●ExchangeMedium 枚举定义了服务发布的介质。它包括自动选择(AUTO)、BLE、WLAN、USB 和 HiLink。AUTO 表示所有可用的介质都会被调用。

●ExchangeFreq 枚举定义了服务发布的频率。它包括低频(LOW)、中频(MID)、高频(HIGH)和超高频(SUPER_HIGH)。

●DataBitMap 枚举定义了设备支持的功能。它包括 MeeTime、Profile Capability、HomevisionPic Capability、CastPlus、AA Capability、DVKIT Capability、DDMP Capability、Osd Capability 和 Share Capability。

●PublishInfo 结构体定义了服务发布的信息。它包括服务 ID、发布模式、发布介质、发布频率、发布能力、能力数据、最大能力数据长度和是否主动范围。

●SubscribeInfo 结构体定义了服务订阅的信息。它包括服务 ID、订阅模式、订阅介质、订阅频率、相同账户、唤醒远程设备、订阅能力、能力数据和最大能力数据长度。

●ModeCycle 枚举定义了单个心跳周期参数。它包括高频周期(HIGH_FREQ_CYCLE)、中频周期(MID_FREQ_CYCLE)和低频周期(LOW_FREQ_CYCLE)。

●ModeDuration 枚举定义了心跳保持活跃参数的持续时间。它包括默认持续时间(DEFAULT_DURATION)、正常持续时间(NORMAL_DURATION)和长持续时间(LONG_DURATION)。

●DeviceType 枚举定义了设备类型。它包括智能音箱(SMART_SPEAKER)、PC、笔记本电脑(LAPTOP)、智能手机(SMART_PHONE)、平板电脑(SMART_PAD)、智能手表(SMART_WATCH)、智能汽车(SMART_CAR)、儿童手表(CHILDREN_WATCH)和智能电视(SMART_TV)。

●DeviceInfo 结构体定义了设备信息。它包括设备 ID、帐户哈希码、设备类型、设备名称、在线状态、可用连接数、连接信息、能力位图数组、自定义数据和距离。

●InnerDeviceInfoAddtions 结构体定义了内部使用的设备附加信息。它包括发现设备的介质。

discovery_service.h: 用于定义发现服务相关的函数和常量。发现服务用于发现和连接附近的设备。该头文件提供两种主要功能:发布服务和发现服务。

●PublishService 函数用于发布服务。发布服务使得其他设备可以发现该服务。

●UnPublishService 函数用于停止发布服务。停止发布服务使得其他设备无法发现该服务。

●StartDiscovery 函数用于开始发现服务。发现服务用于发现附近的设备和获取其信息。

●StopDiscovery 函数用于停止发现服务。停止发现服务使得设备不再发现其他设备。

session.h: 声明统一的数据传输接口。该文件提供数据传输能力,包括创建和删除会话服务器、打开和关闭会话、接收数据和查询基本会话信息。在发现多个附近的设备并联网后,这些接口可用于跨设备传输数据。

●CreateSessionServer 和 RemoveSessionServer 用于创建和删除会话服务器。会话服务器是负责管理会话的进程。

●OpenSession 用于与远程设备打开会话。会话 ID 用于标识会话。

●CloseSession 用于与远程设备关闭会话。

●SendBytes、SendMessage 和 SendStream 用于向会话发送数据。

●GetMySessionName、GetPeerSessionName 和 GetPeerDeviceId 用于获取会话相关信息。

●GetSessionSide 用于获取会话端。

●SetFileReceiveListener、SetFileSendListener 和 SendFile 用于发送和接收文件。

通过包含这几个头文件则可以调用软总线的功能。

写在最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)文档用来跟着学习是非常有必要的。

这份鸿蒙(HarmonyOS NEXT)文档包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习文档能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习文档

鸿蒙(HarmonyOS NEXT)5.0最新学习路线

在这里插入图片描述

有了路线图,怎么能没有学习文档呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习文档

《鸿蒙 (OpenHarmony)开发入门教学视频》

在这里插入图片描述

《鸿蒙生态应用开发V3.0白皮书》

在这里插入图片描述

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

在这里插入图片描述

《鸿蒙开发基础》

●ArkTS语言
●安装DevEco Studio
●运用你的第一个ArkTS应用
●ArkUI声明式UI开发
.……
在这里插入图片描述

《鸿蒙开发进阶》

●Stage模型入门
●网络管理
●数据管理
●电话服务
●分布式应用开发
●通知与窗口管理
●多媒体技术
●安全技能
●任务管理
●WebGL
●国际化开发
●应用测试
●DFX面向未来设计
●鸿蒙系统移植和裁剪定制
……
在这里插入图片描述

《鸿蒙进阶实战》

●ArkTS实践
●UIAbility应用
●网络案例
……
在这里插入图片描述

获取以上完整鸿蒙HarmonyOS学习文档,请点击→纯血版全套鸿蒙HarmonyOS学习文档

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值