自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

跟著小白一起學(xué)鴻蒙—簡析OpenHarmony軟總線能力

系統(tǒng) OpenHarmony
在OpenHarmony的源碼里和系統(tǒng)功能相關(guān)的部分大多都放在foundation這個文件夾里,而通訊相關(guān)的部分則是在communication這個文件夾內(nèi)。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

分布式軟總線是OpenHarmony的重要能力,設(shè)計目標(biāo)是實(shí)現(xiàn)多設(shè)備間的通信方式。分布式軟總線是分布式硬件和分布式軟總線的重要基礎(chǔ),分布式軟總線提供一種不區(qū)分鏈路的設(shè)備間發(fā)現(xiàn)、組網(wǎng)和傳輸?shù)哪芰Γ?/p>

  • 發(fā)現(xiàn):應(yīng)用WiFi,藍(lán)牙相關(guān)協(xié)議實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)能力。
  • 組網(wǎng):提供統(tǒng)一的設(shè)備組網(wǎng)和拓?fù)涔芾砟芰Α?/li>
  • 傳輸:提供數(shù)據(jù)傳輸能力,支持消息、字節(jié)、流,文件的數(shù)據(jù)傳輸能力。

概述

在OpenHarmony的源碼里和系統(tǒng)功能相關(guān)的部分大多都放在foundation這個文件夾里,而通訊相關(guān)的部分則是在communication這個文件夾內(nèi)。我們本篇要分析的軟總線功能就是在foundation/communication/dsoftbus路徑下,具體目錄結(jié)構(gòu)如下:

.
├── adapter //適配層
├── BUILD.gn
├── common //適配層管理,網(wǎng)絡(luò)適配,協(xié)議適配等
└── default_config //適配層配置
├── BUILD.gn
├── bundle.json
├── check_sub_module.py
├── components //依賴組件
├── mbedtls //開源ssl庫,在三方庫里
└── nstackx //tcp/ip協(xié)議管理模塊
├── config.py
├── core //核心層
├── adapter //適配接口
├── authentication //認(rèn)證接口
├── BUILD.gn
├── bus_center //組網(wǎng)代碼
├── common //通用代碼
├── connection //連接代碼
├── discovery //發(fā)現(xiàn)代碼
├── frame //框架代碼
└── transmission //傳輸代碼
├── dsoftbus.gni
├── figures
├── dsoftbus-architecture.png
└── dsoftbus-architecture_zh.png
├── hisysevent.yaml
├── interfaces //對外頭文件
├── inner_kits
└── kits
├── Kconfig
├── LICENSE
├── OAT.xml
├── README.md
├── README_zh.md
├── sdk //對外應(yīng)用sdk
├── BUILD.gn
├── bus_center //組網(wǎng)
├── discovery //發(fā)現(xiàn)
├── frame //框架
└── transmission //傳輸
├── tests
├── adapter
├── BUILD.gn
├── core
├── include
└── sdk
└── tools //工具
├── BUILD.gn
└── device_info
  • 約束:
  • 設(shè)備發(fā)現(xiàn)需要在同二層網(wǎng)絡(luò)中(即同交換機(jī),同WiFi路由或者近場通信范圍內(nèi))
  • 組網(wǎng)前需要有設(shè)備認(rèn)證過程(綁定)

