ota 固件升级
如有远程升级需求,请参考具体 ota 升级流程文档及本小节内容进行实现
设置ota属性
IotDeviceSDK.getInstance().setOTAOption(int exceptTime, int chunkSize);
参数 | 说明 |
---|---|
exceptTime | 期望升级倒计时,单位秒,范围 120-3600 |
chunkSize | 云端会将固件按 chunkSize 分块,分块后一次下发一块。2的 n 次幂,范围 256-1048576,默认 1024 |
返回值 | 0:设置属性成功,可在 log 中查看实际升级时间-1 :失败,参数错误 |
接收固件信息
sdk自动调用该函数,接受云端发来的固件信息说明,包含,固件的种类、固件的大小和固件的OTA版本。
IotDeviceSDK.getInstance().setOnGetOTAInfoListener(new IotDeviceSDK.OnGetOTAInfoListener() {
@Override
public void onGetOTAInfo(int otaType, long otaFileSize, String
otaVersion) {
}
});
Log.e("TAG", "otaType:" + otaType); // 0:wifi 固件,1:MCU 固件Log.e("TAG", "otaFileSize:" + otaFileSize);//OTA 固件大小Log.e("TAG", "otaVersion:" + otaVersion); // OTA 固件版本
接收固件数据块
sdk自动调用该函数,接受云端发来的固件数据块,收到后更新本地固件。回调函数中不可执行太多耗时代码。
IotDeviceSDK.getInstance().setOnOTAChunkDataListener(new IotDeviceSDK.OnOTAChunkDataListener() {
@Override
public boolean onOTAChunkData(boolean isLastChunk, long chunkOffset, byte[] chunkData) {
isLastChunk 表示是否是最后一个包;
chunkOffset 表示本次数据包在总数据量的偏移起始位置;
chunkData 表示本次数据包数据
}
});
// return true 或者 return false
// 返回 true 表示本次 chunk 包处理成功
// 返回 false 表示本次 chunk 包处理失败
接收升级指令
收到此命令,重启,运行新版本固件。回调函数中不可执行太多耗时代码。IotDeviceSDK.getInstance().setOnOTAUpgradeListener(new
IotDeviceSDK.OnOTAUpgradeListener() {
@Override
public void onOTAUpgrade() {
}
});