OTA文件下載完之后的处理

1:imageBlockResponseParse

   块请求应答

emberAfOtaStorageFinishDownloadCallback(offset);  //完成下载
continueImageVerification(EMBER_AF_IMAGE_UNKNOWN);  、、映象的状态,为不知道

}

2:

recordUpgradeStatus(BOOTLOAD_STATE_VERIFY_IMAGE);  、、核对映象

customVerifyStatus = NEW_CUSTOM_VERIFY;  //新的映象存在
setTimer(EMBER_AF_PLUGIN_OTA_CLIENT_VERIFY_DELAY_MS)

continueImageVerification(EMBER_AF_IMAGE_VERIFY_IN_PROGRESS);不停的核对映象

3:核对成功

downloadAndVerifyFinish(EMBER_AF_OTA_DOWNLOAD_AND_VERIFY_SUCCESS)  核对成功

askServerToRunUpgrade(START_NEW_TIMER);

请求服务器去升级,发送升级结束,如果没回,就强制升级

4:网关回了什么时候升级

waitTime=500;// ZGM  
setTimer(waitTime);
emberAfCoreFlush();
otaPrintln("Countdown to upgrade: %d ms", waitTime);
emberAfCoreFlush();
recordUpgradeStatus(BOOTLOAD_STATE_COUNTDOWN_TO_UPGRADE);  500毫秒之后去升级

5:

case BOOTLOAD_STATE_COUNTDOWN_TO_UPGRADE:
runUpgrade();  时间到升级

 emberAfOtaClientBootloadCallback(&currentDownloadFile);

6:最终升级的地方

uint8_t emberAfOtaBootloadCallback(const EmberAfOtaImageId* id,uint16_t ncpUpgradeTagId)

{
halAppBootloaderInstallNewImage();  升级文件,需要等1分钟左右

emberAfCorePrintln("Bootloading failed!");

// If we got here, it is a failure.
return 1;
}

2:

static void otaClientTick(void)
{

switch (currentBootloadState) {
case BOOTLOAD_STATE_DOWNLOAD:
continueImageDownload();
break;
case BOOTLOAD_STATE_VERIFY_IMAGE:
continueImageVerification(EMBER_AF_IMAGE_VERIFY_IN_PROGRESS);
break;
case BOOTLOAD_STATE_WAITING_FOR_UPGRADE_MESSAGE:
askServerToRunUpgrade(TIMEOUT_REACHED);
break;
case BOOTLOAD_STATE_COUNTDOWN_TO_UPGRADE:
runUpgrade();
case BOOTLOAD_STATE_UPGRADE_VIA_OUT_OF_BAND:
// Does nothing right now after timeout
default:
// Do nothing. Invalid state
break;
}
}

2:

猜你喜欢

转载自www.cnblogs.com/zhuguangming/p/9648373.html
OTA