IT之家 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("createDeviceManager err:" + JSON.stringify(err) + ' --success:' + JSON.stringify(dm)) if (err) return; dmClass = dm; dmClass.on('serviceDie', data => this.log("serviceDie on:" + JSON.stringify(data)))});// 查詢可信裝置清單var array = dmClass.getTrustedDeviceListSync();// 擷取本地裝置資訊var localDeviceInfo = dmClass.getLocalDeviceInfoSync();// 開始裝置發現(發現周邊不可信裝置)var subscribeId = 0;dmClass.on('deviceFound', (data) => { if (data == null) { this.log("deviceFound error data=null") return; } this.logList.push("deviceFound:" + JSON.stringify(data));});dmClass.on('discoverFail', (data) => { this.log("discoverFail on:" + JSON.stringify(data));});subscribeId = Math.floor(Math.random() * 10000 + 1000)var info = { "subscribeId": subscribeId, "mode": 0xAA, "medium": 0, "freq": 2, "isSameAccount": false, "isWakeRemote": true, "capability": 0};dmClass.startDeviceDiscovery(info);// 停止裝置發現(需要和startDeviceDiscovery接口配對使用)dmClass.stopDeviceDiscovery(subscribeId);// 裝置認證var deviceInfo ={ "deviceId": "XXXXXXXX", "deviceName": "", deviceType: 0};let extraInfo = { "Icon": new Uint8Array(), // 圖示,可選參數,可不填 "Thumbnail": new Uint8Array(), // 縮略圖,可選參數,可不填 "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