diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-08-25 12:53:00 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-08-25 12:53:38 +0300 |
commit | d6a32f6a1979de5353e1cbf028b2794747b2a10d (patch) | |
tree | 50d9999ccad4c4e3d030be003cfcace3d3287b77 | |
parent | 5b02fa6704860b289ae0a711f775a71d7afee8eb (diff) |
Fall back to /sys if IAP not found in /firmware
-rw-r--r-- | src/Platform/RepRap.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Platform/RepRap.cpp b/src/Platform/RepRap.cpp index 9137bb14..f63efce3 100644 --- a/src/Platform/RepRap.cpp +++ b/src/Platform/RepRap.cpp @@ -2740,7 +2740,7 @@ bool RepRap::CheckFirmwareUpdatePrerequisites(const StringRef& reply, const Stri return false; } - if (!platform->FileExists(FIRMWARE_DIRECTORY, IAP_UPDATE_FILE)) + if (!platform->FileExists(FIRMWARE_DIRECTORY, IAP_UPDATE_FILE) && !platform->FileExists(DEFAULT_SYS_DIR, IAP_UPDATE_FILE)) { reply.printf("In-application programming binary \"%s\" not found", FIRMWARE_DIRECTORY IAP_UPDATE_FILE); return false; @@ -2754,14 +2754,18 @@ bool RepRap::CheckFirmwareUpdatePrerequisites(const StringRef& reply, const Stri void RepRap::UpdateFirmware(const StringRef& filenameRef) noexcept { #if HAS_MASS_STORAGE - FileStore * const iapFile = platform->OpenFile(FIRMWARE_DIRECTORY, IAP_UPDATE_FILE, OpenMode::read); + FileStore * iapFile = platform->OpenFile(FIRMWARE_DIRECTORY, IAP_UPDATE_FILE, OpenMode::read); if (iapFile == nullptr) { - platform->Message(FirmwareUpdateMessage, "IAP file '" FIRMWARE_DIRECTORY IAP_UPDATE_FILE "' not found\n"); - return; + iapFile = platform->OpenFile(DEFAULT_SYS_DIR, IAP_UPDATE_FILE, OpenMode::read); + if (iapFile == nullptr) + { + // This should not happen because we already checked that the file exists, so use a simplified error message + platform->Message(FirmwareUpdateMessage, "Missing IAP"); + return; + } } - PrepareToLoadIap(); // Use RAM-based IAP |