From b74634a132184ab2c1761ec2fd6405717773befd Mon Sep 17 00:00:00 2001 From: Michael Szafranek <460619+mfs12@users.noreply.github.com> Date: Sat, 11 Dec 2021 16:50:25 +0100 Subject: Fix enumeration of firmware update modules (#553) * FirmwareUpdater: moved cluttered variables into enum * GCodes: replaced cluttering varibale with firmware update enumeration * boards: removed obsolete firmwareupdate module counter * FirmwareUpdater: renamed module counter in module enumeration --- src/Comms/FirmwareUpdater.cpp | 4 ---- src/Comms/FirmwareUpdater.h | 11 ++++++++++- src/Duet3Mini/Pins_Duet3Mini.h | 2 -- src/Duet3_V06/Pins_Duet3_V06.h | 2 -- src/DuetM/Pins_DuetM.h | 1 - src/DuetNG/Pins_DuetNG.h | 4 ---- src/GCodes/GCodes3.cpp | 2 +- src/GCodes/GCodes4.cpp | 2 +- src/Pccb/Pins_Pccb.h | 1 - 9 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/Comms/FirmwareUpdater.cpp b/src/Comms/FirmwareUpdater.cpp index 21986a8c..a5283c67 100644 --- a/src/Comms/FirmwareUpdater.cpp +++ b/src/Comms/FirmwareUpdater.cpp @@ -23,10 +23,6 @@ namespace FirmwareUpdater { - const unsigned int WifiFirmwareModule = 1; - // Module 2 used to be the DWC binary file but is no longer used - const unsigned int WifiExternalFirmwareModule = 3; - // Check that the prerequisites are satisfied. // Return true if yes, else print a message and return false. GCodeResult CheckFirmwareUpdatePrerequisites( diff --git a/src/Comms/FirmwareUpdater.h b/src/Comms/FirmwareUpdater.h index 8c897669..bada8a81 100644 --- a/src/Comms/FirmwareUpdater.h +++ b/src/Comms/FirmwareUpdater.h @@ -12,9 +12,18 @@ namespace FirmwareUpdater { + enum { + Mainboard = 0, + unused = 2, // Module 2 used to be the DWC binary file but is no longer used +#if HAS_WIFI_NETWORKING + WifiFirmwareModule = 1, + WifiExternalFirmwareModule = 3, +#endif #if HAS_AUX_DEVICES - const unsigned int PanelDueFirmwareModule = 4; + PanelDueFirmwareModule = 4, #endif + NumUpdateModules + }; GCodeResult CheckFirmwareUpdatePrerequisites( Bitmap moduleMap, diff --git a/src/Duet3Mini/Pins_Duet3Mini.h b/src/Duet3Mini/Pins_Duet3Mini.h index 5f879b2a..32f4aa38 100644 --- a/src/Duet3Mini/Pins_Duet3Mini.h +++ b/src/Duet3Mini/Pins_Duet3Mini.h @@ -20,8 +20,6 @@ # define FIRMWARE_NAME "RepRapFirmware for Duet 3 Mini 5+" # endif -constexpr size_t NumFirmwareUpdateModules = 5; // 0 = mainboard, 1 = wifi, 4 = PanelDue, other values unused - #define IAP_FIRMWARE_FILE "Duet3Firmware_" BOARD_SHORT_NAME ".uf2" #define IAP_UPDATE_FILE "Duet3_SDiap32_" BOARD_SHORT_NAME ".bin" #define IAP_UPDATE_FILE_SBC "Duet3_SBCiap32_" BOARD_SHORT_NAME ".bin" diff --git a/src/Duet3_V06/Pins_Duet3_V06.h b/src/Duet3_V06/Pins_Duet3_V06.h index ce5e2b7f..773b1d09 100644 --- a/src/Duet3_V06/Pins_Duet3_V06.h +++ b/src/Duet3_V06/Pins_Duet3_V06.h @@ -9,8 +9,6 @@ #define FIRMWARE_NAME "RepRapFirmware for Duet 3 MB6HC" #define IAP_FIRMWARE_FILE "Duet3Firmware_" BOARD_SHORT_NAME ".bin" -constexpr size_t NumFirmwareUpdateModules = 5; // 0 = mainboard, 4 = PanelDue, values in between unused - #define IAP_UPDATE_FILE "Duet3_SDiap32_" BOARD_SHORT_NAME ".bin" #define IAP_UPDATE_FILE_SBC "Duet3_SBCiap32_" BOARD_SHORT_NAME ".bin" constexpr uint32_t IAP_IMAGE_START = 0x20458000; // last 32kb of RAM diff --git a/src/DuetM/Pins_DuetM.h b/src/DuetM/Pins_DuetM.h index eb5318b9..3b6e402b 100644 --- a/src/DuetM/Pins_DuetM.h +++ b/src/DuetM/Pins_DuetM.h @@ -15,7 +15,6 @@ #define FIRMWARE_NAME "RepRapFirmware for Duet 2 Maestro" #define DEFAULT_BOARD_TYPE BoardType::DuetM_10 -constexpr size_t NumFirmwareUpdateModules = 5; // 0 = mainboard, 4 = PanelDue, values in between unused #define IAP_FIRMWARE_FILE "DuetMaestroFirmware.bin" #define IAP_UPDATE_FILE "Duet2_SDiap32_Maestro.bin" constexpr uint32_t IAP_IMAGE_START = 0x20018000; diff --git a/src/DuetNG/Pins_DuetNG.h b/src/DuetNG/Pins_DuetNG.h index ff675125..34d10abb 100644 --- a/src/DuetNG/Pins_DuetNG.h +++ b/src/DuetNG/Pins_DuetNG.h @@ -20,8 +20,6 @@ #define IAP_FIRMWARE_FILE "Duet2Firmware_SBC.bin" #define IAP_UPDATE_FILE_SBC "Duet2_SBCiap32_SBC.bin" -constexpr size_t NumFirmwareUpdateModules = 5; // 0 = mainboard, 4 = PanelDue, values in between unused - #else #define FIRMWARE_NAME "RepRapFirmware for Duet 2 WiFi/Ethernet" @@ -30,8 +28,6 @@ constexpr size_t NumFirmwareUpdateModules = 5; // 0 = mainboard, 4 = PanelDue, #define IAP_UPDATE_FILE "Duet2_SDiap32_WiFiEth.bin" // using the same IAP file for both Duet WiFi and Duet Ethernet #define WIFI_FIRMWARE_FILE "DuetWiFiServer.bin" -constexpr size_t NumFirmwareUpdateModules = 5; // 4 modules, plus one for manual upload to WiFi module (module 2 is now unused) - #endif constexpr uint32_t IAP_IMAGE_START = 0x20018000; // IAP is loaded into the last 32kb of RAM diff --git a/src/GCodes/GCodes3.cpp b/src/GCodes/GCodes3.cpp index 0a13640b..fdd14ea1 100644 --- a/src/GCodes/GCodes3.cpp +++ b/src/GCodes/GCodes3.cpp @@ -1166,7 +1166,7 @@ GCodeResult GCodes::UpdateFirmware(GCodeBuffer& gb, const StringRef &reply) for (size_t i = 0; i < numUpdateModules; ++i) { uint32_t t = modulesToUpdate[i]; - if (t >= NumFirmwareUpdateModules) + if (t >= FirmwareUpdater::NumUpdateModules) { reply.printf("Invalid module number '%" PRIu32 "'\n", t); firmwareUpdateModuleMap.Clear(); diff --git a/src/GCodes/GCodes4.cpp b/src/GCodes/GCodes4.cpp index f2ccb6b5..ca148aff 100644 --- a/src/GCodes/GCodes4.cpp +++ b/src/GCodes/GCodes4.cpp @@ -544,7 +544,7 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) noexcept gb.TryGetQuotedString('P', filenameString.GetRef(), dummy); } catch (const GCodeException&) { } - for (unsigned int module = 1; module < NumFirmwareUpdateModules; ++module) + for (unsigned int module = 1; module < FirmwareUpdater::NumUpdateModules; ++module) { if (firmwareUpdateModuleMap.IsBitSet(module)) { diff --git a/src/Pccb/Pins_Pccb.h b/src/Pccb/Pins_Pccb.h index 1ca556ff..a069e505 100644 --- a/src/Pccb/Pins_Pccb.h +++ b/src/Pccb/Pins_Pccb.h @@ -25,7 +25,6 @@ # error Unknown board #endif -constexpr size_t NumFirmwareUpdateModules = 1; // 1 module #define IAP_FIRMWARE_FILE "PccbFirmware.bin" #define IAP_UPDATE_FILE "PccbIAP.bin" constexpr uint32_t IAP_IMAGE_START = 0x20010000; -- cgit v1.2.3