diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-09-10 15:00:16 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-09-10 15:00:16 +0300 |
commit | c81d175f0419cbd813e7afd944af4eb273a8ed3b (patch) | |
tree | ccba54400a2454ddceb89c763c482c463e87bddc | |
parent | 33397d6279fd243b5d6a5fe4040814ca78b421a9 (diff) | |
parent | 1b9a248dd5e1cb4c1a03c0c6159183f45de359d5 (diff) |
Merge branch '3.3-dev' of https://github.com/Duet3D/RepRapFirmware.git into 3.3-dev
-rw-r--r-- | src/Comms/FirmwareUpdater.cpp | 2 | ||||
-rw-r--r-- | src/GCodes/GCodes3.cpp | 2 | ||||
-rw-r--r-- | src/Networking/ESP8266WiFi/WifiFirmwareUploader.cpp | 13 | ||||
-rw-r--r-- | src/Networking/ESP8266WiFi/WifiFirmwareUploader.h | 2 | ||||
-rw-r--r-- | src/Platform/RepRap.cpp | 14 |
5 files changed, 21 insertions, 12 deletions
diff --git a/src/Comms/FirmwareUpdater.cpp b/src/Comms/FirmwareUpdater.cpp index 3d7d2de7..5b671bcf 100644 --- a/src/Comms/FirmwareUpdater.cpp +++ b/src/Comms/FirmwareUpdater.cpp @@ -122,7 +122,7 @@ namespace FirmwareUpdater if (uploader != nullptr) { const char* binaryFilename = filenameRef.IsEmpty() ? WIFI_FIRMWARE_FILE : filenameRef.c_str(); - uploader->SendUpdateFile(binaryFilename, FIRMWARE_DIRECTORY, WifiFirmwareUploader::FirmwareAddress); + uploader->SendUpdateFile(binaryFilename, WifiFirmwareUploader::FirmwareAddress); } } break; diff --git a/src/GCodes/GCodes3.cpp b/src/GCodes/GCodes3.cpp index 000da338..2520da70 100644 --- a/src/GCodes/GCodes3.cpp +++ b/src/GCodes/GCodes3.cpp @@ -1186,7 +1186,7 @@ GCodeResult GCodes::UpdateFirmware(GCodeBuffer& gb, const StringRef &reply) { if (firmwareUpdateModuleMap.CountSetBits() > 1) { - reply.copy("Filename can only be provided when updating excactly one module\n"); + reply.copy("Filename can only be provided when updating exactly one module\n"); firmwareUpdateModuleMap.Clear(); return GCodeResult::error; } diff --git a/src/Networking/ESP8266WiFi/WifiFirmwareUploader.cpp b/src/Networking/ESP8266WiFi/WifiFirmwareUploader.cpp index fe38ee6d..17a922c2 100644 --- a/src/Networking/ESP8266WiFi/WifiFirmwareUploader.cpp +++ b/src/Networking/ESP8266WiFi/WifiFirmwareUploader.cpp @@ -733,14 +733,19 @@ void WifiFirmwareUploader::Spin() noexcept } // Try to upload the given file at the given address -void WifiFirmwareUploader::SendUpdateFile(const char *file, const char *dir, uint32_t address) noexcept +void WifiFirmwareUploader::SendUpdateFile(const char *file, uint32_t address) noexcept { Platform& platform = reprap.GetPlatform(); - uploadFile = platform.OpenFile(dir, file, OpenMode::read); + uploadFile = platform.OpenFile(FIRMWARE_DIRECTORY, file, OpenMode::read); if (uploadFile == nullptr) { - MessageF("Failed to open file %s\n", file); - return; + // Fall back to /sys if the wifi file wasn't found in /firmware + uploadFile = platform.OpenFile(DEFAULT_SYS_DIR, file, OpenMode::read); + if (uploadFile == nullptr) + { + MessageF("Failed to open file %s%s\n", FIRMWARE_DIRECTORY, file); + return; + } } fileSize = uploadFile->Length(); diff --git a/src/Networking/ESP8266WiFi/WifiFirmwareUploader.h b/src/Networking/ESP8266WiFi/WifiFirmwareUploader.h index 470d1328..77c60203 100644 --- a/src/Networking/ESP8266WiFi/WifiFirmwareUploader.h +++ b/src/Networking/ESP8266WiFi/WifiFirmwareUploader.h @@ -17,7 +17,7 @@ class WifiFirmwareUploader public: WifiFirmwareUploader(UARTClass& port, WiFiInterface &iface) noexcept; bool IsReady() const noexcept; - void SendUpdateFile(const char *file, const char *dir, uint32_t address) noexcept; + void SendUpdateFile(const char *file, uint32_t address) noexcept; void Spin() noexcept; static const uint32_t FirmwareAddress = 0x00000000; diff --git a/src/Platform/RepRap.cpp b/src/Platform/RepRap.cpp index 55b6d239..091a4322 100644 --- a/src/Platform/RepRap.cpp +++ b/src/Platform/RepRap.cpp @@ -2744,7 +2744,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; @@ -2758,14 +2758,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 |