diff --git a/cores/esp32/esp32-hal-misc.c b/cores/esp32/esp32-hal-misc.c index d50885b32dd..1a71b0e86f9 100644 --- a/cores/esp32/esp32-hal-misc.c +++ b/cores/esp32/esp32-hal-misc.c @@ -200,9 +200,14 @@ void initVariant() {} void init() __attribute__((weak)); void init() {} +#ifdef CONFIG_APP_ROLLBACK_ENABLE bool verifyOta() __attribute__((weak)); bool verifyOta() { return true; } +bool verifyRollbackLater() __attribute__((weak)); +bool verifyRollbackLater() { return false; } +#endif + #ifdef CONFIG_BT_ENABLED //overwritten in esp32-hal-bt.c bool btInUse() __attribute__((weak)); @@ -212,15 +217,17 @@ bool btInUse(){ return false; } void initArduino() { #ifdef CONFIG_APP_ROLLBACK_ENABLE - const esp_partition_t *running = esp_ota_get_running_partition(); - esp_ota_img_states_t ota_state; - if (esp_ota_get_state_partition(running, &ota_state) == ESP_OK) { - if (ota_state == ESP_OTA_IMG_PENDING_VERIFY) { - if (verifyOta()) { - esp_ota_mark_app_valid_cancel_rollback(); - } else { - log_e("OTA verification failed! Start rollback to the previous version ..."); - esp_ota_mark_app_invalid_rollback_and_reboot(); + if(!verifyRollbackLater()){ + const esp_partition_t *running = esp_ota_get_running_partition(); + esp_ota_img_states_t ota_state; + if (esp_ota_get_state_partition(running, &ota_state) == ESP_OK) { + if (ota_state == ESP_OTA_IMG_PENDING_VERIFY) { + if (verifyOta()) { + esp_ota_mark_app_valid_cancel_rollback(); + } else { + log_e("OTA verification failed! Start rollback to the previous version ..."); + esp_ota_mark_app_invalid_rollback_and_reboot(); + } } } }