1. 程式人生 > 資訊 >華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型,利用分散式實現多裝置協同

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型,利用分散式實現多裝置協同

4 月 28 日訊息,近期,OpenAtom OpenHarmony 首次對外解讀了 OpenHarmony 3.1 Release 技術特性。資料顯示,截至目前,OpenHarmony 吸引了 40 多家主倉程式碼貢獻單位,匯聚 160 萬 + 社群使用者,建立 44 個特別興趣小組,全球下載次數高達 6300 萬,5.5 萬 + 次程式碼提交。

OpenHarmony 分散式硬體管理 SIG 成員、華為技術有限公司分散式硬體專家李剛關於 OpenHarmony 3.1 Release 版本關鍵特性 ——OpenHarmony 硬體資源池化模型進行了解析。

OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)作為面向全場景、全連線、全智慧時代的分散式作業系統,通過將各類不同終端裝置的能力進行整合,實現硬體互助、資源共享,為使用者提供流暢的全場景體驗。

在這裡,專家通過通過介紹 OpenHarmony 的硬體資源池化模型,為大家揭曉了 OpenHarmony 是如何實現多裝置協同的。(以下出自 OpenAtom OpenHarmony 官微)

1.硬體資源訪問的演進

硬體資源訪問是多裝置進行協同的關鍵。OpenHarmony 發展至今,硬體資源訪問經歷了從“一對一”到“多對多”的演進過程。

1.1 一對一

在設計初期,為解決兩臺裝置間的協同問題,我們通過 OpenHarmony 提供的分散式裝置虛擬化能力將兩臺裝置的硬體資源進行融合,實現了“一對一”的硬體資源訪問。這便是硬體資源池化模型的雛形。

圖 1 “一對一”的硬體資源訪問

1.2 多對多

隨著全場景智慧生活的不斷深入,“一對一”的裝置硬體資源訪問方式已不能滿足某些複雜場景的業務需求。OpenHarmony 對分散式技術不斷探索與創新,通過增強原來的分散式裝置虛擬化能力,將多臺裝置的各種硬體資源,如螢幕、相機、擴音器、鍵盤、感測器及儲存器等予以抽象,形成“超級虛擬終端”內的統一硬體資源池,並支援硬體資源的按需分配和重新組合,真正實現了硬體資源的全域性呼叫。組成“超級虛擬終端”的多個裝置,能訪問硬體資源池內的多種硬體資源,這便是“多對多”的硬體資源訪問。

圖 2 硬體資源池化(多對多)

基於“硬體資源池化”,開發者可以根據不同的業務場景,在硬體資源池內選擇並匹配合適的能力模組,充分發揮不同裝置的能力優勢,從而構建全新的使用者體驗。

2.硬體資源池化模型

基於“硬體資源池化”的創新理念,OpenHarmony 融合硬體虛擬化、硬體資源管理及硬體資料管理等能力,構建了硬體資源池化模型,對外提供了統一的硬體能力開放介面,讓開發者輕鬆實現高效開發。

如圖 3 所示,硬體資源池化模型將各類裝置的硬體資源進行抽象,為北向應用提供各種分散式服務,比如分散式相機、分散式螢幕、分散式音訊和分散式輸入等,同時提供統一的裝置管理和分散式硬體框架。

圖 3 硬體資源池化模型

下面為大家一一介紹硬體資源池化模型的各個組成部分。

2.1 裝置管理

裝置管理(即 DeviceManager)服務,提供裝置發現、認證管理、可信裝置管理和裝置狀態管理等能力。

圖 4 裝置管理(DeviceManager)

OpenHarmony 為開發者提供了一套裝置管理介面,用於分散式裝置間監聽、發現和認證,如圖 5 所示。

圖 5 裝置管理介面

裝置管理介面的使用示例程式碼如下:

//建立DeviceManager例項:deviceManager.createDeviceManager('com.ohos.xxxx',(err,dm)=>{this.log("createDeviceManagererr:"+JSON.stringify(err)+'--success:'+JSON.stringify(dm))if(err)return;dmClass=dm;dmClass.on('serviceDie',data=>this.log("serviceDieon:"+JSON.stringify(data)))});//查詢可信裝置列表vararray=dmClass.getTrustedDeviceListSync();//獲取本地裝置資訊varlocalDeviceInfo=dmClass.getLocalDeviceInfoSync();//開始裝置發現(發現周邊不可信裝置)varsubscribeId=0;dmClass.on('deviceFound',(data)=>{if(data==null){this.log("deviceFounderrordata=null")return;}this.logList.push("deviceFound:"+JSON.stringify(data));});dmClass.on('discoverFail',(data)=>{this.log("discoverFailon:"+JSON.stringify(data));});subscribeId=Math.floor(Math.random()*10000+1000)varinfo={"subscribeId":subscribeId,"mode":0xAA,"medium":0,"freq":2,"isSameAccount":false,"isWakeRemote":true,"capability":0};dmClass.startDeviceDiscovery(info);//停止裝置發現(需要和startDeviceDiscovery介面配對使用)dmClass.stopDeviceDiscovery(subscribeId);//裝置認證vardeviceInfo={"deviceId":"XXXXXXXX","deviceName":"",deviceType:0};letextraInfo={"Icon":newUint8Array(),//圖示,可選引數,可不填"Thumbnail":newUint8Array(),//縮圖,可選引數,可不填"Name":"xxxxxxxx",//對端裝置應用名稱"Description":"xxxxxxxx",//描述"business":'0',"displayOwner":0,}//裝置取消認證dmClass.unAuthenticateDevice(this.deviceInfo);

DeviceManager 的更多詳情,請參考以下程式碼倉:

https://gitee.com/openharmony/device_manager

2.2 分散式硬體框架

分散式硬體框架為硬體資源池化模型提供了接入管理、能力查詢、狀態管理、許可權管理以及版本管理等硬體資源管理能力,如圖 6 所示:

圖 6 分散式硬體框架

分散式硬體框架的各模組說明如下:

圖 9 分散式相機的模組說明

分散式相機的更多詳情,請參考分散式相機程式碼倉:

https://gitee.com/openharmony/distributed_camera

2.4 分散式螢幕

分散式螢幕提供了螢幕裝置的硬體資源軟體抽象能力,為 OpenHarmony 系統框架提供系統投屏、螢幕映象、螢幕分割等能力的實現。分散式螢幕的框架圖如下所示:

圖 10 分散式螢幕

分散式螢幕的各模組說明如下:

圖 11 分散式螢幕的模組說明

分散式螢幕的更多詳情,請參考以下程式碼倉:

https://gitee.com/openharmony/distributed_screen