OTA升级流程参考:
一、前置条件:
- 设备电量大于30%(该值根据具体产品定义,APP端可自定义,如40%,只要大于固件限制的最低电量)
- 需要连接上设备
二、检查升级
1、根据设备固件版本信息 https://idoosmart.github.io/Native_GitBook/en/doc/IDODeviceInfo.html ,"${fwVersion1}.${fwVersion2}.${fwVersion3}"
调用OTA根据接口(服务端实现)
2、判断有升级后,根据服务端返回的ota文件地址,下载该文件到设备
三、执行升级
1、调用文件传输接口,把ota文件传给设备
2、传输完成后,设备会自动进入升级状态,期间蓝牙连接会断开
3、设备升级完成会重启,升级流程结束
示例参考:
设备OTA升级并不复杂,可以把它看作只是一个文件传输到设备的过程
SDK只有一个方法用于传输所有文件,参考:
https://idoosmart.github.io/Native_GitBook/en/doc/transfer/IDOFileTransfer.html
示例中以下代码就是固件升级:
var items = mutableListOf<IDOTransBaseModel>()
// Firmware
items.add(IDOTransNormalModel(fileType: IDOTransType.FW , filePath: "/xx/xx/xx.fw[bin|zip]", fileName: "xx"))
// Call transfer
val cancelable = sdk.transfer.transferFiles(
items, cancelPre,
{ currentIndex, totalCount, currentProgress, totalProgress ->
print("Transmitting ${currentIndex + 1}/$totalCount...")
},
{ currentIndex: Int, status: IDOTransStatus, errorCode: Int?, finishingTime: Int? ->
if (status != IDOTransStatus .FINISHED || errorCode != 0) {
print("Transmission failed: $errorCode")
}
},
{resultList-> resultList.forEach {
if (it){
//Transmission successful
}else{
//Transfer failed
}
}})