文档

OTA-远程升级组件(第三方平台)

更新时间:
一键部署

本文介绍OTA-远程升级组件所提供的相关方法说明,支持的硬件平台列表以及参考示例代码。

硬件平台

产品型号

是否支持

硬件类型

固件版本号

HaaS510

DTU

4.0.1

HaaS520

DTU

4.0.1

HaaS530

DTU

4.0.1

HaaS531

DTU

4.0.1

HaaS632-LT32V

蜂窝模组

4.0.1

HaaS600-EC600S

蜂窝模组

4.0.1

HaaS600-EC600N

蜂窝模组

4.0.1

HaaS600-EC600U

蜂窝模组

4.0.1

HaaS600-N715

蜂窝模组

4.0.1

open(Object option)

创建一个OTA实例。

入参

无。

返回

OTA实例。返回空表示失败。

getPackage(Object option, Function callback)

下载文件。

入参

ObjectFunction类型,属性如下:

属性

类型

是否必填

描述

url

String

下载文件的URL。

length

String

下载文件的长度。

hashType

String

Hash类型。

hash

String

Hash值。

store_path

String

存储下载文件的路径包括文件名称。

callback

Function

下载完后的回调函数。

返回

无。

appUpgrade(Object option, Function callback)

JS脚本升级。

入参

ObjectFunction类型,属性如下:

属性

类型

是否必填

描述

length

String

下载文件的长度。

store_path

String

存储下载文件的路径包括文件名称。

hash

String

Hash值。

callback

Function

下载完后的回调函数。

返回

无。

firmwareUpgrade(Object option, Function callback)

固件升级。

入参

ObjectFunction类型,属性如下:

属性

类型

是否必填

描述

length

String

文件的长度。

store_path

String

升级文件的路径包括文件名称。

callback

Function

升级后的回调函数。

返回

升级成功设备会重启,失败会返回非0值。

示例代码

import * as network from 'network';
import * as audioplayer from 'audioplayer';
import * as http from 'http';

var net = network.openNetWorkClient();

const url = {
  appUrl: 'https://testhgy.oss-cn-shanghai.aliyuncs.com/upgrade.bin',
  firmwareUrl: 'https://testhgy.oss-cn-shanghai.aliyuncs.com/fbf.bin',
  resUrl: 'https://testhgy.oss-cn-shanghai.aliyuncs.com/xxxxx.mp3'
};

const filePath = {
  app: 'jsamp/appUpgrade.bin',
  firmware: 'jsamp/firmware.bin',
  res: 'jsamp/test.mp3'
};

const resType = {
  app: 'appPack',
  firmware: 'firmwarePack',
  res: 'resource'
};

const packageInfo = {
  url: url.firmwareUrl,
  size: 0,
  path: filePath.firmware,
  type: resType.res
};

function getPackage(packInfo, cb) {
  if (!packInfo) {
    console.log('packInfo is null');
    return -1;
  }
  
  http.addDownload({
    url: packInfo.url,
    filepath: packInfo.path,
    size: packInfo.size,
    method: 'GET',
    headers: {
      'Accept': '*/*',
    }
  });
  
  http.startDownload({
    success: function (res) {
      console.log('ampx http download result ' + res);
      if (res == 0) {
        console.log('ampx http: [success] http.download');
        cb();
      } else {
        console.log('amp http: [failed] http.download');
      }
      
      return res;
    }
  });
}

function doSomeThing()
{
  if (packageInfo.type == 'resource') {
    console.log('enter resource');
    //audioplayerHandle.setVolume(6);
    //audioplayerHandle.play(filePath.res, function () { console.log('playback complete'); });
  } else if (packageInfo.type == 'appPack') {
    console.log('enter app update');
    /* upgrade application code */
    //updateManager.appUpgrade({
    //length: 2520,
    //storePath: packageInfo.path
    //}, () => { });
  } else if (packageInfo.type == 'firmwarePack') {
    console.log('enter app firmwarePack');
    /* upgrade firmware code */
    //updateManager.firmwareUpgrade({
    //length: 839680,
    //storePath: packageInfo.path
    //}, () => { });
  }
}

function upgrade_test() 
{
  getPackage(packageInfo, doSomeThing);
}

var status = net.getStatus();

if (status == 'connect') {
  upgrade_test();
} else {
  net.on('connect', () => {
    upgrade_test();
  });
}
  • 本页导读 (0)
文档反馈