From 6f5a67491c60079b986036dec7dcaa869119f144 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Tue, 6 Dec 2022 13:18:52 +0100 Subject: [PATCH 1/2] Fix `M862.4` with [strict] mode Max 8 falvor versions --- Firmware/Configuration.h | 2 +- Firmware/util.cpp | 41 ++++++++++++++++++++-------------------- Firmware/util.h | 14 +++++++++----- 3 files changed, 31 insertions(+), 26 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 065366641d64..363909e05aa6 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -20,7 +20,7 @@ extern PGM_P sPrinterName; #define FW_MINOR 13 #define FW_REVISION 0 #define FW_FLAVOR ALPHA //uncomment if DEBUG, DEVEL, ALPHA, BETA or RC -#define FW_FLAVERSION 1 //uncomment if FW_FLAVOR is defined and versioning is needed. +#define FW_FLAVERSION 1 //uncomment if FW_FLAVOR is defined and versioning is needed. Limited to max 8. #ifndef FW_FLAVOR #define FW_VERSION STR(FW_MAJOR) "." STR(FW_MINOR) "." STR(FW_REVISION) #else diff --git a/Firmware/util.cpp b/Firmware/util.cpp index 6c4187d61c16..0529360297ff 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -378,27 +378,28 @@ void fw_version_check(const char *pVersion) { nCompareValueResult += mCompareValue(aVersion[3], eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_FLAVOR)); if (nCompareValueResult == COMPARE_VALUE_EQUAL) return; - if ((nCompareValueResult < COMPARE_VALUE_EQUAL) && oCheckVersion == ClCheckVersion::_Warn) + if ((nCompareValueResult < COMPARE_VALUE_EQUAL) && (oCheckVersion == ClCheckVersion::_Warn || oCheckVersion == ClCheckVersion::_Strict)) return; -// SERIAL_ECHO_START; -// SERIAL_ECHOLNPGM("Printer FW version differs from the G-code ..."); -// SERIAL_ECHOPGM("actual : "); -// SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_MAJOR)); -// SERIAL_ECHO('.'); -// SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_MINOR)); -// SERIAL_ECHO('.'); -// SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_REVISION)); -// SERIAL_ECHO('.'); -// SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_FLAVOR)); -// SERIAL_ECHOPGM("\nexpected: "); -// SERIAL_ECHO(aVersion[0]); -// SERIAL_ECHO('.'); -// SERIAL_ECHO(aVersion[1]); -// SERIAL_ECHO('.'); -// SERIAL_ECHO(aVersion[2]); -// SERIAL_ECHO('.'); -// SERIAL_ECHOLN(aVersion[3]); - +/* + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Printer FW version differs from the G-code ..."); + SERIAL_ECHOPGM("actual : "); + SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_MAJOR)); + SERIAL_ECHO('.'); + SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_MINOR)); + SERIAL_ECHO('.'); + SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_REVISION)); + SERIAL_ECHO('.'); + SERIAL_ECHO(eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_FLAVOR)); + SERIAL_ECHOPGM("\nexpected: "); + SERIAL_ECHO(aVersion[0]); + SERIAL_ECHO('.'); + SERIAL_ECHO(aVersion[1]); + SERIAL_ECHO('.'); + SERIAL_ECHO(aVersion[2]); + SERIAL_ECHO('.'); + SERIAL_ECHOLN(aVersion[3]); +*/ switch (oCheckVersion) { case ClCheckVersion::_Warn: // lcd_show_fullscreen_message_and_wait_P(_i("Printer FW version differs from the G-code. Continue?")); diff --git a/Firmware/util.h b/Firmware/util.h index fade140fbe0e..03943b1671f5 100644 --- a/Firmware/util.h +++ b/Firmware/util.h @@ -4,12 +4,16 @@ extern const char* FW_VERSION_STR_P(); // Definition of a firmware flavor numerical values. +// To keep it short as possible +// DEVs/ALPHAs/BETAs limited to max 8 flavor versions +// RCs limited to 32 flavor versions +// Final Release always 64 as highest enum FirmwareRevisionFlavorType : uint16_t { - FIRMWARE_REVISION_RELEASED = 0, - FIRMWARE_REVISION_DEV = 0x0100, - FIRMWARE_REVISION_ALPHA = 0x0200, - FIRMWARE_REVISION_BETA = 0x0300, - FIRMWARE_REVISION_RC = 0x0400 + FIRMWARE_REVISION_RELEASED = 0x0040, + FIRMWARE_REVISION_DEV = 0x0000, + FIRMWARE_REVISION_ALPHA = 0x008, + FIRMWARE_REVISION_BETA = 0x0010, + FIRMWARE_REVISION_RC = 0x0020 }; extern bool show_upgrade_dialog_if_version_newer(const char *version_string); From 0cedb92ac69910bc7598c239147eba3cad7f18e6 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Wed, 7 Dec 2022 18:59:29 +0100 Subject: [PATCH 2/2] Simplify firmware/gcode version comparisons --- Firmware/util.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Firmware/util.cpp b/Firmware/util.cpp index 0529360297ff..664003905969 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -366,20 +366,19 @@ uint8_t mCompareValue(uint16_t nX, uint16_t nY) { } void fw_version_check(const char *pVersion) { - uint16_t aVersion[4]; - uint8_t nCompareValueResult; - if (oCheckVersion == ClCheckVersion::_None) return; + + uint16_t aVersion[4]; + uint8_t nCompareValueResult; parse_version(pVersion, aVersion); nCompareValueResult = mCompareValue(aVersion[0], eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_MAJOR)) << 6; nCompareValueResult += mCompareValue(aVersion[1], eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_MINOR)) << 4; nCompareValueResult += mCompareValue(aVersion[2], eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_REVISION)) << 2; nCompareValueResult += mCompareValue(aVersion[3], eeprom_read_word((uint16_t *)EEPROM_FIRMWARE_VERSION_FLAVOR)); - if (nCompareValueResult == COMPARE_VALUE_EQUAL) - return; - if ((nCompareValueResult < COMPARE_VALUE_EQUAL) && (oCheckVersion == ClCheckVersion::_Warn || oCheckVersion == ClCheckVersion::_Strict)) + if (nCompareValueResult <= COMPARE_VALUE_EQUAL) return; + /* SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Printer FW version differs from the G-code ..."); @@ -422,10 +421,9 @@ void fw_version_check(const char *pVersion) { void gcode_level_check(uint16_t nGcodeLevel) { if (oCheckGcode == ClCheckGcode::_None) return; - if (nGcodeLevel == (uint16_t)GCODE_LEVEL) - return; - if ((nGcodeLevel < (uint16_t)GCODE_LEVEL) && (oCheckGcode == ClCheckGcode::_Warn)) + if (nGcodeLevel <= (uint16_t)GCODE_LEVEL) return; + // SERIAL_ECHO_START; // SERIAL_ECHOLNPGM("Printer G-code level differs from the G-code ..."); // SERIAL_ECHOPGM("actual : ");