From 3229782d49a3f026564b1f06e3e46937649cf0a4 Mon Sep 17 00:00:00 2001 From: "beiling.xie" Date: Thu, 31 Mar 2022 00:38:48 +0800 Subject: [PATCH] Add softbus Documentiation Signed-off-by: beiling.xie --- docs/image/dsoftbus/dsoftbus_architecture.png | Bin 0 -> 29368 bytes docs/image/dsoftbus/dsoftbus_networking.png | Bin 0 -> 26257 bytes docs/source/features/distributed_soft_bus.rst | 83 +++++++++++++++++- 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 docs/image/dsoftbus/dsoftbus_architecture.png create mode 100644 docs/image/dsoftbus/dsoftbus_networking.png diff --git a/docs/image/dsoftbus/dsoftbus_architecture.png b/docs/image/dsoftbus/dsoftbus_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..779a25d29855d22c015284a549943e34645e4fcd GIT binary patch literal 29368 zcmd43XH-*P^fnk&P-7R6u3|&FNE4(9Dk8mv9uSdGLkj`vs1yYO73sYRBqRYs4NXBn zfzTm92na|G0i}h`-1z&yYu0?2PqW^c$y$)yFKDS0ds>vAkZ0& zCl3ukprb?(h-u^m3-C^z>xe$^#Dp+VR|R3aco%?!WA+cUAAmrmv8VQIn1SPy?oZ4R zAP~m|#vfDrtu~MnLDdlb96E3ln zV)?3K)hlmnABBc}xwf1PcFIZMPCDgSec}0~$YUw0PDiqHZgqrp=I>3cNOmJuBFnf7TG>|AWy=2Vgk%4IJt42``L?>Zvye`r({-~7HH^A7G1-au9pg!E5vgR&NYTg!?!?5U-3kZ!R&XMQJ<_+IMG zPB2B`57oLxGqvlx1y-_ldAP+AF{3M_G*GwQdIa&i$88YKU*9m7=IxT(RGx9@YoGq? z?7`+`*gVrwg9v*?7+s9EB=dauypLml&-8ZN(1e*`zXr?x{_GC9cV&J2^b)DV>Ix|2 zJTQ*tH5yfvXIO6fb;R%k|2CFzdSbova{aD1-g5@Lmg;{C=tcPJFTqO|uGOQRsk=G5 z+Q{Cudkr!QI{v?_WV8Wn#Zh= z3#L5o{=xM)vLtN1#hwgGGor-iW+@_C<0>iHYU+}(v14R0>3!`&`G6^j2zI_@;V_*O z+i|DW&nSQMS|H@Z)fe3MK1+7v;n2fRYuzPq5Gb_gGzjzg2s!M!uD5^d`jwJQu9B51 zidE%Dj`!Z8wyyP#0S|0&5>4%!CkxW1%?CC3eU@fOHHxWlyaW^ih#U8O-QK}vGE=mjjIs7U1q%p+U*1kUP&?3-X2V9f= z=XW?(d8U-BlCLlC8Ll(cmh8c=z@5@Iai_O4WxG7teP)=2vZ~3RP(OQuIB6?$vq6(d zrQ?AEONg=7H`n=J2WF7!lGP;5a``~|e!szS-RQ8PP}}&a2EpJGTQg13EnS(pLyWw~ z-;H!{B9~UbF*$d|aXs`gX9`kz3P&w+E+c$h3I57|^JIsWVFWCi-Gt<$8$96{D&W{R zeoKfpcLJoheS!$;d0Iq9wf63yUSO|YQm-P3kQ?NazZfjC8#tathx(l+vO%3tQr6P0 zUU;J$aiIctawyeTf~L091a3^g|Q`d~G2K_GMF*(YfVEKd9W%u-n< z(3uWoPE%9^?9=A1_RF*Yfg_-QmY~nPJjjtxuso{5;WTFG?Q zHJ%;z|pmIbFekd=?Y{9=!^F*2=L3b_N7pX4KGw#@ z!}`$fE?$Q3KZ+W0zFb2V>3lMhCbk@3pXpF;Ukt*zj>`W$uX8K`wglf&Xj(ZDe<`Io z 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”的效果,支撑社区用户开拓更广阔的行业空间。 + +**架构** +软总线的主要架构如下: +.. 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 -- Gitee