From 93c64ee20a1f59f16765e03ff32556481cc01525 Mon Sep 17 00:00:00 2001 From: Andrea Gilardoni Date: Wed, 22 May 2024 13:59:50 +0200 Subject: [PATCH] splitting update into verify function --- src/Arduino_ESP32_OTA.cpp | 20 ++++++++++++++++---- src/Arduino_ESP32_OTA.h | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/Arduino_ESP32_OTA.cpp b/src/Arduino_ESP32_OTA.cpp index d8052f2..39dd327 100644 --- a/src/Arduino_ESP32_OTA.cpp +++ b/src/Arduino_ESP32_OTA.cpp @@ -312,8 +312,10 @@ void Arduino_ESP32_OTA::clean() } } -Arduino_ESP32_OTA::Error Arduino_ESP32_OTA::update() +Arduino_ESP32_OTA::Error Arduino_ESP32_OTA::verify() { + assert(_context != nullptr); + /* ... then finalize ... */ _context->calculatedCrc32 ^= 0xFFFFFFFF; @@ -323,14 +325,24 @@ Arduino_ESP32_OTA::Error Arduino_ESP32_OTA::update() return Error::OtaHeaderCrc; } + clean(); + + return Error::None; +} + +Arduino_ESP32_OTA::Error Arduino_ESP32_OTA::update() +{ + Arduino_ESP32_OTA::Error res = Error::None; + if(_context != nullptr && (res = verify()) != Error::None) { + return res; + } + if (!Update.end(true)) { DEBUG_ERROR("%s: Failure to apply OTA update", __FUNCTION__); return Error::OtaStorageEnd; } - clean(); - - return Error::None; + return res; } void Arduino_ESP32_OTA::reset() diff --git a/src/Arduino_ESP32_OTA.h b/src/Arduino_ESP32_OTA.h index df1934c..e104ab8 100644 --- a/src/Arduino_ESP32_OTA.h +++ b/src/Arduino_ESP32_OTA.h @@ -114,6 +114,7 @@ class Arduino_ESP32_OTA size_t downloadSize(); virtual void write_byte_to_flash(uint8_t data); + Arduino_ESP32_OTA::Error verify(); Arduino_ESP32_OTA::Error update(); void reset(); static bool isCapable();