天天看點

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

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 提供的分布式裝置虛拟化能力将兩台裝置的硬體資源進行融合,實作了“一對一”的硬體資源通路。這便是硬體資源池化模型的雛形。

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 1 “一對一”的硬體資源通路

1.2 多對多

随着全場景智慧生活的不斷深入,“一對一”的裝置硬體資源通路方式已不能滿足某些複雜場景的業務需求。OpenHarmony 對分布式技術不斷探索與創新,通過增強原來的分布式裝置虛拟化能力,将多台裝置的各種硬體資源,如螢幕、相機、擴音器、鍵盤、傳感器及存儲器等予以抽象,形成“超級虛拟終端”内的統一硬體資源池,并支援硬體資源的按需配置設定和重新組合,真正實作了硬體資源的全局調用。組成“超級虛拟終端”的多個裝置,能通路硬體資源池内的多種硬體資源,這便是“多對多”的硬體資源通路。

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

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

基于“硬體資源池化”,開發者可以根據不同的業務場景,在硬體資源池内選擇并比對合适的能力子產品,充分發揮不同裝置的能力優勢,進而建構全新的使用者體驗。

2.硬體資源池化模型

基于“硬體資源池化”的創新理念,OpenHarmony 融合硬體虛拟化、硬體資源管理及硬體資料管理等能力,建構了硬體資源池化模型,對外提供了統一的硬體能力開放接口,讓開發者輕松實作高效開發。

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

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 3 硬體資源池化模型

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

2.1 裝置管理

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

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 4 裝置管理(DeviceManager)

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

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 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 所示:

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 6 分布式硬體架構

分布式硬體架構的各子產品說明如下:

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 9 分布式相機的子產品說明

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

https://gitee.com/openharmony/distributed_camera

2.4 分布式螢幕

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

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 10 分布式螢幕

分布式螢幕的各子產品說明如下:

華為專家講解 OpenHarmony 開源鴻蒙硬體資源池化模型

圖 11 分布式螢幕的子產品說明

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

https://gitee.com/openharmony/distributed_screen

繼續閱讀