diff --git a/libraries/OTAUpdate/src/OTAUpdate.cpp b/libraries/OTAUpdate/src/OTAUpdate.cpp index 50ce57233..6e534cf23 100644 --- a/libraries/OTAUpdate/src/OTAUpdate.cpp +++ b/libraries/OTAUpdate/src/OTAUpdate.cpp @@ -42,13 +42,26 @@ int OTAUpdate::begin() { return static_cast(Error::Modem); } -int OTAUpdate::begin(const char* file_path) { +int OTAUpdate::begin(const char* file_path, bool formatOnFail) { string res = ""; + int fwVersion = 0; + + if(modem.write(string(PROMPT(_FWVERSION_U32)), res, CMD_READ(_FWVERSION_U32))) { + fwVersion = atoi(res.c_str()); + } + if ( file_path != nullptr && strlen(file_path) > 0) { - if (modem.write(string(PROMPT(_OTA_BEGIN)), res, "%s%s\r\n", CMD_WRITE(_OTA_BEGIN), file_path)) { - return atoi(res.c_str()); + if(fwVersion >= 0x50) { + if (modem.write(string(PROMPT(_OTA_BEGIN)), res, "%s%s,%d\r\n", CMD_WRITE(_OTA_BEGIN), file_path, formatOnFail)) { + return atoi(res.c_str()); + } + return static_cast(Error::Modem); + } else { + if (modem.write(string(PROMPT(_OTA_BEGIN)), res, "%s%s\r\n", CMD_WRITE(_OTA_BEGIN), file_path)) { + return atoi(res.c_str()); + } + return static_cast(Error::Modem); } - return static_cast(Error::Modem); } return static_cast(Error::Library); } diff --git a/libraries/OTAUpdate/src/OTAUpdate.h b/libraries/OTAUpdate/src/OTAUpdate.h index 9b1b171c0..110faea38 100644 --- a/libraries/OTAUpdate/src/OTAUpdate.h +++ b/libraries/OTAUpdate/src/OTAUpdate.h @@ -39,7 +39,7 @@ class OTAUpdate { OTAUpdate(); int setCACert(const char* root_ca); int begin(); - int begin(const char* file_path); + int begin(const char* file_path, bool formatOnFail = false); int download(const char* url); int download(const char* url, const char* file_path); int verify();