var os = require('os'); import { DeviceImpl, FirmwareEventStatus, FirmwareEventType, FirmwareInfo, initSdk } from "../main"; async function sleep(ms: number) { return new Promise((resolve) => { setTimeout(() => { resolve(''); }, ms) }); } (async () => { try { var arch = os.arch(); console.log("os arch:" + arch); // This appId is internal demo used and may log out at any time let ylSdk = await initSdk("05d4af257a5d45c3a18c1e416b37848d"); ylSdk.RegEvent('attach', async (deviceImpl: DeviceImpl) => { try { let ret = await deviceImpl.checkForFirmwareUpdateAsync(); console.log("check for firmware update success, result: " + ret); } catch (error) { console.log("check for firmware update failed " + error); } try { const version = await deviceImpl.getFirmwareVersionAsync(); console.log("get firmware version, result: " + version); } catch (error) { console.log("get firmware version failed, device name:" + deviceImpl.deviceName + ', error:' + error); } let versionMap: Map = new Map(); try { let fwInfo = await deviceImpl.getLatestFirmwareInformationAsync(); versionMap.set(deviceImpl.deviceId, fwInfo.version); console.log("last device firmware version info: " + JSON.stringify(fwInfo)); } catch (error) { console.log("get last device firmware version failed, device name:" + deviceImpl.deviceName + ', error:' + error); } let version = versionMap.get(deviceImpl.deviceId); if (typeof version == "undefined") { console.log("lastest firmware version is: " + version); return; } try { console.log("start download firmware, version: " + version); await deviceImpl.downloadFirmwareAsync(version); } catch (error) { console.log("download firmware failed: ", error); } try { await sleep(1000); console.log("cancel download firmware 1s after"); await deviceImpl.cancelFirmwareDownloadAsync(); } catch (error) { console.log("cancel download firmware failed", error); } deviceImpl.RegEvent('downloadFirmwareProgress', (async (...args: any[]) => { if (typeof version == "undefined") { console.log("firmware version is: " + version); return; } var path: string = ""; if (args[0] == FirmwareEventType.Firmware_Download) { if (args[1] === FirmwareEventStatus.Completed) { try { path = await deviceImpl.getFirmwareFilePathAsync(version); console.log("get firmware file path, dev:" + deviceImpl.deviceName + ", path: " + path); } catch (error) { console.log("get firmware file path failed: " + error); } try { console.log("start update firmware after 10s, file path: " + path); await sleep(10 * 1000); await deviceImpl.updateFirmwareAsync(path); } catch (error) { console.log("update firmware failed: " + error); } } if (args[1] === FirmwareEventStatus.InProgress) { console.log("download firmware progress: " + args[2]); } else if (args[1] === FirmwareEventStatus.Update_Error) { console.log("download firmware failed"); } } else if (args[0] == FirmwareEventType.Firmware_Update) { if (args[1] === FirmwareEventStatus.InProgress) { console.log("update firmware progress: " + args[2]); } else if (args[1] === FirmwareEventStatus.Completed) { console.log("update firmware successful"); } else if (args[1] === FirmwareEventStatus.Update_Error) { console.log("update firmware failed"); } } })); try { await sleep(2000); console.log("start download firmware, version: " + version); await deviceImpl.downloadFirmwareAsync(version); console.log('download firmware ok') ylSdk.disposeAsync(); } catch (error) { console.log("download firmware failed: ", error); } }); } catch (error) { console.log("get exception: " + error); } })();