diff --git a/docs/image/dsoftbus/dsoftbus_architecture.png b/docs/image/dsoftbus/dsoftbus_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..779a25d29855d22c015284a549943e34645e4fcd Binary files /dev/null and b/docs/image/dsoftbus/dsoftbus_architecture.png differ diff --git a/docs/image/dsoftbus/dsoftbus_networking.png b/docs/image/dsoftbus/dsoftbus_networking.png new file mode 100644 index 0000000000000000000000000000000000000000..3de13275f3be67f6b91dd97fb9b42c5e12910ea6 Binary files /dev/null and b/docs/image/dsoftbus/dsoftbus_networking.png differ diff --git a/docs/source/features/distributed_soft_bus.rst b/docs/source/features/distributed_soft_bus.rst index 2cd6e685c69cd667dfe283921743675d1fe277a2..4a5ba4e9b696b9c2d902ffb240676d91e1292edf 100644 --- a/docs/source/features/distributed_soft_bus.rst +++ b/docs/source/features/distributed_soft_bus.rst @@ -1,4 +1,85 @@ .. _distributed_soft_bus: 分布式软总线 -############# \ No newline at end of file +############# + +特性介绍 +************** + +**背景** +openEuler秉承着打造“数字化基础设施操作系统”的愿景,为促进与OpenHarmony生态的合作与互通,实现端边领域的互通和协同,首次在嵌入式领域引入分布式软总线技术。 + +分布式软总线是OpenHarmony社区开源的分布式设备通信基座,为设备之间的互通互联提供统一的分布式协同能力,实现设备无感发现和高效传输。 + +OpenHarmony主要面向强交互等需求的智能终端、物联网终端和工业终端。openEuler主要面向有高可靠、高性能等需求的服务器、边缘计算、云和嵌入式设备,二者各有侧重。通过以分布式软总线为代表的技术进行生态互通,以期实现“1+1>2”的效果,支撑社区用户开拓更广阔的行业空间。 + +**架构** +软总线的主要架构如下: +.. fugure:: ../../image/dsoftbus/dsoftbus_architecture.png + +软总线主体功能分为发现、组网、连接和传输四个基本模块,实现: +即插即用:快速便捷发现周边设备 +自由流转:各设备间自组网,任意建立业务连接,实现自由通信 +高效传输:通过wifi、蓝牙设备下软硬件协同最大化发挥硬件传输性能 + +软总线南向支持标准以太网通信,同时后续可持续拓展wifi、蓝牙等多种通信方式。并为北向的分布式应用提供统一的API接口,屏蔽底层通信机制。 + +软总线依赖于设备认证、IPC、日志和系统参数(SN号)等周边模块,嵌入式系统中将这些依赖模块进行了样板性质的替换,以实现软总线基本功能。实际的周边模块功能实现,还需要用户根据实际业务场景进行丰富和替换,以拓展软总线能力。 + +应用指南 +************** + +**部署示意** +软总线支持局域网内多设备部署,设备间通过以太网通信。单设备上分为server和client,二者通过IPC模块进行交互。 + +.. fugure:: ../../image/dsoftbus/dsoftbus_networking.png + +注意:当前IPC模块和SN号等系统参数,嵌入式版本提供的仅为参考模板,还无法支持多节点和多client部署。用户可根据实际业务场景进行IPC模块和SN号系统参数进行功能丰富,以拓展软总线部署能力。 + +**服务端启动** +服务端主程序为softbus_server_main,执行该主程序既可拉起软总线服务端。 +.. code-block:: console + + openeuler ~ # softbus_server_main >log.file & + +当服务端被拉起时,会主动通过名为ethX的网络设备进行coap广播,若探测到对端设备存在则会启动自组网。 + +**客户端API** +头文件在sdk和initrd中均存放在/usr/include/dsoftbus/下,其中: +1.discovery_service.h:发现模块头文件,支持应用主动探测和发布的API + a.PublishService:发布特定服务能力 + b.UnPublishService:取消发布特定服务能力 + c.StartDiscovery:订阅/探测特定服务能力 + d.StopDiscovery:取消订阅特性服务能力 +其中服务能力通过g_capbilityMap数组定义,用户若新增能力需要自定义修改该数组,并重新编译软总线服务端和客户端程序来生效。 +2.softbus_bus_center.h:组网模块头文件,支持获取组网内设备信息API + a.GetAllNodeDeviceInfo:获取当前组网内所有节点信息 +3.session.h:连接/传输模块头文件,支持创建session和数据传输API + a.CreateSessionServer:创建session服务端 + b.RemoveSessionServer:移除session服务端 + c.OpenSession:创建到对端的传输连接(同时依赖于本端和对端提前创建的SessionServer) + d.CloseSession:断开传输连接 + e.SendBytes:根据建好的连接ID,进行数据传输。 + +各API参数详见头文件描述。 + +编译指导 +************** + +编译依托于embedded版本发布的容器镜像,请参考“openEuler Embedded容器构建指导”章节进行容器环境准备。 + +1)下载脚本所在仓库(例如下载到src/yocto-meta-openeuler目录下) + | ``git clone https://gitee.com/openeuler/yocto-meta-openeuler.git -b openEuler-22.03-LTS -v src/yocto-meta-openeuler`` + +2)执行下载脚本 + | 下载最新软总线代码: ``sh src/yocto-meta-openeuler/scripts/download_code.sh dsoftbus`` + | 代码默认下载到与yocto-meta-openeuler同级别的路径,如需修改软总线或者其依赖的模块代码可到对应路径下查找dsoftbus_standard和yocto-embedded-tools仓库进行对应修改。 + +3)编译编译脚本 + | 编译最新软总线代码: ``sh src/yocto-meta-openeuler/scripts/compile.sh dsoftbus`` + | 编译工作目录名为“dsoftbus_build”,编译生成件目录名为“dsoftbus_output”,二者均默认与yocto-meta-openeuler在同级别路径。 + +限制约束 +************** +1.仅支持局域网下的coap发现。wifi/ble等功能在后续版本中持续支持。 +2.目前提供的IPC、SN号等软总线的依赖模块均为样例,仅支持双设备节点部署,client-server一对一部署的能力。期待后续与社区伙伴,根据实际场景共同对这些依赖模块进行实例化。 \ No newline at end of file