本文介绍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)
下载文件。
入参
Object、Function类型,属性如下:
属性 | 类型 | 是否必填 | 描述 |
url | String | 是 | 下载文件的URL。 |
length | String | 是 | 下载文件的长度。 |
hashType | String | 是 | Hash类型。 |
hash | String | 是 | Hash值。 |
store_path | String | 是 | 存储下载文件的路径包括文件名称。 |
callback | Function | 是 | 下载完后的回调函数。 |
返回
无。
appUpgrade(Object option, Function callback)
JS脚本升级。
入参
Object、Function类型,属性如下:
属性 | 类型 | 是否必填 | 描述 |
length | String | 是 | 下载文件的长度。 |
store_path | String | 是 | 存储下载文件的路径包括文件名称。 |
hash | String | 是 | Hash值。 |
callback | Function | 是 | 下载完后的回调函数。 |
返回
无。
firmwareUpgrade(Object option, Function callback)
固件升级。
入参
Object、Function类型,属性如下:
属性 | 类型 | 是否必填 | 描述 |
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();
});
}
文档内容是否对您有帮助?