架構(gòu)簡析

  • 根據(jù)目錄結(jié)構(gòu)和內(nèi)部文件及編譯框架總結(jié)架構(gòu)如下:
  • SDK:為其他業(yè)務(wù)提供軟總線的能力接口,如發(fā)現(xiàn)設(shè)備,發(fā)布服務(wù),設(shè)備連接,遠(yuǎn)端設(shè)備信息獲取,時間同步,注冊回調(diào)接收設(shè)備上下線消息,設(shè)備信息變更消息;SDK對外提供softbus_client.so,頭文件均在interfaces/kits目錄里;
  • Tools:提供SoftBusDumpDeviceInfo工具,可以查看本地的設(shè)備信息和所有發(fā)現(xiàn)的設(shè)備信息。
  • Core:軟總線的核心實(shí)現(xiàn)部分,提供softbus_server庫,實(shí)現(xiàn)system ability框架提供系統(tǒng)能力。
  • discovery:提供對網(wǎng)絡(luò)設(shè)備和藍(lán)牙設(shè)備的發(fā)布,發(fā)現(xiàn),連接的能力。
  • authentication:設(shè)備認(rèn)證模塊,對不同類型的連接方式提供不同的認(rèn)證實(shí)現(xiàn)和統(tǒng)一的認(rèn)證能力,并為分布式設(shè)備業(yè)務(wù)提供DeviceAuthCallback;設(shè)備認(rèn)證模塊依。賴//base/security/device_auth/services:deviceauth_sdk庫。認(rèn)證模塊提供認(rèn)證連接對應(yīng)的處理,如連接處理(OnConnectResult),數(shù)據(jù)處理(OnDataReceived),斷開處理(OnDisconnected)三個基礎(chǔ)入口,提供設(shè)備的連接認(rèn)證能力。
  • connection:提供ble,br,tcp,p2p連接方式。連接模塊會啟動一個后臺連接服務(wù),此連接服務(wù)提供默認(rèn)的tcp,ble,br,p2p的連接處理接口,服務(wù)內(nèi)部通過一個線程池處理連接的任務(wù);認(rèn)證模塊通過連接模塊進(jìn)行認(rèn)證連接,同時連接模塊也提供回調(diào)接口,為業(yè)務(wù)模塊提供數(shù)據(jù)返回。連接模塊就是通過具體的連接業(yè)務(wù)實(shí)現(xiàn)代碼為業(yè)務(wù)模塊提供設(shè)備連接和信息傳輸通道;目前主要提供的連接方式為socket或者藍(lán)牙兩種;其中接口聲明在interface目錄下。
  • transmission:提供消息發(fā)送接口,可以發(fā)送加密信息或者不加密信息,加密方式根據(jù)認(rèn)證的信息確認(rèn),使用認(rèn)證會話的key作為key值,加密方式為aes加密。
  • bus_center:提供核心的LNN本地網(wǎng)絡(luò)服務(wù)接口,包括網(wǎng)絡(luò)服務(wù)發(fā)現(xiàn),連接,服務(wù)發(fā)布等核心能力,以及設(shè)備管理能力。bus_center作為軟總線的管理節(jié)點(diǎn)提供本地網(wǎng)絡(luò)拓?fù)滟~本(NetLedger),消息處理回環(huán)(BusLooper),事件處理對象(Netlink,Product,Lwip,Wifi,BtState,Driver,ScreenState,DeviceName),網(wǎng)絡(luò)發(fā)現(xiàn)服務(wù)(Coap),網(wǎng)絡(luò)接口(Netif, softbus_feature_config.c里寫死),消息網(wǎng)絡(luò)構(gòu)造(NetBuilder),本地網(wǎng)絡(luò)路由管理(LaneHub),節(jié)點(diǎn)地址分配(NodeAddrAllocator)。軟總線設(shè)計目標(biāo)為無感的設(shè)備互聯(lián)互通,所以每個標(biāo)準(zhǔn)設(shè)備都可以作為一個網(wǎng)絡(luò)節(jié)點(diǎn)也可以作為一個網(wǎng)關(guān),而bus_center就是作為網(wǎng)關(guān)實(shí)現(xiàn)的部分。軟總線服務(wù)通過收聽系統(tǒng)的事件,包括設(shè)備事件,網(wǎng)絡(luò)事件以感知本設(shè)備的每一處變化,然后根據(jù)變化來決定是否可以感知到周圍新的節(jié)點(diǎn)設(shè)備加入網(wǎng)絡(luò),并提供設(shè)備認(rèn)證,連接,傳輸數(shù)據(jù)的服務(wù)。
  • common:核心部分的基礎(chǔ)代碼,如bitmap(位圖),dfx(DesignForX,未來設(shè)計),json,messagehandler(軟總線信令),network(網(wǎng)絡(luò)頻率參數(shù)),queue(隊列),security(權(quán)限認(rèn)證),property(軟總線配置),utils(工具集,timeout,hextobytes,random,等等)。
  • frame:框架層,不同類型的系統(tǒng)(小型系統(tǒng)L0,輕量系統(tǒng)L1,標(biāo)準(zhǔn)系統(tǒng)L2)提供不同的對外接口實(shí)現(xiàn);
  • adapter:適配層,目前適配不同的設(shè)備類型,如WiFi,藍(lán)牙等。
  • Adapter:軟總線適配層,對不同系統(tǒng)進(jìn)行裁剪和能力配置,對外部依賴進(jìn)行包裝和調(diào)用。
  • Component:組件,mbedtls(SSL算法庫),nstackx(網(wǎng)絡(luò)協(xié)議庫,為coap提供網(wǎng)絡(luò)協(xié)議服務(wù))。

功能簡析

distributedhardwaretools -->> softbus_client(sdk): so庫引用,接口調(diào)用
softbus_client(sdk) --> bus_center_sdk_deps: 鏈接對應(yīng)服務(wù)so,c++調(diào)用
softbus_client(sdk) --> trans_session_manager_sdk_deps: 鏈接對應(yīng)服務(wù)so,c++調(diào)用
softbus_client(sdk) --> softbus_adapter: 鏈接對應(yīng)服務(wù)soc++調(diào)用
softbus_client(sdk) --> softbus_utils: 鏈接對應(yīng)服務(wù)so,c++調(diào)用
bus_center_sdk_deps-->ipc_single: 鏈接對應(yīng)的idlso,c接口調(diào)用
bus_center_sdk_deps-->samgr: 應(yīng)用SystemAbility服務(wù)框架
trans_session_manager_sdk_deps-->nstackx(FillpSo/congestion/dfile/util): 鏈接對應(yīng)服務(wù)so,c調(diào)用
  1. distributedhardware(分布式硬件管理),由以下幾個部分組成:
  • devicemanager:DeviceManager組件在OpenHarmony上提供賬號無關(guān)的分布式設(shè)備的認(rèn)證組網(wǎng)能力,并為開發(fā)者提供了一套用于分布式設(shè)備間監(jiān)聽、發(fā)現(xiàn)和認(rèn)證的接口。
  • distributedcamera:分布式相機(jī)是多個設(shè)備的相機(jī)同時協(xié)同使用的能力。分布式相機(jī)部件是為分布式硬件子系統(tǒng)提供這一能力的部件。本部件不直接對接應(yīng)用,只向分布式硬件框架子系統(tǒng)提供C++接口。應(yīng)用可以通過相機(jī)框架的接口使用分布式相機(jī)部件操作其他設(shè)備的Camera,使用方式與本地相機(jī)一致。
  • distributedhardwarefwk:分布式硬件管理框架是為分布式硬件子系統(tǒng)提供信息管理能力的部件。分布式硬件管理框架為分布式硬件子系統(tǒng)提供統(tǒng)一的硬件接入、查詢和使能等能力。
  • distributedscreen:分布式屏幕是一種屏幕虛擬化能力,支持用戶指定組網(wǎng)認(rèn)證過的其他OpenHarmony設(shè)備的屏幕作為Display的顯示區(qū)域。在分布式硬件子系統(tǒng)中,分布式屏幕組件提供跨設(shè)備屏幕能力調(diào)用,為OpenHarmony操作系統(tǒng)提供系統(tǒng)投屏、屏幕鏡像、屏幕分割等能力的實(shí)現(xiàn)。
  1. tools(分布式軟總線工具),提供打印本地設(shè)備信息和分布式軟總線上發(fā)現(xiàn)的遠(yuǎn)程節(jié)點(diǎn)信息。
  2. softbus_client(sdk),分布式軟總線的框架層接口,利用ipc通信同softbus_server交互實(shí)現(xiàn)具體功能,包括以下部分:
  • bus_center_sdk_src:包括bus_center_service_sdk_src和bus_center_manager_sdk_src,軟總線管理層接口。
  • disc_sdk_src:網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)現(xiàn)接口。
  • softbus_client_frame_src:框架層接口實(shí)現(xiàn)。
  • trans_session_manager_sdk_src:傳輸層接口實(shí)現(xiàn),包括(trans_ipc_proxy_sdk_src,trans_session_sdk_src,trans_channel_sdk_src)。
  • trans_ipc_proxy_sdk_src:提供傳輸通道,通過systemability獲取服務(wù)并進(jìn)行交互的能力。
  • trans_session_sdk_src:應(yīng)用ipc傳輸代理提供傳輸會話建立,配置的接口。
  • trans_channel_sdk_src:應(yīng)用ipc傳輸代理提供傳輸channel建立,配置,管理的接口。
  1. softbus_server(core):分布式軟總線的核心服務(wù)庫,以system ability為框架,支持ipc通信。
  • auth_server_src:認(rèn)證服務(wù)。
  • bus_center_server_src:主服務(wù)。
  • conn_manager_src:連接服務(wù)。
  • disc_server_src:發(fā)現(xiàn)服務(wù)。
  • trans_session_src:會話服務(wù)。
  • softbus_permission_src:軟總線的權(quán)限配置。
  1. softbus_adapter,軟總線適配層,對接底層系統(tǒng)接口(kernel),對接ssl加密通道(mbedtls或openssl),并為核心服務(wù)提供功能實(shí)現(xiàn)。
  2. softbus_utils,軟總線的通用庫,核心層里的公共庫,提供基礎(chǔ)方法的實(shí)現(xiàn),包括:
  • bitmap:位圖,目前是用于藍(lán)牙設(shè)備Capability標(biāo)識。
  • dfx:面向未來設(shè)計,實(shí)現(xiàn)hidumper(信息打?。┖蚳isystemevent(OpenHarmony的事件埋點(diǎn),通過在關(guān)鍵路徑埋點(diǎn)記錄系統(tǒng)在運(yùn)行過程中的重要信息,輔助開發(fā)者定位問題)。
  • json_utils:提供cjson的功能適配,軟總線的信令均使用json數(shù)據(jù)傳輸,此功能為信令的收發(fā)服務(wù)。
  • message_handler:提供軟總線報文處理機(jī)制,包括報文處理Looper,報文同步發(fā)送、異步發(fā)送接口等,所有待處理的報文在Looper的隊列里管理,到期后調(diào)用具體模塊的handler處理,處理報文的handler包括(auth,lnnlane,lnntimesync,lnnnetbuilder,buscenternotify,lnnasync,lnnstatemachine,hisysevent,bleconnnect,blegattclient,blegattserver,p2plink,bledisc,trans)。

總結(jié)

  1. 軟總線服務(wù)依賴于監(jiān)聽系統(tǒng)事件和網(wǎng)絡(luò)掃描(coap,br,ble)進(jìn)行設(shè)備發(fā)現(xiàn)和認(rèn)證后的設(shè)備連接。
  2. 軟總線服務(wù)不對應(yīng)用層直接提供調(diào)用接口,通過分布式設(shè)備管理提供NAPI接口供應(yīng)用層調(diào)用。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來源: 51CTO開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2022-11-22 15:15:46

Wi-Fi鴻蒙

2023-03-30 09:19:54

SELinux安全子系統(tǒng)

2022-12-05 15:02:14

鴻蒙用戶鑒權(quán)

2022-11-08 15:43:45

開源鴻蒙藍(lán)牙協(xié)議棧

2022-08-19 19:02:20

開源鴻蒙操作系統(tǒng)

2023-01-03 15:09:10

鴻蒙常用工具

2022-12-06 15:39:16

鴻蒙主干代碼

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2022-11-14 17:01:34

游戲開發(fā)畫布功能

2023-03-30 09:32:27

2023-04-04 09:24:11

鴻蒙HiDumper

2022-10-10 14:47:04

藍(lán)牙應(yīng)用鴻蒙

2023-02-27 16:30:32

鴻蒙開源協(xié)議分析

2022-08-29 17:25:19

鴻蒙應(yīng)用開發(fā)

2022-11-24 14:34:41

Hap程序鴻蒙

2023-03-15 16:19:03

BinderIPC工具

2022-10-20 16:40:16

JS應(yīng)用控制LED鴻蒙

2022-10-09 15:05:50

NAPI框架鴻蒙

2023-04-06 09:18:52

鴻蒙AVPlayerAVRecorder
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號