From 610ea0a9d30f1bc566eacda7ceab7976e228957d Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 31 Jan 2024 17:56:46 +1300 Subject: [PATCH 01/39] =?UTF-8?q?=F0=9F=94=A8=20No=20strlcpy=20in=20Window?= =?UTF-8?q?s=20(#26748)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ini/native.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/ini/native.ini b/ini/native.ini index 86608ff3d71a..ba5ddbc4cc01 100644 --- a/ini/native.ini +++ b/ini/native.ini @@ -140,5 +140,4 @@ build_src_flags = ${simulator_common.build_src_flags} -fpermissive build_flags = ${simulator_common.build_flags} ${simulator_common.debug_build_flags} -IC:\\msys64\\mingw64\\include\\SDL2 -fno-stack-protector -Wl,-subsystem,windows -ldl -lmingw32 -lSDL2main -lSDL2 -lSDL2_net -lopengl32 -lssp - -DHAS_LIBBSD build_type = debug From 0266e7fe535cbdd2a10850fd0fd71f1ae2617db2 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Tue, 30 Jan 2024 20:58:06 -0800 Subject: [PATCH 02/39] =?UTF-8?q?=F0=9F=93=9D=20Biqu=20=3D>=20BIQU=20(#267?= =?UTF-8?q?35)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h index 1a72572e231b..fd9aa53a9471 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_SE_BX_common.h @@ -23,7 +23,7 @@ #include "env_validate.h" -#define DEFAULT_MACHINE_NAME "Biqu BX" +#define DEFAULT_MACHINE_NAME "BIQU BX" // Onboard I2C EEPROM #define I2C_EEPROM From 1c6cfc3ffeac8fdf2cd6d61529ad864578a4803f Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Tue, 30 Jan 2024 21:00:02 -0800 Subject: [PATCH 03/39] =?UTF-8?q?=F0=9F=90=9B=20Fix=20I/J/K=20chopper=20ti?= =?UTF-8?q?ming=20(#26736)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #19112 --- Marlin/src/module/stepper/trinamic.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/module/stepper/trinamic.h b/Marlin/src/module/stepper/trinamic.h index a9832945a5ab..3ae784be9718 100644 --- a/Marlin/src/module/stepper/trinamic.h +++ b/Marlin/src/module/stepper/trinamic.h @@ -248,7 +248,7 @@ void reset_trinamic_drivers(); static constexpr chopper_timing_t chopper_timing_I = CHOPPER_TIMING_I; #if ENABLED(SOFTWARE_DRIVER_ENABLE) #define I_ENABLE_INIT() NOOP - #define I_ENABLE_WRITE(STATE) stepperI.toff((STATE)==I_ENABLE_ON ? chopper_timing.toff : 0) + #define I_ENABLE_WRITE(STATE) stepperI.toff((STATE)==I_ENABLE_ON ? chopper_timing_I.toff : 0) #define I_ENABLE_READ() stepperI.isEnabled() #endif #if AXIS_HAS_DEDGE(I) @@ -262,7 +262,7 @@ void reset_trinamic_drivers(); static constexpr chopper_timing_t chopper_timing_J = CHOPPER_TIMING_J; #if ENABLED(SOFTWARE_DRIVER_ENABLE) #define J_ENABLE_INIT() NOOP - #define J_ENABLE_WRITE(STATE) stepperJ.toff((STATE)==J_ENABLE_ON ? chopper_timing.toff : 0) + #define J_ENABLE_WRITE(STATE) stepperJ.toff((STATE)==J_ENABLE_ON ? chopper_timing_J.toff : 0) #define J_ENABLE_READ() stepperJ.isEnabled() #endif #if AXIS_HAS_DEDGE(J) @@ -276,7 +276,7 @@ void reset_trinamic_drivers(); static constexpr chopper_timing_t chopper_timing_K = CHOPPER_TIMING_K; #if ENABLED(SOFTWARE_DRIVER_ENABLE) #define K_ENABLE_INIT() NOOP - #define K_ENABLE_WRITE(STATE) stepperK.toff((STATE)==K_ENABLE_ON ? chopper_timing.toff : 0) + #define K_ENABLE_WRITE(STATE) stepperK.toff((STATE)==K_ENABLE_ON ? chopper_timing_K.toff : 0) #define K_ENABLE_READ() stepperK.isEnabled() #endif #if AXIS_HAS_DEDGE(K) From ef04680cc556fb5aa8637fb767f7ce11be30ca2a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 31 Jan 2024 06:06:35 +0000 Subject: [PATCH 04/39] [cron] Bump distribution date (2024-01-31) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 6b3eac583b4c..662a13db99c7 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-01-30" +//#define STRING_DISTRIBUTION_DATE "2024-01-31" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e878c24631e7..d201a014cc6d 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-01-30" + #define STRING_DISTRIBUTION_DATE "2024-01-31" #endif /** From f9d5ee04b4930fa7b876c278e80072060463f55c Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Thu, 1 Feb 2024 07:33:42 +1300 Subject: [PATCH 05/39] =?UTF-8?q?=F0=9F=A9=B9=20Patch=20STM32=20serial=20U?= =?UTF-8?q?UID=20(#26737)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #26715 Co-authored-by: Scott Lahteine --- Marlin/src/feature/tmc_util.cpp | 2 +- Marlin/src/gcode/host/M115.cpp | 15 +++++---- Marlin/src/libs/hex_print.cpp | 58 +++++++++++++-------------------- Marlin/src/libs/hex_print.h | 9 ++--- 4 files changed, 36 insertions(+), 48 deletions(-) diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index bff6872e4da8..421f9b0c22e1 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -763,7 +763,7 @@ SERIAL_CHAR('\t'); st.printLabel(); SERIAL_CHAR('\t'); - print_hex_long(drv_status, ':'); + print_hex_long(drv_status, ':', true); if (drv_status == 0xFFFFFFFF || drv_status == 0) SERIAL_ECHOPGM("\t Bad response!"); SERIAL_EOL(); break; diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index d99737a261c6..b2f3496a6807 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -88,14 +88,15 @@ void GcodeSuite::M115() { * This code should work on all STM32-based boards. */ #if ENABLED(STM32_UID_SHORT_FORM) - uint32_t * const UID = (uint32_t*)UID_BASE; - SERIAL_ECHO(hex_long(UID[0]), hex_long(UID[1]), hex_long(UID[2])); + const uint32_t * const UID = (uint32_t*)UID_BASE; + for (uint8_t i = 0; i < 3; i++) print_hex_long(UID[i]); #else - uint16_t * const UID = (uint16_t*)UID_BASE; - SERIAL_ECHO( - F("CEDE2A2F-"), hex_word(UID[0]), C('-'), hex_word(UID[1]), C('-'), hex_word(UID[2]), C('-'), - hex_word(UID[3]), hex_word(UID[4]), hex_word(UID[5]) - ); + const uint16_t * const UID = (uint16_t*)UID_BASE; // Little-endian! + SERIAL_ECHO(F("CEDE2A2F-")); + for (uint8_t i = 1; i <= 6; i++) { + print_hex_word(UID[(i % 2) ? i : i - 2]); // 1111-0000-3333-222255554444 + if (i <= 3) SERIAL_ECHO(C('-')); + } #endif #endif diff --git a/Marlin/src/libs/hex_print.cpp b/Marlin/src/libs/hex_print.cpp index b9edc38c7778..9a354011e841 100644 --- a/Marlin/src/libs/hex_print.cpp +++ b/Marlin/src/libs/hex_print.cpp @@ -27,57 +27,43 @@ #include "hex_print.h" #include "../core/serial.h" -#ifdef CPU_32_BIT - constexpr int byte_start = 4; - static char _hex[] = "0x00000000"; -#else - constexpr int byte_start = 0; - static char _hex[] = "0x0000"; -#endif +static char _hex[] = "0x00000000"; // 0:adr32 2:long 4:adr16 6:word 8:byte -char* hex_byte(const uint8_t b) { - _hex[byte_start + 4] = hex_nybble(b >> 4); - _hex[byte_start + 5] = hex_nybble(b); - return &_hex[byte_start + 4]; +inline void __hex_byte(const uint8_t b, const uint8_t o=8) { + _hex[o + 0] = hex_nybble(b >> 4); + _hex[o + 1] = hex_nybble(b); } - -inline void __hex_word(const uint16_t w) { - _hex[byte_start + 2] = hex_nybble(w >> 12); - _hex[byte_start + 3] = hex_nybble(w >> 8); - _hex[byte_start + 4] = hex_nybble(w >> 4); - _hex[byte_start + 5] = hex_nybble(w); +inline void __hex_word(const uint16_t w, const uint8_t o=6) { + __hex_byte(w >> 8, o + 0); + __hex_byte(w , o + 2); } - -char* _hex_word(const uint16_t w) { - __hex_word(w); - return &_hex[byte_start + 2]; +inline void __hex_long(const uint32_t w) { + __hex_word(w >> 16, 2); + __hex_word(w , 6); } -char* _hex_long(const uintptr_t l) { - _hex[2] = hex_nybble(l >> 28); - _hex[3] = hex_nybble(l >> 24); - _hex[4] = hex_nybble(l >> 20); - _hex[5] = hex_nybble(l >> 16); - __hex_word((uint16_t)(l & 0xFFFF)); - return &_hex[2]; -} +char* hex_byte(const uint8_t b) { __hex_byte(b); return &_hex[8]; } +char* _hex_word(const uint16_t w) { __hex_word(w); return &_hex[6]; } +char* _hex_long(const uint32_t l) { __hex_long(l); return &_hex[2]; } -char* hex_address(const void * const w) { +char* hex_address(const void * const a) { #ifdef CPU_32_BIT - (void)hex_long((uintptr_t)w); + (void)_hex_long((uintptr_t)a); + return _hex; #else - (void)hex_word((uintptr_t)w); + _hex[4] = '0'; _hex[5] = 'x'; + (void)_hex_word((uintptr_t)a); + return &_hex[4]; #endif - return _hex; } void print_hex_nybble(const uint8_t n) { SERIAL_CHAR(hex_nybble(n)); } void print_hex_byte(const uint8_t b) { SERIAL_ECHO(hex_byte(b)); } -void print_hex_word(const uint16_t w) { SERIAL_ECHO(hex_word(w)); } +void print_hex_word(const uint16_t w) { SERIAL_ECHO(_hex_word(w)); } void print_hex_address(const void * const w) { SERIAL_ECHO(hex_address(w)); } -void print_hex_long(const uint32_t w, const char delimiter/*='\0'*/) { - SERIAL_ECHOPGM("0x"); +void print_hex_long(const uint32_t w, const char delimiter/*='\0'*/, const bool prefix/*=false*/) { + if (prefix) SERIAL_ECHOPGM("0x"); for (int B = 24; B >= 8; B -= 8) { print_hex_byte(w >> B); if (delimiter) SERIAL_CHAR(delimiter); diff --git a/Marlin/src/libs/hex_print.h b/Marlin/src/libs/hex_print.h index 4a5cac2b6c1c..bd1f7ce24d53 100644 --- a/Marlin/src/libs/hex_print.h +++ b/Marlin/src/libs/hex_print.h @@ -30,16 +30,17 @@ constexpr char hex_nybble(const uint8_t n) { return (n & 0xF) + ((n & 0xF) < 10 ? '0' : 'A' - 10); } -char* hex_byte(const uint8_t b); char* _hex_word(const uint16_t w); -char* hex_address(const void * const w); -char* _hex_long(const uintptr_t l); +char* _hex_long(const uint32_t l); +char* hex_byte(const uint8_t b); template char* hex_word(T w) { return _hex_word((uint16_t)w); } template char* hex_long(T w) { return _hex_long((uint32_t)w); } +char* hex_address(const void * const w); + void print_hex_nybble(const uint8_t n); void print_hex_byte(const uint8_t b); void print_hex_word(const uint16_t w); void print_hex_address(const void * const w); -void print_hex_long(const uint32_t w, const char delimiter='\0'); +void print_hex_long(const uint32_t w, const char delimiter='\0', const bool prefix=false); From d62f45bdc17f36ceb6105345df9ce2946369da10 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 1 Feb 2024 00:21:39 +0000 Subject: [PATCH 06/39] [cron] Bump distribution date (2024-02-01) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 662a13db99c7..ea96fb52ecd0 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-01-31" +//#define STRING_DISTRIBUTION_DATE "2024-02-01" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index d201a014cc6d..10b529f98eaa 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-01-31" + #define STRING_DISTRIBUTION_DATE "2024-02-01" #endif /** From 5a87bea7622207b78503cc171a0544ee6bd9d6a2 Mon Sep 17 00:00:00 2001 From: InsanityAutomation <38436470+InsanityAutomation@users.noreply.github.com> Date: Wed, 31 Jan 2024 20:24:08 -0500 Subject: [PATCH 07/39] =?UTF-8?q?=F0=9F=9A=B8=20Fix=20repeating=20"Power?= =?UTF-8?q?=20Off"=20message=20(#26755)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/power.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/feature/power.cpp b/Marlin/src/feature/power.cpp index e908c8292fd6..a9655029fbeb 100644 --- a/Marlin/src/feature/power.cpp +++ b/Marlin/src/feature/power.cpp @@ -102,12 +102,12 @@ void Power::power_on() { * Processes any PSU_POWEROFF_GCODE and makes a PS_OFF_SOUND if enabled. */ void Power::power_off() { - SERIAL_ECHOLNPGM(STR_POWEROFF); - TERN_(HAS_SUICIDE, suicide()); if (!psu_on) return; + SERIAL_ECHOLNPGM(STR_POWEROFF); + #ifdef PSU_POWEROFF_GCODE gcode.process_subcommands_now(F(PSU_POWEROFF_GCODE)); #endif From 9a5cfb3f26315822c7ae8ea043525c0e30ac08ac Mon Sep 17 00:00:00 2001 From: Abdullah YILMAZ Date: Thu, 1 Feb 2024 05:11:08 +0300 Subject: [PATCH 08/39] =?UTF-8?q?=F0=9F=8C=90=20Turkish=20language=20updat?= =?UTF-8?q?e=20(#26739)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/language/language_tr.h | 92 +++++++++++++++------------ 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 86c5f6701c4b..86c39b344eb7 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_TR @@ -102,21 +110,21 @@ namespace LanguageNarrow_tr { LSTR MSG_SELECT_ORIGIN = _UxGT("Başlangıç Seç"); LSTR MSG_LAST_VALUE_SP = _UxGT("Son değer "); - LSTR MSG_PREHEAT_1 = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tüm"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tabla"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Ayar"); - - LSTR MSG_PREHEAT_M = _UxGT("ÖnIsıtma $"); - LSTR MSG_PREHEAT_M_H = _UxGT("ÖnIsıtma $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("ÖnIsıtma $ Nozul"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("ÖnIsıtma $ Nozul ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("ÖnIsıtma $ Tüm"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("ÖnIsıtma $ Tabla"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("ÖnIsıtma $ Ayar"); + LSTR MSG_PREHEAT_1 = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL; // Çalışma gerekli Hata + LSTR MSG_PREHEAT_1_H = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL " ~"; // Çalışma gerekli Hata + LSTR MSG_PREHEAT_1_END = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_1_END_E = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul ~"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_1_ALL = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tüm"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tabla"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Ayar"); // Çalışma gerekli Hata + + LSTR MSG_PREHEAT_M = _UxGT("ÖnIsıtma $"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_M_H = _UxGT("ÖnIsıtma $ ~"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_M_END = _UxGT("ÖnIsıtma $ Nozul"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_M_END_E = _UxGT("ÖnIsıtma $ Nozul ~"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_M_ALL = _UxGT("ÖnIsıtma $ Tüm"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("ÖnIsıtma $ Tabla"); // Çalışma gerekli Hata + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("ÖnIsıtma $ Ayar"); // Çalışma gerekli Hata LSTR MSG_PREHEAT_HOTEND = _UxGT("Nozul Ön Isıtma"); LSTR MSG_PREHEAT_CUSTOM = _UxGT("Özel Ön Isıtma"); @@ -197,8 +205,8 @@ namespace LanguageNarrow_tr { LSTR MSG_UBL_BC_INSERT2 = _UxGT("Ölçüm"); LSTR MSG_UBL_BC_REMOVE = _UxGT("Tablayı Kaldır & Ölç"); LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Sonrakine Git"); - LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("UBL'yi Etkinleştir"); - LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("UBL'yi Etkisizleştir"); + LSTR MSG_UBL_ACTIVATE_MESH = _UxGT("UBL'i Aktifleştir"); + LSTR MSG_UBL_DEACTIVATE_MESH = _UxGT("UBL'i Pasifleştir"); LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Tabla Sıcaklığı"); LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Tabla Sıcaklığı"); LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nozul Sıcaklığı"); @@ -213,8 +221,8 @@ namespace LanguageNarrow_tr { LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Soğuk Mesh Oluştur"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Mesh Yükseklik Ayarı"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Yükseklik miktarı"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Doğrulama Mesh"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Doğrulama Mesh ($)"); + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Mesh Doğrulama"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Mesh Doğrulama ($)"); LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Özel Mesh Doğrulama"); LSTR MSG_G26_HEATING_BED = _UxGT("G26 Isıtma Tablası"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Isıtma Memesi"); @@ -230,25 +238,25 @@ namespace LanguageNarrow_tr { LSTR MSG_UBL_MESH_LEVEL = _UxGT("Mesh Seviyesi"); LSTR MSG_UBL_SIDE_POINTS = _UxGT("Yan Noktalar"); LSTR MSG_UBL_MAP_TYPE = _UxGT("Haritalama Türü"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Mesh Çıkış Haritası"); + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Mesh Çikis Haritası"); // Çalışma gerekli Hata LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Host için Çıktı"); LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("CSV için Çıktı"); LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Yedekleme Kapalı"); LSTR MSG_UBL_INFO_UBL = _UxGT("UBL Çıkış Bilgisi"); LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Dolgu Miktarı"); LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuel Dolgu"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Akıllı Dogu"); + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Akıllı Dolgu"); LSTR MSG_UBL_FILLIN_MESH = _UxGT("Mesh Dolgu"); LSTR MSG_UBL_MESH_FILLED = _UxGT("Eksikler Dolduruldu"); LSTR MSG_UBL_MESH_INVALID = _UxGT("Geçersiz Mesh"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tümünü Geçersiz Kıl"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Yakını Geçersiz Kıl"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Tümünü İnce Ayarla"); + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tumunu Gecersiz Kil"); // Çalışma gerekli Hata + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Yakini Gecersiz Kil"); // Çalışma gerekli Hata + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Tumunu İnce Ayarla"); // Çalışma gerekli Hata LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Yakını İnce Ayarla"); LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Depolama"); LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Bellek Yuvası"); LSTR MSG_UBL_LOAD_MESH = _UxGT("Tabla Mesh Yükle"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Tabla Mesh Kayıt Et"); + LSTR MSG_UBL_SAVE_MESH = _UxGT("Tabla Mesh Kaydet"); LSTR MSG_UBL_INVALID_SLOT = _UxGT("Önce Mesh Yuvası Seç"); LSTR MSG_MESH_LOADED = _UxGT("Mesh %i yüklendi"); LSTR MSG_MESH_SAVED = _UxGT("Mesh %i kayıtlandı"); @@ -260,11 +268,11 @@ namespace LanguageNarrow_tr { LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Ofset Durduruldu"); LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Adım Adım UBL"); LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Soğuk Mesh Oluştur"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Akıllı Dogu"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Doğrulama Mesh"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Tümünü İnce Ayarla"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Doğrulama Mesh"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Tümünü İnce Ayarla"); + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Akıllı Dolgu"); + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Mesh Dogrulama"); // Çalışma gerekli Hata + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Tumunu ince Ayarla"); // Çalışma gerekli Hata + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Mesh Dogrulama"); // Çalışma gerekli Hata + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Tumunu ince Ayarla"); // Çalışma gerekli Hata LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Tabla Mesh Kaydet"); LSTR MSG_LED_CONTROL = _UxGT("LED Kontrolü"); @@ -335,8 +343,8 @@ namespace LanguageNarrow_tr { LSTR MSG_AUTOTEMP = _UxGT("Oto. Sıcaklık"); LSTR MSG_LCD_ON = _UxGT("Açık"); LSTR MSG_LCD_OFF = _UxGT("Kapalı"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Kalibrasyon"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("Kalibrasyon * PID"); + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Kalibrasyonu"); + LSTR MSG_PID_AUTOTUNE_E = _UxGT("* PID Kalibrasyonu"); LSTR MSG_PID_CYCLE = _UxGT("PID Döngüleri"); LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID ayarı yapıldı"); LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Kalibrasyon başarısız!"); @@ -346,13 +354,13 @@ namespace LanguageNarrow_tr { LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Kalibrasyon başarısız! Kötü ekstruder."); LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Kalibrasyon başarısız! Sıcaklık çok yüksek."); LSTR MSG_PID_TIMEOUT = _UxGT("Kalibrasyon başarısız! Zaman aşımı."); - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Isı kaybı test ediliyor"); + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Isı kaybı testi"); LSTR MSG_MPC_HEATING_PAST_200 = _UxGT(">200C Isıtma"); LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Ortam ısısına soğutma"); - LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Otomatik Ayarı"); - LSTR MSG_MPC_EDIT = _UxGT("Düzenle * MPC"); + LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Kalibrasyonu"); + LSTR MSG_MPC_EDIT = _UxGT("* MPC Düzenle"); LSTR MSG_MPC_POWER = _UxGT("Isıtıcı Gücü"); - LSTR MSG_MPC_POWER_E = _UxGT("Güç *"); + LSTR MSG_MPC_POWER_E = _UxGT("* Gücü"); LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Isı Kapasitesi"); LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Isı Kap. *"); LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Sensör Hassasiyeti"); @@ -390,8 +398,8 @@ namespace LanguageNarrow_tr { LSTR MSG_A_RETRACT = _UxGT("G.Çekme Hızı"); LSTR MSG_A_TRAVEL = _UxGT("Gezinme Hızı"); LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); - LSTR MSG_SHAPING_ENABLE = _UxGT("Biçimleme @ aktif"); - LSTR MSG_SHAPING_DISABLE = _UxGT("Biçimleme @ pasif"); + LSTR MSG_SHAPING_ENABLE = _UxGT("@ Biçimlemeyi Aç"); + LSTR MSG_SHAPING_DISABLE = _UxGT("@ Biçimlemeyi Kapat"); LSTR MSG_SHAPING_FREQ = _UxGT("@ frekans"); LSTR MSG_SHAPING_ZETA = _UxGT("@ sönümleme"); LSTR MSG_SHAPING_A_FREQ = STR_A _UxGT(" frekansı"); @@ -458,7 +466,7 @@ namespace LanguageNarrow_tr { LSTR MSG_CURRENT = _UxGT("Akım"); LSTR MSG_VOLTAGE = _UxGT("Voltaj"); LSTR MSG_POWER = _UxGT("Güç"); - LSTR MSG_START_PRINT = _UxGT("Yaz. Başlat"); + LSTR MSG_START_PRINT = _UxGT("Yazdırmayı Başlat"); LSTR MSG_BUTTON_NEXT = _UxGT("İleri"); LSTR MSG_BUTTON_INIT = _UxGT("Başlat"); LSTR MSG_BUTTON_STOP = _UxGT("Durdur"); @@ -576,9 +584,9 @@ namespace LanguageNarrow_tr { LSTR MSG_HOME_FIRST = _UxGT("Önce %s Sıfırla"); LSTR MSG_ZPROBE_SETTINGS = _UxGT("Prob Ayarları"); LSTR MSG_ZPROBE_OFFSETS = _UxGT("Prob Ofsetleri"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Prob Ofset"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Prob Ofset"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Prob Ofset"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Prob Ofseti"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Prob Ofseti"); + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Prob Ofseti"); LSTR MSG_ZPROBE_MARGIN = _UxGT("Prob Payı"); LSTR MSG_Z_FEED_RATE = _UxGT("Z İlerleme Hızı"); LSTR MSG_ENABLE_HS_MODE = _UxGT("HS modunu aç"); From 4c5d7831c11c859e5e378d1ff588cb8fe20eb58a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 2 Feb 2024 00:20:22 +0000 Subject: [PATCH 09/39] [cron] Bump distribution date (2024-02-02) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index ea96fb52ecd0..693c5c2e686f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-01" +//#define STRING_DISTRIBUTION_DATE "2024-02-02" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 10b529f98eaa..7e3a6d2a73e6 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-01" + #define STRING_DISTRIBUTION_DATE "2024-02-02" #endif /** From c476e62a6f32bc4d197dc31a8587d53376505f4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davide=20Rombol=C3=A0?= Date: Fri, 2 Feb 2024 02:31:39 +0100 Subject: [PATCH 10/39] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20STM32=20HW=20Serial?= =?UTF-8?q?=20(#26531)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #26328 --- Marlin/src/HAL/STM32/HardwareSerial.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/HAL/STM32/HardwareSerial.cpp b/Marlin/src/HAL/STM32/HardwareSerial.cpp index a6f97f356e2e..0625b5f56fad 100644 --- a/Marlin/src/HAL/STM32/HardwareSerial.cpp +++ b/Marlin/src/HAL/STM32/HardwareSerial.cpp @@ -126,7 +126,7 @@ void serialEvent2() __attribute__((weak)); #endif #ifdef USING_HW_SERIAL3 - HAL_HardwareSerial Serial3(USART3); + HAL_HardwareSerial HSerial3(USART3); void serialEvent3() __attribute__((weak)); #endif #ifdef USING_HW_SERIAL4 @@ -147,9 +147,9 @@ #endif #ifdef USING_HW_SERIAL6 #ifdef USART6 - HAL_HardwareSerial HSerial5(USART6); + HAL_HardwareSerial HSerial6(USART6); #else - HAL_HardwareSerial HSerial5(UART6); + HAL_HardwareSerial HSerial6(UART6); #endif void serialEvent5() __attribute__((weak)); #endif From 9e21330d7ae8b4979fee10099294e9e61c939613 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 3 Feb 2024 00:20:49 +0000 Subject: [PATCH 11/39] [cron] Bump distribution date (2024-02-03) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 693c5c2e686f..69ad9d3d60b8 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-02" +//#define STRING_DISTRIBUTION_DATE "2024-02-03" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7e3a6d2a73e6..9d22376571e9 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-02" + #define STRING_DISTRIBUTION_DATE "2024-02-03" #endif /** From e6837b2b8dd70e5a282fff1508e01215ff85c14d Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sat, 3 Feb 2024 15:19:19 -0800 Subject: [PATCH 12/39] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20STM32=20HW=20Serial?= =?UTF-8?q?=206=20(#26763)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #26328 --- Marlin/src/HAL/STM32/HardwareSerial.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/HAL/STM32/HardwareSerial.cpp b/Marlin/src/HAL/STM32/HardwareSerial.cpp index 0625b5f56fad..2a389447b78f 100644 --- a/Marlin/src/HAL/STM32/HardwareSerial.cpp +++ b/Marlin/src/HAL/STM32/HardwareSerial.cpp @@ -151,7 +151,7 @@ #else HAL_HardwareSerial HSerial6(UART6); #endif - void serialEvent5() __attribute__((weak)); + void serialEvent6() __attribute__((weak)); #endif // Constructors //////////////////////////////////////////////////////////////// From 7f4792e47c909cef2b46a11a0a8a80cf6858b80d Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 4 Feb 2024 00:22:42 +0000 Subject: [PATCH 13/39] [cron] Bump distribution date (2024-02-04) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 69ad9d3d60b8..388173bd4f6f 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-03" +//#define STRING_DISTRIBUTION_DATE "2024-02-04" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 9d22376571e9..902e4471079f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-03" + #define STRING_DISTRIBUTION_DATE "2024-02-04" #endif /** From 755b661c2d9e3beb2ba6b7602715d43891ecff3a Mon Sep 17 00:00:00 2001 From: Taylor Talkington Date: Sun, 4 Feb 2024 10:03:08 -0500 Subject: [PATCH 14/39] =?UTF-8?q?=F0=9F=94=A7=20Fix=20USE=5FZ=5FMIN=20cond?= =?UTF-8?q?itions=20(#26762)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 9 ++++++--- Marlin/src/inc/SanityCheck.h | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index a1ef4a4fe0b7..6a24268895c0 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1957,8 +1957,9 @@ * Currently this must be distinct, but we can add a mechanism to use the same pin for sensorless * or switches wired to the same pin, or for the single SPI stall state on the axis. */ -#define _USE_STOP(A,N,M,C) ((ANY(A##_HOME_TO_##M, A##N##_SAFETY_STOP) || (C+0)) && PIN_EXISTS(A##N##_##M) && !A##_SPI_SENSORLESS) -#define _HAS_STATE(A,N,M) (USE_##A##N##_##M || (ANY(A##_HOME_TO_##M, A##N##_SAFETY_STOP) && A##_SPI_SENSORLESS)) +#define _ANY_STOP(A,N,M) ANY(A##_HOME_TO_##M, A##N##_SAFETY_STOP) +#define _USE_STOP(A,N,M,C) ((_ANY_STOP(A,N,M) || (C+0)) && PIN_EXISTS(A##N##_##M) && !A##_SPI_SENSORLESS) +#define _HAS_STATE(A,N,M) (USE_##A##N##_##M || (_ANY_STOP(A,N,M) && A##_SPI_SENSORLESS)) #if _USE_STOP(X,,MIN,) #define USE_X_MIN 1 @@ -1992,7 +1993,7 @@ #define HAS_Y_STATE 1 #endif -#if _USE_STOP(Z,,MIN,ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) +#if _USE_STOP(Z,,MIN,ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) && (DISABLED(USE_PROBE_FOR_Z_HOMING) || ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) #define USE_Z_MIN 1 #endif #if _USE_STOP(Z,,MAX,) @@ -2199,7 +2200,9 @@ #define HAS_Z_PROBE_STATE 1 #endif +#undef _ANY_STOP #undef _USE_STOP +#undef _HAS_STATE /** * Set ENDSTOPPULLUPS for active endstop switches diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 27629c5a7da0..a5ba460f7f60 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2384,8 +2384,8 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #error "Y_MIN_PIN, Y_STOP_PIN, or Y_SPI_SENSORLESS is required for Y axis homing." #elif Y_HOME_TO_MAX && !HAS_Y_MAX_STATE #error "Y_MAX_PIN, Y_STOP_PIN, or Y_SPI_SENSORLESS is required for Y axis homing." - #elif Z_HOME_TO_MIN && !HAS_Z_MIN_STATE - #error "Z_MIN_PIN, Z_STOP_PIN, or Z_SPI_SENSORLESS is required for Z axis homing." + #elif Z_HOME_TO_MIN && NONE(HAS_Z_MIN_STATE, USE_PROBE_FOR_Z_HOMING) + #error "Z_MIN_PIN, Z_STOP_PIN, Z_SPI_SENSORLESS, or USE_PROBE_FOR_Z_HOMING is required for Z axis homing." #elif Z_HOME_TO_MAX && !HAS_Z_MAX_STATE #error "Z_MAX_PIN, Z_STOP_PIN, or Z_SPI_SENSORLESS is required for Z axis homing." #elif I_HOME_TO_MIN && !HAS_I_MIN_STATE From 9364cbb4b53a5ef77cf2b843ba228afffb4c1725 Mon Sep 17 00:00:00 2001 From: Smokey Pell Date: Sun, 4 Feb 2024 09:37:32 -0600 Subject: [PATCH 15/39] =?UTF-8?q?=F0=9F=9A=B8=20Tronxy=20V10=20w/=20TFT=5F?= =?UTF-8?q?TRONXY=5FX5SA=20+=20MKS=5FROBIN=5FTFT43=20(#26747)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/STM32/tft/tft_fsmc.cpp | 138 +++++----- Marlin/src/HAL/STM32/tft/tft_fsmc.h | 64 +++-- Marlin/src/core/boards.h | 2 +- Marlin/src/pins/pins.h | 8 +- .../pins/stm32f4/pins_TRONXY_CXY_446_V10.h | 256 +++++++++++++++++ Marlin/src/pins/stm32f4/pins_TRONXY_V10.h | 257 ------------------ .../PlatformIO/scripts/tronxy_cxy_446_v10.py | 41 +++ ini/renamed.ini | 3 + ini/stm32f4.ini | 34 ++- 9 files changed, 437 insertions(+), 366 deletions(-) create mode 100644 Marlin/src/pins/stm32f4/pins_TRONXY_CXY_446_V10.h delete mode 100644 Marlin/src/pins/stm32f4/pins_TRONXY_V10.h create mode 100644 buildroot/share/PlatformIO/scripts/tronxy_cxy_446_v10.py diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp index 8e4f97d0a32e..4dffe8b4fcc4 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp @@ -37,50 +37,61 @@ LCD_CONTROLLER_TypeDef *TFT_FSMC::LCD; void TFT_FSMC::init() { uint32_t controllerAddress; - FSMC_NORSRAM_TimingTypeDef timing, extTiming; + FMC_OR_FSMC(NORSRAM_TimingTypeDef) timing, extTiming; uint32_t nsBank = (uint32_t)pinmap_peripheral(digitalPinToPinName(TFT_CS_PIN), pinMap_FSMC_CS); // Perform the SRAM1 memory initialization sequence - SRAMx.Instance = FSMC_NORSRAM_DEVICE; - SRAMx.Extended = FSMC_NORSRAM_EXTENDED_DEVICE; + SRAMx.Instance = FMC_OR_FSMC(NORSRAM_DEVICE); + SRAMx.Extended = FMC_OR_FSMC(NORSRAM_EXTENDED_DEVICE); + // SRAMx.Init SRAMx.Init.NSBank = nsBank; - SRAMx.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE; - SRAMx.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM; - SRAMx.Init.MemoryDataWidth = TERN(TFT_INTERFACE_FSMC_8BIT, FSMC_NORSRAM_MEM_BUS_WIDTH_8, FSMC_NORSRAM_MEM_BUS_WIDTH_16); - SRAMx.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE; - SRAMx.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW; - SRAMx.Init.WrapMode = FSMC_WRAP_MODE_DISABLE; - SRAMx.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS; - SRAMx.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE; - SRAMx.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE; - SRAMx.Init.ExtendedMode = FSMC_EXTENDED_MODE_ENABLE; - SRAMx.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE; - SRAMx.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE; - #ifdef STM32F4xx - SRAMx.Init.PageSize = FSMC_PAGE_SIZE_NONE; + SRAMx.Init.DataAddressMux = FMC_OR_FSMC(DATA_ADDRESS_MUX_DISABLE); + SRAMx.Init.MemoryType = FMC_OR_FSMC(MEMORY_TYPE_SRAM); + #ifdef STM32F446xx + SRAMx.Init.MemoryDataWidth = TERN(TFT_INTERFACE_FMC_8BIT, FMC_NORSRAM_MEM_BUS_WIDTH_8, FMC_NORSRAM_MEM_BUS_WIDTH_16); + #else + SRAMx.Init.MemoryDataWidth = TERN(TFT_INTERFACE_FSMC_8BIT, FSMC_NORSRAM_MEM_BUS_WIDTH_8, FSMC_NORSRAM_MEM_BUS_WIDTH_16); + #endif + SRAMx.Init.BurstAccessMode = FMC_OR_FSMC(BURST_ACCESS_MODE_DISABLE); + SRAMx.Init.WaitSignalPolarity = FMC_OR_FSMC(WAIT_SIGNAL_POLARITY_LOW); + SRAMx.Init.WrapMode = FMC_OR_FSMC(WRAP_MODE_DISABLE); + SRAMx.Init.WaitSignalActive = FMC_OR_FSMC(WAIT_TIMING_BEFORE_WS); + SRAMx.Init.WriteOperation = FMC_OR_FSMC(WRITE_OPERATION_ENABLE); + SRAMx.Init.WaitSignal = FMC_OR_FSMC(WAIT_SIGNAL_DISABLE); + SRAMx.Init.ExtendedMode = FMC_OR_FSMC(EXTENDED_MODE_ENABLE); + SRAMx.Init.AsynchronousWait = FMC_OR_FSMC(ASYNCHRONOUS_WAIT_DISABLE); + SRAMx.Init.WriteBurst = FMC_OR_FSMC(WRITE_BURST_DISABLE); + #if defined(STM32F446xx) || defined(STM32F4xx) + SRAMx.Init.PageSize = FMC_OR_FSMC(PAGE_SIZE_NONE); #endif + // Read Timing - relatively slow to ensure ID information is correctly read from TFT controller - // Can be decreases from 15-15-24 to 4-4-8 with risk of stability loss - timing.AddressSetupTime = 15; - timing.AddressHoldTime = 15; - timing.DataSetupTime = 24; - timing.BusTurnAroundDuration = 0; - timing.CLKDivision = 16; - timing.DataLatency = 17; - timing.AccessMode = FSMC_ACCESS_MODE_A; + // Can be decreased from 15-15-24 to 4-4-8 with risk of stability loss + timing.AddressSetupTime = 15; + timing.AddressHoldTime = 15; + timing.DataSetupTime = 24; + timing.BusTurnAroundDuration = 0; + timing.CLKDivision = 16; + timing.DataLatency = 17; + timing.AccessMode = FMC_OR_FSMC(ACCESS_MODE_A); + // Write Timing // Can be decreased from 8-15-8 to 0-0-1 with risk of stability loss - extTiming.AddressSetupTime = 8; - extTiming.AddressHoldTime = 15; - extTiming.DataSetupTime = 8; - extTiming.BusTurnAroundDuration = 0; - extTiming.CLKDivision = 16; - extTiming.DataLatency = 17; - extTiming.AccessMode = FSMC_ACCESS_MODE_A; - - __HAL_RCC_FSMC_CLK_ENABLE(); + extTiming.AddressSetupTime = 8; + extTiming.AddressHoldTime = 15; + extTiming.DataSetupTime = 8; + extTiming.BusTurnAroundDuration = 0; + extTiming.CLKDivision = 16; + extTiming.DataLatency = 17; + extTiming.AccessMode = FMC_OR_FSMC(ACCESS_MODE_A); + + #ifdef STM32F446xx + __HAL_RCC_FMC_CLK_ENABLE(); + #else + __HAL_RCC_FSMC_CLK_ENABLE(); + #endif for (uint16_t i = 0; pinMap_FSMC[i].pin != NC; i++) pinmap_pinout(pinMap_FSMC[i].pin, pinMap_FSMC); @@ -90,9 +101,9 @@ void TFT_FSMC::init() { controllerAddress = FSMC_BANK1_1; #ifdef PF0 switch (nsBank) { - case FSMC_NORSRAM_BANK2: controllerAddress = FSMC_BANK1_2 ; break; - case FSMC_NORSRAM_BANK3: controllerAddress = FSMC_BANK1_3 ; break; - case FSMC_NORSRAM_BANK4: controllerAddress = FSMC_BANK1_4 ; break; + case FMC_OR_FSMC(NORSRAM_BANK2): controllerAddress = FSMC_BANK1_2; break; + case FMC_OR_FSMC(NORSRAM_BANK3): controllerAddress = FSMC_BANK1_3; break; + case FMC_OR_FSMC(NORSRAM_BANK4): controllerAddress = FSMC_BANK1_4; break; } #endif @@ -100,49 +111,44 @@ void TFT_FSMC::init() { HAL_SRAM_Init(&SRAMx, &timing, &extTiming); + __HAL_RCC_DMA2_CLK_ENABLE(); + #ifdef STM32F1xx - __HAL_RCC_DMA1_CLK_ENABLE(); - DMAtx.Instance = DMA1_Channel1; + DMAtx.Instance = DMA2_Channel1; #elif defined(STM32F4xx) - __HAL_RCC_DMA2_CLK_ENABLE(); - DMAtx.Instance = DMA2_Stream0; - DMAtx.Init.Channel = DMA_CHANNEL_0; - DMAtx.Init.FIFOMode = DMA_FIFOMODE_ENABLE; - DMAtx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; - DMAtx.Init.MemBurst = DMA_MBURST_SINGLE; - DMAtx.Init.PeriphBurst = DMA_PBURST_SINGLE; + DMAtx.Instance = DMA2_Stream0; + DMAtx.Init.Channel = DMA_CHANNEL_0; + DMAtx.Init.FIFOMode = DMA_FIFOMODE_ENABLE; + DMAtx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; + DMAtx.Init.MemBurst = DMA_MBURST_SINGLE; + DMAtx.Init.PeriphBurst = DMA_PBURST_SINGLE; #endif - DMAtx.Init.Direction = DMA_MEMORY_TO_MEMORY; - DMAtx.Init.MemInc = DMA_MINC_DISABLE; - DMAtx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; - DMAtx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; - DMAtx.Init.Mode = DMA_NORMAL; - DMAtx.Init.Priority = DMA_PRIORITY_HIGH; + DMAtx.Init.Direction = DMA_MEMORY_TO_MEMORY; + DMAtx.Init.MemInc = DMA_MINC_DISABLE; + DMAtx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; + DMAtx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + DMAtx.Init.Mode = DMA_NORMAL; + DMAtx.Init.Priority = DMA_PRIORITY_HIGH; LCD = (LCD_CONTROLLER_TypeDef *)controllerAddress; } uint32_t TFT_FSMC::getID() { - uint32_t id; writeReg(0); - id = LCD->RAM; - - if (id == 0) - id = readID(LCD_READ_ID); - if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) - id = readID(LCD_READ_ID4); + uint32_t id = LCD->RAM; + if (id == 0) id = readID(LCD_READ_ID); + if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) id = readID(LCD_READ_ID4); return id; } -uint32_t TFT_FSMC::readID(const tft_data_t inReg) { - uint32_t id; +uint32_t TFT_FSMC::readID(tft_data_t inReg) { writeReg(inReg); - id = LCD->RAM; // dummy read + uint32_t id = LCD->RAM; // dummy read id = inReg << 24; id |= (LCD->RAM & 0x00FF) << 16; id |= (LCD->RAM & 0x00FF) << 8; - id |= LCD->RAM & 0x00FF; + id |= (LCD->RAM & 0x00FF); return id; } @@ -155,7 +161,9 @@ bool TFT_FSMC::isBusy() { #define __IS_DMA_CONFIGURED(__HANDLE__) ((__HANDLE__)->Instance->PAR != 0) #endif - if (!__IS_DMA_CONFIGURED(&DMAtx)) return false; + #ifdef __IS_DMA_CONFIGURED + if (!__IS_DMA_CONFIGURED(&DMAtx)) return false; + #endif // Check if DMA transfer error or transfer complete flags are set if ((__HAL_DMA_GET_FLAG(&DMAtx, __HAL_DMA_GET_TE_FLAG_INDEX(&DMAtx)) == 0) && (__HAL_DMA_GET_FLAG(&DMAtx, __HAL_DMA_GET_TC_FLAG_INDEX(&DMAtx)) == 0)) return true; @@ -174,8 +182,6 @@ void TFT_FSMC::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t cou DMAtx.Init.PeriphInc = memoryIncrease; HAL_DMA_Init(&DMAtx); HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(LCD->RAM), count); - - TERN_(TFT_SHARED_IO, while (isBusy())); } void TFT_FSMC::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) { diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.h b/Marlin/src/HAL/STM32/tft/tft_fsmc.h index 1776cbdb0f65..2647923e8ee3 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.h +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.h @@ -28,11 +28,7 @@ #elif defined(STM32F4xx) #include "stm32f4xx_hal.h" #else - #error "FSMC TFT is currently only supported on STM32F1 and STM32F4 hardware." -#endif - -#ifndef HAL_SRAM_MODULE_ENABLED - #error "SRAM module disabled for the STM32 framework (HAL_SRAM_MODULE_ENABLED)! Please consult the development team." + #error "FSMC/FMC TFT is currently only supported on STM32F1 and STM32F4 hardware." #endif #ifndef LCD_READ_ID @@ -55,6 +51,12 @@ typedef struct { __IO tft_data_t RAM; } LCD_CONTROLLER_TypeDef; +#ifdef STM32F446xx + #define FMC_OR_FSMC(N) _CAT(FMC_, N) +#else + #define FMC_OR_FSMC(N) _CAT(FSMC_, N) +#endif + class TFT_FSMC { private: static SRAM_HandleTypeDef SRAMx; @@ -62,7 +64,7 @@ class TFT_FSMC { static LCD_CONTROLLER_TypeDef *LCD; - static uint32_t readID(const tft_data_t reg); + static uint32_t readID(tft_data_t inReg); static void transmit(tft_data_t data) { LCD->RAM = data; __DSB(); } static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count); static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count); @@ -94,7 +96,11 @@ class TFT_FSMC { #ifdef STM32F1xx #define FSMC_PIN_DATA STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE) #elif defined(STM32F4xx) - #define FSMC_PIN_DATA STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_FSMC) + #ifdef STM32F446xx + #define FSMC_PIN_DATA STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_FMC) + #else + #define FSMC_PIN_DATA STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_FSMC) + #endif #define FSMC_BANK1_1 0x60000000U #define FSMC_BANK1_2 0x64000000U #define FSMC_BANK1_3 0x68000000U @@ -104,35 +110,35 @@ class TFT_FSMC { #endif const PinMap pinMap_FSMC[] = { - {PD_14, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D00 - {PD_15, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D01 - {PD_0, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D02 - {PD_1, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D03 - {PE_7, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D04 - {PE_8, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D05 - {PE_9, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D06 - {PE_10, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D07 + {PD_14, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D00 + {PD_15, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D01 + {PD_0, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D02 + {PD_1, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D03 + {PE_7, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D04 + {PE_8, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D05 + {PE_9, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D06 + {PE_10, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D07 #if DISABLED(TFT_INTERFACE_FSMC_8BIT) - {PE_11, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D08 - {PE_12, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D09 - {PE_13, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D10 - {PE_14, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D11 - {PE_15, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D12 - {PD_8, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D13 - {PD_9, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D14 - {PD_10, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_D15 + {PE_11, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D08 + {PE_12, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D09 + {PE_13, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D10 + {PE_14, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D11 + {PE_15, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D12 + {PD_8, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D13 + {PD_9, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D14 + {PD_10, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_D15 #endif - {PD_4, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_NOE - {PD_5, FSMC_NORSRAM_DEVICE, FSMC_PIN_DATA}, // FSMC_NWE + {PD_4, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_NOE + {PD_5, FMC_OR_FSMC(NORSRAM_DEVICE), FSMC_PIN_DATA}, // FSMC_NWE {NC, NP, 0} }; const PinMap pinMap_FSMC_CS[] = { - {PD_7, (void *)FSMC_NORSRAM_BANK1, FSMC_PIN_DATA}, // FSMC_NE1 + {PD_7, (void *)FMC_OR_FSMC(NORSRAM_BANK1), FSMC_PIN_DATA}, // FSMC_NE1 #ifdef PF0 - {PG_9, (void *)FSMC_NORSRAM_BANK2, FSMC_PIN_DATA}, // FSMC_NE2 - {PG_10, (void *)FSMC_NORSRAM_BANK3, FSMC_PIN_DATA}, // FSMC_NE3 - {PG_12, (void *)FSMC_NORSRAM_BANK4, FSMC_PIN_DATA}, // FSMC_NE4 + {PG_9, (void *)FMC_OR_FSMC(NORSRAM_BANK2), FSMC_PIN_DATA}, // FSMC_NE2 + {PG_10, (void *)FMC_OR_FSMC(NORSRAM_BANK3), FSMC_PIN_DATA}, // FSMC_NE3 + {PG_12, (void *)FMC_OR_FSMC(NORSRAM_BANK4), FSMC_PIN_DATA}, // FSMC_NE4 #endif {NC, NP, 0} }; diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 0895bb46a08f..1dfcabdefb86 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -459,7 +459,7 @@ #define BOARD_OPULO_LUMEN_REV4 5242 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG) #define BOARD_FYSETC_SPIDER_KING407 5243 // FYSETC Spider King407 (STM32F407ZG) #define BOARD_MKS_SKIPR_V1 5244 // MKS SKIPR v1.0 all-in-one board (STM32F407VE) -#define BOARD_TRONXY_V10 5245 // TRONXY V10 (STM32F446ZE) +#define BOARD_TRONXY_CXY_446_V10 5245 // TRONXY CXY-446-V10-220413/CXY-V6-191121 (STM32F446ZE) #define BOARD_CREALITY_F401RE 5246 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1 #define BOARD_BLACKPILL_CUSTOM 5247 // Custom board based on STM32F401CDU6. #define BOARD_I3DBEEZ9_V1 5248 // I3DBEEZ9 V1 (STM32F407ZG) diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index af32d8c11968..53d31c016819 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -806,8 +806,8 @@ #include "stm32f4/pins_FYSETC_SPIDER_KING407.h" // STM32F4 env:FYSETC_SPIDER_KING407 #elif MB(MKS_SKIPR_V1) #include "stm32f4/pins_MKS_SKIPR_V1_0.h" // STM32F4 env:mks_skipr_v1 env:mks_skipr_v1_nobootloader -#elif MB(TRONXY_V10) - #include "stm32f4/pins_TRONXY_V10.h" // STM32F4 env:STM32F446_tronxy +#elif MB(TRONXY_CXY_446_V10) + #include "stm32f4/pins_TRONXY_CXY_446_V10.h" // STM32F4 env:TRONXY_CXY_446_V10 env:TRONXY_CXY_446_V10_usb_flash_drive #elif MB(CREALITY_F401RE) #include "stm32f4/pins_CREALITY_F401.h" // STM32F4 env:STM32F401RE_creality #elif MB(BLACKPILL_CUSTOM) @@ -956,6 +956,7 @@ #define BOARD_LINUX_RAMPS 99926 #define BOARD_BTT_MANTA_M4P_V1_0 99927 #define BOARD_VAKE403D 99928 + #define BOARD_TRONXY_V10 99929 #if MB(MKS_13) #error "BOARD_MKS_13 is now BOARD_MKS_GEN_13. Please update your configuration." @@ -1015,6 +1016,8 @@ #error "BOARD_LINUX_RAMPS is now BOARD_SIMULATED. Please update your configuration." #elif MB(BTT_MANTA_M4P_V1_0) #error "BOARD_BTT_MANTA_M4P_V1_0 is now BOARD_BTT_MANTA_M4P_V2_1. Please update your configuration." + #elif MB(TRONXY_V10) + #error "BOARD_TRONXY_V10 is now BOARD_TRONXY_CXY_446_V10. Please update your configuration." #elif MB(VAKE403D) #error "BOARD_VAKE403D is no longer supported in Marlin." #elif defined(MOTHERBOARD) @@ -1053,6 +1056,7 @@ #undef BOARD_LINUX_RAMPS #undef BOARD_BTT_MANTA_M4P_V1_0 #undef BOARD_VAKE403D + #undef BOARD_TRONXY_V10 #endif diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_CXY_446_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_CXY_446_V10.h new file mode 100644 index 000000000000..00bf9de93401 --- /dev/null +++ b/Marlin/src/pins/stm32f4/pins_TRONXY_CXY_446_V10.h @@ -0,0 +1,256 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2024 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * BOARD_TRONXY_CXY_446_V10 + * + * CXY-V6-191121 / CXY-446-V10-220413 + */ + +#pragma once + +#include "env_validate.h" + +#if EXTRUDERS > 2 || E_STEPPERS > 2 || NUM_RUNOUT_SENSORS > 2 + #error "TRONXY CXY 446 V10 only supports 2 Extruders / E steppers / Filament Runout sensors." +#endif + +#define BOARD_INFO_NAME "BOARD_TRONXY_CXY_446_V10" +#define DEFAULT_MACHINE_NAME "TRONXY CXY 446 V10" + +#define STEP_TIMER 6 +#define TEMP_TIMER 14 + +// +// EEPROM +// +#if NO_EEPROM_SELECTED + #define I2C_EEPROM + //#define FLASH_EEPROM_EMULATION + #undef NO_EEPROM_SELECTED +#endif + +#if ENABLED(FLASH_EEPROM_EMULATION) + #define EEPROM_START_ADDRESS (0x8000000UL + (512 * 1024) - 2 * EEPROM_PAGE_SIZE) + #define EEPROM_PAGE_SIZE (0x800U) // 2K, but will use 2x more (4K) + #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE +#else + #define MARLIN_EEPROM_SIZE 0x800 // 2K (FT24C16A) +#endif + +// +// SPI Flash +// +#define SPI_FLASH // W25Q16 +#if ENABLED(SPI_FLASH) + #define SPI_FLASH_SIZE 0x1000000 // 16MB + #define SPI_FLASH_CS_PIN PG15 + #define SPI_FLASH_MOSI_PIN PB5 + #define SPI_FLASH_MISO_PIN PB4 + #define SPI_FLASH_SCK_PIN PB3 +#endif + +// +// SD Card / Flash Drive +// +#define HAS_OTG_USB_HOST_SUPPORT // USB Flash Drive Support + +// +// SD Card +// +#define ONBOARD_SDIO +#define SD_DETECT_PIN -1 +#define SDIO_CLOCK 4500000 +#define SDIO_READ_RETRIES 16 + +#define SDIO_D0_PIN PC8 +#define SDIO_D1_PIN PC9 +#define SDIO_D2_PIN PC10 +#define SDIO_D3_PIN PC11 +#define SDIO_CK_PIN PC12 +#define SDIO_CMD_PIN PD2 + +// +// Limit Switches +// +#define X_STOP_PIN PC15 +#define Y_STOP_PIN PC14 + +#if ENABLED(FIX_MOUNTED_PROBE) + #define Z_STOP_PIN PE3 +#else + #define Z_STOP_PIN PC13 +#endif + +// +// Filament Sensors +// +#if ENABLED(FILAMENT_RUNOUT_SENSOR) + #define FIL_RUNOUT_PIN PE6 + #define FIL_RUNOUT2_PIN PF12 +#endif + +// +// Steppers +// +#define X_ENABLE_PIN PF0 +#define X_STEP_PIN PE5 +#define X_DIR_PIN PF1 + +#define Y_ENABLE_PIN PF5 +#define Y_STEP_PIN PF9 +#define Y_DIR_PIN PF3 + +#define Z_ENABLE_PIN PA5 +#define Z_STEP_PIN PA6 +#define Z_DIR_PIN PF15 + +#define E0_ENABLE_PIN PF14 +#define E0_STEP_PIN PB1 +#define E0_DIR_PIN PF13 + +#define E1_ENABLE_PIN PG5 +#define E1_STEP_PIN PD12 +#define E1_DIR_PIN PG4 + +// +// Temperature Sensors +// +#define TEMP_0_PIN PC3 +#define TEMP_1_PIN PC0 +#define TEMP_BED_PIN PC2 + +// +// Heaters +// +#define HEATER_0_PIN PG7 // Hotend #1 Heater +#define HEATER_1_PIN PA15 // Hotend #2 Heater +#define HEATER_BED_PIN PE2 + +// +// Fans +// +#define FAN_SOFT_PWM_REQUIRED + +#define FAN0_PIN PG0 // Part Cooling Fan #1 +#define FAN1_PIN PB6 // Part Cooling Fan #2 +#define FAN2_PIN PG9 // Extruder/Hotend #1 Heatsink Fan +#define FAN3_PIN PF10 // Extruder/Hotend #2 Heatsink Fan +#define CONTROLLER_FAN_PIN PD7 + +// +// Laser / Servos +// +#define SPINDLE_LASER_ENA_PIN PB11 // WiFi Module TXD (Pin5) +#define SPINDLE_LASER_PWM_PIN PB10 // WiFi Module RXD (Pin4) + +// +// NOTE: The PWM pin definition const PinMap PinMap_PWM[] in PeripheralPins.c must be augmented here. +// See PWM_PIN(x) definition for details. +// + +// +// TFT with FSMC interface +// +#if HAS_FSMC_TFT + #define TOUCH_CS_PIN PD11 + #define TOUCH_SCK_PIN PB13 + #define TOUCH_MISO_PIN PB14 + #define TOUCH_MOSI_PIN PB15 + + #define TFT_RESET_PIN PB12 + #define TFT_BACKLIGHT_PIN PG8 + + #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT + #define FSMC_DMA_DEV DMA2 + #define FSMC_DMA_CHANNEL DMA_CH5 + #define FSMC_CS_PIN PG12 + #define FSMC_RS_PIN PG2 + + #define TFT_CS_PIN FSMC_CS_PIN + #define TFT_RS_PIN FSMC_RS_PIN + + #if ENABLED(TFT_LVGL_UI) + #define HAS_SPI_FLASH_FONT 1 + #define HAS_GCODE_PREVIEW 1 + #define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 0 + #define HAS_LANG_SELECT_SCREEN 1 + #define HAS_BAK_VIEW_IN_FLASH 0 + #define HAS_LOGO_IN_FLASH 0 + #elif ANY(TFT_CLASSIC_UI, TFT_COLOR_UI) + //#define TFT_DRIVER ILI9488 + #define TFT_BUFFER_WORDS 14400 + #endif + + // Touch Screen calibration + #if ENABLED(TFT_TRONXY_X5SA) + #ifndef TOUCH_CALIBRATION_X + #define TOUCH_CALIBRATION_X -17181 + #endif + #ifndef TOUCH_CALIBRATION_Y + #define TOUCH_CALIBRATION_Y 11434 + #endif + #ifndef TOUCH_OFFSET_X + #define TOUCH_OFFSET_X 501 + #endif + #ifndef TOUCH_OFFSET_Y + #define TOUCH_OFFSET_Y -9 + #endif + #ifndef TOUCH_ORIENTATION + #define TOUCH_ORIENTATION TOUCH_LANDSCAPE + #endif + #endif + + #if ENABLED(MKS_ROBIN_TFT43) + #ifndef TOUCH_CALIBRATION_X + #define TOUCH_CALIBRATION_X 17184 + #endif + #ifndef TOUCH_CALIBRATION_Y + #define TOUCH_CALIBRATION_Y 10604 + #endif + #ifndef TOUCH_OFFSET_X + #define TOUCH_OFFSET_X -31 + #endif + #ifndef TOUCH_OFFSET_Y + #define TOUCH_OFFSET_Y -29 + #endif + #ifndef TOUCH_ORIENTATION + #define TOUCH_ORIENTATION TOUCH_LANDSCAPE + #endif + #endif +#else + #error "TRONXY CXY 446 V10 only supports TFT with FSMC interface." +#endif + +// +// Power Loss +// +#if ENABLED(PSU_CONTROL) + #define PS_ON_PIN PG10 + #define POWER_LOSS_PIN PE1 +#endif + +// +// Misc. Functions +// +//#define LED_PIN PG10 +#define BEEPER_PIN PA8 diff --git a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h b/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h deleted file mode 100644 index 97580bf618f9..000000000000 --- a/Marlin/src/pins/stm32f4/pins_TRONXY_V10.h +++ /dev/null @@ -1,257 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#pragma once - -#include "env_validate.h" - -#if HOTENDS > 3 || E_STEPPERS > 3 - #error "Tronxy V10 supports up to 3 hotends / E steppers." -#endif - -#define BOARD_INFO_NAME "Tronxy V10" -#define DEFAULT_MACHINE_NAME BOARD_INFO_NAME - -#define STEP_TIMER 6 -#define TEMP_TIMER 14 - -// -// Servos -// -//#define SERVO0_PIN PB10 - -// -// EEPROM -// -#if NO_EEPROM_SELECTED - #undef NO_EEPROM_SELECTED - #if TRONXY_UI > 0 - #define EEPROM_AT24CXX - #else - #define FLASH_EEPROM_EMULATION - #endif -#endif - -#if ENABLED(FLASH_EEPROM_EMULATION) - // SoC Flash (framework-arduinoststm32-maple/STM32F1/libraries/EEPROM/EEPROM.h) - #define EEPROM_START_ADDRESS (0x8000000UL + (512 * 1024) - 2 * EEPROM_PAGE_SIZE) - #define EEPROM_PAGE_SIZE (0x800U) // 2KB, but will use 2x more (4KB) - #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE -#else - #if ENABLED(EEPROM_AT24CXX) - #define AT24CXX_SCL PB8 - #define AT24CXX_SDA PB9 - #define AT24CXX_WP PB7 - #else - #define I2C_EEPROM // AT24C32 - #endif - #define MARLIN_EEPROM_SIZE 0x1000 // 4K -#endif - -// -// SPI Flash -// -//#define SPI_FLASH -#if ENABLED(SPI_FLASH) - #define SPI_FLASH_SIZE 0x200000 // 2MB - #define SPI_FLASH_CS_PIN PG15 // SPI2 - #define SPI_FLASH_SCK_PIN PB3 - #define SPI_FLASH_MISO_PIN PB4 - #define SPI_FLASH_MOSI_PIN PB5 -#endif - -// -// Limit Switches -// -#define X_MIN_PIN PC15 -#define X_MAX_PIN PB0 -#define Y_STOP_PIN PC14 - -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN PE3 -#endif - -#if ENABLED(DUAL_Z_ENDSTOP_PROBE) - #if NUM_Z_STEPPERS > 1 && Z_HOME_TO_MAX // Swap Z1/Z2 for dual Z with max homing - #define Z_MIN_PIN PF11 - #define Z_MAX_PIN PC13 - #else - #define Z_MIN_PIN PC13 - #define Z_MAX_PIN PF11 - #endif -#else - #ifndef Z_STOP_PIN - #define Z_STOP_PIN PC13 - #endif -#endif -// -// Filament Sensors -// -#ifndef FIL_RUNOUT_PIN - #define FIL_RUNOUT_PIN PE6 // MT_DET -#endif -#ifndef FIL_RUNOUT2_PIN - #define FIL_RUNOUT2_PIN PF12 -#endif - -// -// Steppers -// -#define X_ENABLE_PIN PF0 -#define X_STEP_PIN PE5 -#define X_DIR_PIN PF1 - -#define Y_ENABLE_PIN PF5 -#define Y_STEP_PIN PF9 -#define Y_DIR_PIN PF3 - -#define Z_ENABLE_PIN PA5 -#define Z_STEP_PIN PA6 -#define Z_DIR_PIN PF15 - -#define E0_ENABLE_PIN PF14 -#define E0_STEP_PIN PB1 -#define E0_DIR_PIN PF13 - -#define E1_ENABLE_PIN PG5 -#define E1_STEP_PIN PD12 -#define E1_DIR_PIN PG4 - -#define E2_ENABLE_PIN PF7 -#define E2_STEP_PIN PF6 -#define E2_DIR_PIN PF4 - -// -// Temperature Sensors -// -#define TEMP_0_PIN PC3 // TH1 -#define TEMP_BED_PIN PC2 // TB1 - -// -// Heaters / Fans -// -#define HEATER_0_PIN PG7 // HEATER1 -#define HEATER_BED_PIN PE2 // HOT BED -//#define HEATER_BED_INVERTING true - -#define FAN0_PIN PG0 // FAN0 -#define FAN1_PIN PB6 // FAN1 -#define FAN2_PIN PG9 // FAN2 -#define FAN3_PIN PF10 // FAN3 -#define CONTROLLER_FAN_PIN PD7 // BOARD FAN -#define FAN_SOFT_PWM_REQUIRED - -// -// Laser / Spindle -// -#if HAS_CUTTER - #define SPINDLE_LASER_ENA_PIN PB11 // wifi:TX - #if ENABLED(SPINDLE_LASER_USE_PWM) - #define SPINDLE_LASER_PWM_PIN PB10 // wifi:RX-TIM2_CH3 - // The PWM pin definition const PinMap PinMap_PWM[] in PeripheralPins.c must be compounded here - // See PWM_PIN(x) definition for details - #endif -#endif - -// -// Misc -// -#define BEEPER_PIN PA8 - -//#define LED_PIN PG10 -#define PS_ON_PIN PG10 // Temporarily switch the machine with LED simulation - -#if ENABLED(TRONXY_BACKUP_POWER) - #define POWER_LOSS_PIN PF11 // Configure as drop-down input -#else - #define POWER_LOSS_PIN PE1 // Output of LM393 comparator, configured as pullup -#endif -//#define POWER_LM393_PIN PE0 // +V for the LM393 comparator, configured as output high - -#if ENABLED(TFT_TRONXY_X5SA) - #error "TFT_TRONXY_X5SA is not yet supported." -#endif - -#if 0 - -// -// TFT with FSMC interface -// -#if HAS_FSMC_TFT - #define TFT_RESET_PIN PB12 - #define TFT_BACKLIGHT_PIN PG8 - - #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT - - #define TFT_CS_PIN PG12 - #define TFT_RS_PIN PG2 - - //#define TFT_WIDTH 480 - //#define TFT_HEIGHT 320 - //#define TFT_PIXEL_OFFSET_X 48 - //#define TFT_PIXEL_OFFSET_Y 32 - //#define TFT_DRIVER ILI9488 - //#define TFT_BUFFER_WORDS 14400 - - #if NEED_TOUCH_PINS - #define TOUCH_CS_PIN PD11 // SPI1_NSS - #define TOUCH_SCK_PIN PB13 // SPI1_SCK - #define TOUCH_MISO_PIN PB14 // SPI1_MISO - #define TOUCH_MOSI_PIN PB15 // SPI1_MOSI - #endif - - #if (LCD_CHIP_INDEX == 1 && (TRONXY_UI == 1 || TRONXY_UI == 2)) || LCD_CHIP_INDEX == 3 - #define TOUCH_CALIBRATION_X -17181 - #define TOUCH_CALIBRATION_Y 11434 - #define TOUCH_OFFSET_X 501 - #define TOUCH_OFFSET_Y -9 - #elif LCD_CHIP_INDEX == 1 && TRONXY_UI == 4 - #define TOUCH_CALIBRATION_X 11166 - #define TOUCH_CALIBRATION_Y 17162 - #define TOUCH_OFFSET_X -10 - #define TOUCH_OFFSET_Y -16 - #elif LCD_CHIP_INDEX == 4 && TRONXY_UI == 3 - //#define TOUCH_CALIBRATION_X 8781 - //#define TOUCH_CALIBRATION_Y 11773 - //#define TOUCH_OFFSET_X -17 - //#define TOUCH_OFFSET_Y -16 - // Upside-down - #define TOUCH_CALIBRATION_X -8553 - #define TOUCH_CALIBRATION_Y -11667 - #define TOUCH_OFFSET_X 253 - #define TOUCH_OFFSET_Y 331 - #elif LCD_CHIP_INDEX == 2 - #define TOUCH_CALIBRATION_X 17184 - #define TOUCH_CALIBRATION_Y 10604 - #define TOUCH_OFFSET_X -31 - #define TOUCH_OFFSET_Y -29 - #endif -#endif - -#endif - -// -// SD Card -// -#define ONBOARD_SDIO -#define SD_DETECT_PIN -1 // PF0, but not connected -#define SDIO_CLOCK 4500000 -#define SDIO_READ_RETRIES 16 diff --git a/buildroot/share/PlatformIO/scripts/tronxy_cxy_446_v10.py b/buildroot/share/PlatformIO/scripts/tronxy_cxy_446_v10.py new file mode 100644 index 000000000000..f3cb94a0620e --- /dev/null +++ b/buildroot/share/PlatformIO/scripts/tronxy_cxy_446_v10.py @@ -0,0 +1,41 @@ +# +# tronxy_cxy_446_v10.py +# Build customizations for env:TRONXY_CXY_446_V10 +# +import pioutil +if pioutil.is_pio_build(): + + import marlin, os + + from SCons.Script import DefaultEnvironment + + env = DefaultEnvironment() + + # Check whether the "update" folder exists + outpath = "update" + if not os.path.exists(outpath): os.makedirs(outpath) + + # Build "fmw_tronxy.hex" and place in "update" folder + def output_target_hex(): + tar_hex = f"{outpath}/fmw_tronxy.hex" + env.AddPostAction( + "$BUILD_DIR/${PROGNAME}.elf", + env.VerboseAction(" ".join([ + "$OBJCOPY", "-O", "ihex", "-R", ".eeprom", + "$BUILD_DIR/${PROGNAME}.elf", tar_hex + ]), "Building %s" % tar_hex) + ) + + # Build "fmw_tronxy.bin" and place in "update" folder + def output_target_bin(): + tar_bin = f"{outpath}/fmw_tronxy.bin" + env.AddPostAction( + "$BUILD_DIR/${PROGNAME}.elf", + env.VerboseAction(" ".join([ + "$OBJCOPY", "-O", "binary", "-R", ".eeprom", + "$BUILD_DIR/${PROGNAME}.elf", tar_bin + ]), "Building %s" % tar_bin) + ) + + output_target_hex() + output_target_bin() diff --git a/ini/renamed.ini b/ini/renamed.ini index 84f6acd7fab9..85f2df286273 100644 --- a/ini/renamed.ini +++ b/ini/renamed.ini @@ -95,3 +95,6 @@ extends = renamed [env:STM32F407ZE_btt_USB] ;=> STM32F407ZE_btt_usb_flash_drive extends = renamed + +[env:STM32F446_tronxy] ;=> TRONXY_CXY_446_V10 +extends = renamed diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 2ba5742f4fec..fb8e9109cfd8 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -812,17 +812,29 @@ upload_protocol = dfu upload_command = dfu-util -a 0 -s 0x08000000:leave -D "$SOURCE" # -# STM32F446ZET6 ARM Cortex-M4 -# -[env:STM32F446_tronxy] -extends = stm32_variant -board = marlin_STM32F446ZET_tronxy -board_build.offset = 0x10000 -board_build.rename = fmw_tronxy.bin -build_flags = ${stm32_variant.build_flags} - -DSTM32F4xx -build_unflags = ${stm32_variant.build_unflags} -fno-rtti - -DUSBCON -DUSBD_USE_CDC +# TRONXY_CXY_446_V10 (STM32F446ZET6 ARM Cortex-M4) +# +[env:TRONXY_CXY_446_V10] +extends = stm32_variant +board = marlin_STM32F446ZET_tronxy +board_build.ldscript = buildroot/share/PlatformIO/variants/MARLIN_F446Zx_TRONXY/ldscript.ld +board_build.offset = 0x10000 +board_build.rename = fmw_tronxy.bin +build_flags = ${stm32_variant.build_flags} + -DSTM32F4xx -DUSE_USB_HS + -DUSE_USB_HS_IN_FS +build_unflags = ${stm32_variant.build_unflags} -fno-rtti + -fno-threadsafe-statics -fno-exceptions + -DUSBD_USE_CDC -DUSBCON +extra_scripts = ${stm32_variant.extra_scripts} + buildroot/share/PlatformIO/scripts/tronxy_cxy_446_v10.py + +# +# TRONXY_CXY_446_V10 (STM32F446ZET6 ARM Cortex-M4) with USB Flash Drive Support +# +[env:TRONXY_CXY_446_V10_usb_flash_drive] +extends = env:TRONXY_CXY_446_V10 +platform_packages = ${stm_flash_drive.platform_packages} # # Blackpill From 1dee4d92c61b14458cd394d1f609f0dc80282092 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 4 Feb 2024 12:09:08 -0600 Subject: [PATCH 16/39] =?UTF-8?q?=F0=9F=94=A7=20TOUCH=5FIDLE=5FSLEEP=5FMIN?= =?UTF-8?q?S=20=3D>=20DISPLAY=5FSLEEP=5FMINUTES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow up to #26517 --- Marlin/Configuration.h | 1 - Marlin/Configuration_adv.h | 28 +++++------ Marlin/src/inc/Changes.h | 4 +- Marlin/src/inc/Conditionals_LCD.h | 3 -- Marlin/src/inc/Conditionals_adv.h | 2 +- Marlin/src/inc/SanityCheck.h | 22 ++++----- Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 2 +- .../dogm/u8g_dev_tft_upscale_from_128x64.cpp | 34 +++++++------- Marlin/src/lcd/marlinui.cpp | 47 ++++++------------- Marlin/src/lcd/marlinui.h | 18 +++---- Marlin/src/lcd/menu/menu.cpp | 3 ++ Marlin/src/lcd/menu/menu_media.cpp | 1 - Marlin/src/lcd/tft/touch.cpp | 18 ++++--- Marlin/src/lcd/tft/touch.h | 3 +- Marlin/src/lcd/tft/ui_color_ui.cpp | 2 +- Marlin/src/lcd/tft/ui_common.cpp | 4 +- Marlin/src/lcd/tft/ui_common.h | 6 +-- Marlin/src/lcd/touch/touch_buttons.cpp | 21 ++++++--- Marlin/src/lcd/touch/touch_buttons.h | 3 +- Marlin/src/module/settings.cpp | 2 +- Marlin/src/module/temperature.cpp | 8 ++-- 21 files changed, 106 insertions(+), 126 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 9a0cd1addc3c..87908d1821c0 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -3414,7 +3414,6 @@ #define BUTTON_DELAY_MENU 250 // (ms) Button repeat delay for menus //#define DISABLE_ENCODER // Disable the click encoder, if any - //#define TOUCH_IDLE_SLEEP_MINS 5 // (minutes) Display Sleep after a period of inactivity. Set with M255 S. #define TOUCH_SCREEN_CALIBRATION diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 49eea39180f7..558fd70a9e8d 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1970,17 +1970,6 @@ // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. //#define USE_SMALL_INFOFONT - /** - * Graphical Display Sleep - * - * The U8G library provides sleep / wake functions for SH1106, SSD1306, - * SSD1309, and some other DOGM displays. - * Enable this option to save energy and prevent OLED pixel burn-in. - * Adds the menu item Configuration > LCD Timeout (m) to set a wait period - * from 0 (disabled) to 99 minutes. - */ - //#define DISPLAY_SLEEP_MINUTES 2 // (minutes) Timeout before turning off the screen. Set with M255 S. - /** * ST7920-based LCDs can emulate a 16 x 4 character display using * the ST7920 character-generator for very fast screen updates. @@ -2229,13 +2218,20 @@ //#define TFT_BTOKMENU_COLOR 0x145F // 00010 100010 11111 Cyan #endif -// -// LCD Backlight Timeout -// Requires a display with a controllable backlight -// +/** + * Display Sleep + * Enable this option to save energy and prevent OLED pixel burn-in. + */ +//#define DISPLAY_SLEEP_MINUTES 2 // (minutes) Timeout before turning off the screen + +/** + * LCD Backlight Timeout + * Requires a display with a controllable backlight + */ //#define LCD_BACKLIGHT_TIMEOUT_MINS 1 // (minutes) Timeout before turning off the backlight + #if defined(DISPLAY_SLEEP_MINUTES) || defined(LCD_BACKLIGHT_TIMEOUT_MINS) - #define EDITABLE_DISPLAY_TIMEOUT // Edit timeout with M255 S and a menu item + #define EDITABLE_DISPLAY_TIMEOUT // Edit sleep / backlight timeout with M255 S and a menu item #endif // diff --git a/Marlin/src/inc/Changes.h b/Marlin/src/inc/Changes.h index 47f23babb25a..6156326f6926 100644 --- a/Marlin/src/inc/Changes.h +++ b/Marlin/src/inc/Changes.h @@ -600,7 +600,9 @@ #elif defined(LEVEL_CENTER_TOO) #error "LEVEL_CENTER_TOO is now BED_TRAMMING_INCLUDE_CENTER." #elif defined(TOUCH_IDLE_SLEEP) - #error "TOUCH_IDLE_SLEEP (seconds) is now TOUCH_IDLE_SLEEP_MINS (minutes)." + #error "TOUCH_IDLE_SLEEP (seconds) is now DISPLAY_SLEEP_MINUTES (minutes)." +#elif defined(TOUCH_IDLE_SLEEP_MINS) + #error "TOUCH_IDLE_SLEEP_MINS is now DISPLAY_SLEEP_MINUTES." #elif defined(LCD_BACKLIGHT_TIMEOUT) #error "LCD_BACKLIGHT_TIMEOUT (seconds) is now LCD_BACKLIGHT_TIMEOUT_MINS (minutes)." #elif defined(LCD_SET_PROGRESS_MANUALLY) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index bff742a5bcb7..af2ea772c3db 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -1850,9 +1850,6 @@ // This emulated DOGM has 'touch/xpt2046', not 'tft/xpt2046' #if ENABLED(TOUCH_SCREEN) - #if TOUCH_IDLE_SLEEP_MINS - #define HAS_TOUCH_SLEEP 1 - #endif #if NONE(TFT_TOUCH_DEVICE_GT911, TFT_TOUCH_DEVICE_XPT2046) #define TFT_TOUCH_DEVICE_XPT2046 // ADS7843/XPT2046 ADC Touchscreen such as ILI9341 2.8 #endif diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 379600d91574..93acd89aa981 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -912,7 +912,7 @@ #if ALL(HAS_RESUME_CONTINUE, PRINTER_EVENT_LEDS, HAS_MEDIA) #define HAS_LEDS_OFF_FLAG 1 #endif -#if defined(DISPLAY_SLEEP_MINUTES) || defined(TOUCH_IDLE_SLEEP_MINS) +#ifdef DISPLAY_SLEEP_MINUTES #define HAS_DISPLAY_SLEEP 1 #endif #ifdef LCD_BACKLIGHT_TIMEOUT_MINS diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a5ba460f7f60..0736e96629d6 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2785,6 +2785,8 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #if HAS_BACKLIGHT_TIMEOUT #if !HAS_ENCODER_ACTION && DISABLED(HAS_DWIN_E3V2) #error "LCD_BACKLIGHT_TIMEOUT_MINS requires an LCD with encoder or keypad." + #elif HAS_DISPLAY_SLEEP + #error "LCD_BACKLIGHT_TIMEOUT_MINS and DISPLAY_SLEEP_MINUTES are not currently supported at the same time." #elif ENABLED(NEOPIXEL_BKGD_INDEX_FIRST) #if PIN_EXISTS(LCD_BACKLIGHT) #error "LCD_BACKLIGHT_PIN and NEOPIXEL_BKGD_INDEX_FIRST are not supported at the same time." @@ -2794,6 +2796,15 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #elif !PIN_EXISTS(LCD_BACKLIGHT) && DISABLED(HAS_DWIN_E3V2) #error "LCD_BACKLIGHT_TIMEOUT_MINS requires LCD_BACKLIGHT_PIN, NEOPIXEL_BKGD_INDEX_FIRST, or an Ender-3 V2 DWIN LCD." #endif +#elif HAS_DISPLAY_SLEEP + #if NONE(TOUCH_SCREEN, HAS_MARLINUI_U8GLIB) || ANY(IS_U8GLIB_LM6059_AF, IS_U8GLIB_ST7565_64128, REPRAPWORLD_GRAPHICAL_LCD, FYSETC_MINI_12864, CR10_STOCKDISPLAY, MINIPANEL) + #error "DISPLAY_SLEEP_MINUTES is not supported by your display." + #undef HAS_DISPLAY_SLEEP + #elif !WITHIN(DISPLAY_SLEEP_MINUTES, 0, 255) + #error "DISPLAY_SLEEP_MINUTES must be between 0 and 255." + #elif DISABLED(EDITABLE_DISPLAY_TIMEOUT) && DISPLAY_SLEEP_MINUTES == 0 + #error "DISPLAY_SLEEP_MINUTES must be greater than 0 with EDITABLE_DISPLAY_TIMEOUT disabled." + #endif #endif // Startup Tune requirements @@ -2806,17 +2817,6 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #endif #endif -/** - * Display Sleep is not supported by these common displays - */ -#if HAS_DISPLAY_SLEEP - #if ANY(IS_U8GLIB_LM6059_AF, IS_U8GLIB_ST7565_64128, REPRAPWORLD_GRAPHICAL_LCD, FYSETC_MINI_12864, CR10_STOCKDISPLAY, MINIPANEL) - #error "DISPLAY_SLEEP_MINUTES is not supported by your display." - #elif !WITHIN(DISPLAY_SLEEP_MINUTES, 0, 255) - #error "DISPLAY_SLEEP_MINUTES must be between 0 and 255." - #endif -#endif - /** * Some boards forbid the use of -1 Native USB */ diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index 08e197ebb503..cfff78ad40fe 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -377,7 +377,7 @@ void MarlinUI::draw_kill_screen() { void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop #if HAS_DISPLAY_SLEEP - void MarlinUI::sleep_display(const bool sleep) { sleep ? u8g.sleepOn() : u8g.sleepOff(); } + void MarlinUI::sleep_display(const bool sleep/*=true*/) { sleep ? u8g.sleepOn() : u8g.sleepOff(); } #endif #if HAS_LCD_BRIGHTNESS diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp index c6aff38dc9b5..51bbee78b9df 100644 --- a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp +++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp @@ -78,10 +78,6 @@ TFT_IO tftio; #include "../marlinui.h" #endif -#if HAS_TOUCH_BUTTONS && HAS_TOUCH_SLEEP - #define HAS_TOUCH_BUTTONS_SLEEP 1 -#endif - #include "../touch/touch_buttons.h" #include "../scaled_tft.h" @@ -389,25 +385,29 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u case U8G_DEV_MSG_PAGE_FIRST: { page = 0; - #if HAS_TOUCH_BUTTONS_SLEEP - static bool sleepCleared; - if (touchBt.isSleeping()) { - if (!sleepCleared) { - sleepCleared = true; - u8g_upscale_clear_lcd(u8g, dev, buffer); - TERN_(HAS_TOUCH_BUTTONS, redrawTouchButtons = true); + #if HAS_TOUCH_BUTTONS + #if HAS_DISPLAY_SLEEP + static bool sleepCleared; + if (touchBt.isSleeping()) { + if (!sleepCleared) { + sleepCleared = true; + u8g_upscale_clear_lcd(u8g, dev, buffer); + redrawTouchButtons = true; + } + break; } - break; - } - else - sleepCleared = false; + else + sleepCleared = false; + #endif + drawTouchButtons(u8g, dev); #endif - TERN_(HAS_TOUCH_BUTTONS, drawTouchButtons(u8g, dev)); setWindow(u8g, dev, TFT_PIXEL_OFFSET_X, TFT_PIXEL_OFFSET_Y, X_HI, Y_HI); } break; case U8G_DEV_MSG_PAGE_NEXT: - if (TERN0(HAS_TOUCH_BUTTONS_SLEEP, touchBt.isSleeping())) break; + #if HAS_TOUCH_BUTTONS && HAS_DISPLAY_SLEEP + if (touchBt.isSleeping()) break; + #endif if (++page > (HEIGHT / PAGE_HEIGHT)) return 1; for (uint8_t y = 0; y < PAGE_HEIGHT; ++y) { diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 23cb0a70580b..313131d87aba 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -214,14 +214,10 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; millis_t MarlinUI::screen_timeout_ms = 0; void MarlinUI::refresh_screen_timeout() { - screen_timeout_ms = sleep_timeout_minutes ? millis() + sleep_timeout_minutes * 60UL * 1000UL : 0; - sleep_display(false); + screen_timeout_ms = sleep_timeout_minutes ? millis() + MIN_TO_MS(sleep_timeout_minutes) : 0; + wake_display(); } - #if !HAS_TOUCH_SLEEP && !HAS_MARLINUI_U8GLIB // without DOGM (COLOR_UI) - void MarlinUI::sleep_display(const bool sleep) {} // if unimplemented - #endif - #endif void MarlinUI::init() { @@ -766,25 +762,9 @@ void MarlinUI::init() { draw_kill_screen(); } - #if HAS_TOUCH_SLEEP - #if HAS_TOUCH_BUTTONS - #include "touch/touch_buttons.h" - #else - #include "tft/touch.h" - #endif - // Wake up a sleeping TFT - void MarlinUI::wakeup_screen() { - TERN(HAS_TOUCH_BUTTONS, touchBt.wakeUp(), touch.wakeUp()); - } - #if HAS_DISPLAY_SLEEP && !HAS_MARLINUI_U8GLIB // without DOGM (COLOR_UI) - void MarlinUI::sleep_display(const bool sleep) { - if (!sleep) wakeup_screen(); // relay extra wake up events - } - #endif - #endif - void MarlinUI::quick_feedback(const bool clear_buttons/*=true*/) { - TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); // Wake up the TFT with most buttons + wake_display(); // Wake the screen for any click sound + TERN_(HAS_MARLINUI_MENU, refresh()); #if HAS_ENCODER_ACTION @@ -1063,7 +1043,7 @@ void MarlinUI::init() { abs_diff = epps; // Treat as a full step size encoderDiff = (encoderDiff < 0 ? -1 : 1) * abs_diff; // ...in the spin direction. } - TERN_(HAS_TOUCH_SLEEP, if (lastEncoderDiff != encoderDiff) wakeup_screen()); + if (lastEncoderDiff != encoderDiff) wake_display(); lastEncoderDiff = encoderDiff; #endif @@ -1448,14 +1428,14 @@ void MarlinUI::init() { #endif // HAS_ENCODER_ACTION +#endif // HAS_WIRED_LCD + +void MarlinUI::completion_feedback(const bool good/*=true*/) { + wake_display(); // Wake the screen for all audio feedback #if HAS_SOUND - void MarlinUI::completion_feedback(const bool good/*=true*/) { - TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); // Wake up on rotary encoder click... - if (good) OKAY_BUZZ(); else ERR_BUZZ(); - } + if (good) OKAY_BUZZ(); else ERR_BUZZ(); #endif - -#endif // HAS_WIRED_LCD +} void MarlinUI::host_notify_P(PGM_P const pstr) { TERN_(HOST_STATUS_NOTIFICATIONS, hostui.notify_P(pstr)); @@ -1574,7 +1554,7 @@ void MarlinUI::host_notify(const char * const cstr) { */ void MarlinUI::_set_alert(const char * const ustr, const int8_t level, const bool pgm) { pgm ? set_status_and_level_P(ustr, level) : set_status_and_level(ustr, level); - TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); + wake_display(); TERN_(HAS_MARLINUI_MENU, return_to_status()); } @@ -1722,7 +1702,8 @@ void MarlinUI::host_notify(const char * const cstr) { defer_status_screen(); #endif - TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); + wake_display(); + TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_open(PROMPT_PAUSE_RESUME, F("UI Pause"), F("Resume"))); LCD_MESSAGE(MSG_PRINT_PAUSED); diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index d578826e4970..04f4aea24ff7 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -292,9 +292,11 @@ class MarlinUI { static constexpr uint8_t sleep_timeout_max = 99; static millis_t screen_timeout_ms; static void refresh_screen_timeout(); - static void sleep_display(const bool sleep=true); #endif + static void sleep_display(const bool=true) IF_DISABLED(HAS_DISPLAY_SLEEP, {}); + static void wake_display() { sleep_display(false); } + #if HAS_DWIN_E3V2_BASIC static void refresh(); #else @@ -582,16 +584,7 @@ class MarlinUI { static void pause_filament_display(const millis_t ms=millis()) { next_filament_display = ms + 5000UL; } #endif - #if HAS_TOUCH_SLEEP - static void wakeup_screen(); - #endif - static void quick_feedback(const bool clear_buttons=true); - #if HAS_SOUND - static void completion_feedback(const bool good=true); - #else - static void completion_feedback(const bool=true) { TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); } - #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) static void draw_hotend_status(const uint8_t row, const uint8_t extruder); @@ -604,7 +597,7 @@ class MarlinUI { static void status_screen(); - #endif + #endif // HAS_WIRED_LCD #if HAS_MARLINUI_U8GLIB static bool drawing_screen, first_page; @@ -635,9 +628,10 @@ class MarlinUI { #if !HAS_WIRED_LCD static void quick_feedback(const bool=true) {} - static void completion_feedback(const bool=true) {} #endif + static void completion_feedback(const bool good=true); + #if HAS_MEDIA #if ALL(SCROLL_LONG_FILENAMES, HAS_MARLINUI_MENU) #define MARLINUI_SCROLL_NAME 1 diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 1c77d9a0923c..e98c9b48c04a 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -168,6 +168,9 @@ void MenuEditItemBase::goto_edit_screen( */ void MarlinUI::goto_screen(screenFunc_t screen, const uint16_t encoder/*=0*/, const uint8_t top/*=0*/, const uint8_t items/*=0*/) { if (currentScreen != screen) { + + wake_display(); + thermalManager.set_menu_cold_override(false); TERN_(IS_DWIN_MARLINUI, did_first_redraw = false); diff --git a/Marlin/src/lcd/menu/menu_media.cpp b/Marlin/src/lcd/menu/menu_media.cpp index daa396601f2d..42ff2b1f2634 100644 --- a/Marlin/src/lcd/menu/menu_media.cpp +++ b/Marlin/src/lcd/menu/menu_media.cpp @@ -48,7 +48,6 @@ void lcd_sd_updir() { goto_screen(menu_media, sd_encoder_position, sd_top_line, sd_items); sd_encoder_position = 0xFFFF; defer_status_screen(); - TERN_(HAS_TOUCH_SLEEP, ui.wakeup_screen()); } #endif diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index d325355002f5..8ebfc9140982 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -38,6 +38,8 @@ #include "tft.h" +Touch touch; + bool Touch::enabled = true; int16_t Touch::x, Touch::y; touch_control_t Touch::controls[]; @@ -48,7 +50,7 @@ millis_t Touch::next_touch_ms = 0, Touch::repeat_delay, Touch::touch_time; TouchControlType Touch::touch_control_type = NONE; -#if HAS_TOUCH_SLEEP +#if HAS_DISPLAY_SLEEP millis_t Touch::next_sleep_ms; // = 0 #endif #if HAS_RESUME_CONTINUE @@ -59,7 +61,7 @@ void Touch::init() { TERN_(TOUCH_SCREEN_CALIBRATION, touch_calibration.calibration_reset()); reset(); io.init(); - TERN_(HAS_TOUCH_SLEEP, wakeUp()); + TERN_(HAS_DISPLAY_SLEEP, wakeUp()); enable(); } @@ -278,7 +280,7 @@ bool Touch::get_point(int16_t * const x, int16_t * const y) { #endif #endif - #if HAS_TOUCH_SLEEP + #if HAS_DISPLAY_SLEEP if (is_touched) wakeUp(); else if (!isSleeping() && ELAPSED(millis(), next_sleep_ms) && ui.on_status_screen()) @@ -288,7 +290,7 @@ bool Touch::get_point(int16_t * const x, int16_t * const y) { return is_touched; } -#if HAS_TOUCH_SLEEP +#if HAS_DISPLAY_SLEEP void Touch::sleepTimeout() { #if HAS_LCD_BRIGHTNESS @@ -308,12 +310,14 @@ bool Touch::get_point(int16_t * const x, int16_t * const y) { next_touch_ms = millis() + 100; safe_delay(20); } - next_sleep_ms = millis() + MIN_TO_MS(ui.sleep_timeout_minutes); + next_sleep_ms = ui.sleep_timeout_minutes ? millis() + MIN_TO_MS(ui.sleep_timeout_minutes) : 0; } -#endif // HAS_TOUCH_SLEEP + void MarlinUI::sleep_display(const bool sleep/*=true*/) { + if (!sleep) touch.wakeUp(); + } -Touch touch; +#endif // HAS_DISPLAY_SLEEP bool MarlinUI::touch_pressed() { return touch.is_clicked(); diff --git a/Marlin/src/lcd/tft/touch.h b/Marlin/src/lcd/tft/touch.h index 93f9327a15b3..efbd427c31dc 100644 --- a/Marlin/src/lcd/tft/touch.h +++ b/Marlin/src/lcd/tft/touch.h @@ -71,7 +71,6 @@ typedef struct __attribute__((__packed__)) { #define UBL_REPEAT_DELAY 125 #define FREE_MOVE_RANGE 32 -#define TSLP_PREINIT 0 #define TSLP_SLEEPING 1 class Touch { @@ -105,7 +104,7 @@ class Touch { } static void disable() { enabled = false; } static void enable() { enabled = true; } - #if HAS_TOUCH_SLEEP + #if HAS_DISPLAY_SLEEP static millis_t next_sleep_ms; static bool isSleeping() { return next_sleep_ms == TSLP_SLEEPING; } static void sleepTimeout(); diff --git a/Marlin/src/lcd/tft/ui_color_ui.cpp b/Marlin/src/lcd/tft/ui_color_ui.cpp index 4febd29865d4..279ea9715a19 100644 --- a/Marlin/src/lcd/tft/ui_color_ui.cpp +++ b/Marlin/src/lcd/tft/ui_color_ui.cpp @@ -47,7 +47,7 @@ void MarlinUI::tft_idle() { #if ENABLED(TOUCH_SCREEN) - if (TERN0(HAS_TOUCH_SLEEP, lcd_sleep_task())) return; + if (TERN0(HAS_DISPLAY_SLEEP, lcd_sleep_task())) return; if (draw_menu_navigation) { add_control(NAVIGATION_PAGE_UP_X, NAVIGATION_PAGE_UP_Y, PAGE_UP, imgPageUp, encoderTopLine > 0); add_control(NAVIGATION_PAGE_DOWN_X, NAVIGATION_PAGE_DOWN_Y, PAGE_DOWN, imgPageDown, encoderTopLine + LCD_HEIGHT < screen_items); diff --git a/Marlin/src/lcd/tft/ui_common.cpp b/Marlin/src/lcd/tft/ui_common.cpp index a1766b067605..944be77ab5c9 100644 --- a/Marlin/src/lcd/tft/ui_common.cpp +++ b/Marlin/src/lcd/tft/ui_common.cpp @@ -188,7 +188,7 @@ void moveAxis(const AxisEnum axis, const int8_t direction) { #endif -#if HAS_TOUCH_SLEEP +#if ALL(TOUCH_SCREEN, HAS_DISPLAY_SLEEP) bool lcd_sleep_task() { static bool sleepCleared; @@ -207,7 +207,7 @@ void moveAxis(const AxisEnum axis, const int8_t direction) { return false; } -#endif // HAS_TOUCH_SLEEP +#endif void text_line(const uint16_t y, uint16_t color) { tft.canvas(0, y, TFT_WIDTH, MENU_ITEM_HEIGHT); diff --git a/Marlin/src/lcd/tft/ui_common.h b/Marlin/src/lcd/tft/ui_common.h index 8229ab36abfa..3a67768f352f 100644 --- a/Marlin/src/lcd/tft/ui_common.h +++ b/Marlin/src/lcd/tft/ui_common.h @@ -104,9 +104,9 @@ void disable_steppers(); #if HAS_EXTRUDERS void e_select(); #endif -#endif -#if HAS_TOUCH_SLEEP - bool lcd_sleep_task(); + #if HAS_DISPLAY_SLEEP + bool lcd_sleep_task(); + #endif #endif void draw_heater_status(uint16_t x, uint16_t y, const int8_t heater); diff --git a/Marlin/src/lcd/touch/touch_buttons.cpp b/Marlin/src/lcd/touch/touch_buttons.cpp index 652a043714d8..f6f4c66e77a4 100644 --- a/Marlin/src/lcd/touch/touch_buttons.cpp +++ b/Marlin/src/lcd/touch/touch_buttons.cpp @@ -37,7 +37,7 @@ #error "Unknown Touch Screen Type." #endif -#if HAS_TOUCH_SLEEP +#if HAS_DISPLAY_SLEEP millis_t TouchButtons::next_sleep_ms; #endif @@ -58,7 +58,9 @@ TouchButtons touchBt; void TouchButtons::init() { touchIO.init(); - TERN_(HAS_TOUCH_SLEEP, next_sleep_ms = millis() + SEC_TO_MS(ui.sleep_timeout_minutes * 60)); + #if HAS_DISPLAY_SLEEP + next_sleep_ms = ui.sleep_timeout_minutes ? millis() + MIN_TO_MS(ui.sleep_timeout_minutes) : 0; + #endif } uint8_t TouchButtons::read_buttons() { @@ -70,10 +72,10 @@ uint8_t TouchButtons::read_buttons() { const bool is_touched = TOUCH_PORTRAIT == _TOUCH_ORIENTATION ? touchIO.getRawPoint(&y, &x) : touchIO.getRawPoint(&x, &y); - #if HAS_TOUCH_SLEEP + #if HAS_DISPLAY_SLEEP if (is_touched) wakeUp(); - else if (!isSleeping() && ELAPSED(millis(), next_sleep_ms) && ui.on_status_screen()) + else if (next_sleep_ms && !isSleeping() && ELAPSED(millis(), next_sleep_ms) && ui.on_status_screen()) sleepTimeout(); #endif @@ -129,7 +131,7 @@ uint8_t TouchButtons::read_buttons() { return 0; } -#if HAS_TOUCH_SLEEP +#if HAS_DISPLAY_SLEEP void TouchButtons::sleepTimeout() { #if HAS_LCD_BRIGHTNESS @@ -139,6 +141,7 @@ uint8_t TouchButtons::read_buttons() { #endif next_sleep_ms = TSLP_SLEEPING; } + void TouchButtons::wakeUp() { if (isSleeping()) { #if HAS_LCD_BRIGHTNESS @@ -147,9 +150,13 @@ uint8_t TouchButtons::read_buttons() { WRITE(TFT_BACKLIGHT_PIN, HIGH); #endif } - next_sleep_ms = millis() + MIN_TO_MS(ui.sleep_timeout_minutes); + next_sleep_ms = ui.sleep_timeout_minutes ? millis() + MIN_TO_MS(ui.sleep_timeout_minutes) : 0; + } + + void MarlinUI::sleep_display(const bool sleep/*=true*/) { + if (!sleep) touchBt.wakeUp(); } -#endif // HAS_TOUCH_SLEEP +#endif // HAS_DISPLAY_SLEEP #endif // HAS_TOUCH_BUTTONS diff --git a/Marlin/src/lcd/touch/touch_buttons.h b/Marlin/src/lcd/touch/touch_buttons.h index 39768f2594b7..bfb86c6b6f4a 100644 --- a/Marlin/src/lcd/touch/touch_buttons.h +++ b/Marlin/src/lcd/touch/touch_buttons.h @@ -53,14 +53,13 @@ #define BUTTON_Y_HI (TFT_HEIGHT) - BUTTON_SPACING #define BUTTON_Y_LO BUTTON_Y_HI - BUTTON_HEIGHT -#define TSLP_PREINIT 0 #define TSLP_SLEEPING 1 class TouchButtons { public: static void init(); static uint8_t read_buttons(); - #if HAS_TOUCH_SLEEP + #if HAS_DISPLAY_SLEEP static millis_t next_sleep_ms; static bool isSleeping() { return next_sleep_ms == TSLP_SLEEPING; } static void sleepTimeout(); diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 2dc48ebbf0ad..b382f80d5149 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -3468,7 +3468,7 @@ void MarlinSettings::reset() { #if HAS_BACKLIGHT_TIMEOUT ui.backlight_timeout_minutes = LCD_BACKLIGHT_TIMEOUT_MINS; #elif HAS_DISPLAY_SLEEP - ui.sleep_timeout_minutes = TERN(TOUCH_SCREEN, TOUCH_IDLE_SLEEP_MINS, DISPLAY_SLEEP_MINUTES); + ui.sleep_timeout_minutes = DISPLAY_SLEEP_MINUTES; #endif #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 4ff62d017262..5ac26794a403 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -854,11 +854,11 @@ volatile bool Temperature::raw_temps_ready = false; #endif } // every 2 seconds - // Timeout after MAX_CYCLE_TIME_PID_AUTOTUNE minutes since the last undershoot/overshoot cycle - #ifndef MAX_CYCLE_TIME_PID_AUTOTUNE - #define MAX_CYCLE_TIME_PID_AUTOTUNE 20L + // Timeout after PID_AUTOTUNE_MAX_CYCLE_MINS minutes since the last undershoot/overshoot cycle + #ifndef PID_AUTOTUNE_MAX_CYCLE_MINS + #define PID_AUTOTUNE_MAX_CYCLE_MINS 20L #endif - if ((ms - _MIN(t1, t2)) > (MAX_CYCLE_TIME_PID_AUTOTUNE * 60L * 1000L)) { + if ((ms - _MIN(t1, t2)) > MIN_TO_MS(PID_AUTOTUNE_MAX_CYCLE_MINS)) { TERN_(DWIN_CREALITY_LCD, dwinPopupTemperature(0)); TERN_(PROUI_PID_TUNE, dwinPidTuning(PID_TUNING_TIMEOUT)); TERN_(EXTENSIBLE_UI, ExtUI::onPidTuning(ExtUI::result_t::PID_TUNING_TIMEOUT)); From d9396929aab56121698d4acde1b04add1574f43d Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 4 Feb 2024 10:13:03 -0800 Subject: [PATCH 17/39] =?UTF-8?q?=F0=9F=A9=B9=20Update=20BTT=20GTR=20v1.0?= =?UTF-8?q?=20DIAG=20jumper/pin=20(#26764)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Warnings.cpp | 3 ++- Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 519bb7651a67..a44b83439b8d 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -681,7 +681,8 @@ #if !USE_SENSORLESS #if ENABLED(USES_DIAG_JUMPERS) && DISABLED(DIAG_JUMPERS_REMOVED) #warning "Motherboard DIAG jumpers must be removed when SENSORLESS_HOMING is disabled. (Define DIAG_JUMPERS_REMOVED to suppress this warning.)" - #elif ENABLED(USES_DIAG_PINS) && DISABLED(DIAG_PINS_REMOVED) + #endif + #if ENABLED(USES_DIAG_PINS) && DISABLED(DIAG_PINS_REMOVED) #warning "Driver DIAG pins must be physically removed unless SENSORLESS_HOMING is enabled. (See https://bit.ly/2ZPRlt0) (Define DIAG_PINS_REMOVED to suppress this warning.)" #endif #endif diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h index 2830fc3b74dc..cd5755539bfc 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h @@ -31,7 +31,7 @@ #define BOARD_INFO_NAME "BTT GTR V1.0" -#define USES_DIAG_JUMPERS +#define USES_DIAG_PINS // DIAG jumpers rendered useless due to a board design error #define HAS_OTG_USB_HOST_SUPPORT // USB Flash Drive support #define M5_EXTENDER // The M5 extender is attached @@ -106,6 +106,7 @@ // Pins on the extender // #if ENABLED(M5_EXTENDER) + #define USES_DIAG_JUMPERS // DIAG jumpers work on M5 extender #ifndef X2_STOP_PIN #define X2_STOP_PIN PI4 // M5 M1_STOP #endif From 5003681414eac2f2953ff4430148d23d80036d62 Mon Sep 17 00:00:00 2001 From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Date: Sun, 4 Feb 2024 10:14:49 -0800 Subject: [PATCH 18/39] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20HOTEND=5FIDLE=5FTIME?= =?UTF-8?q?OUT=20with=20no=20heated=20bed=20(#26746)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/hotend_idle.h | 4 +++- Marlin/src/lcd/menu/menu_configuration.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Marlin/src/feature/hotend_idle.h b/Marlin/src/feature/hotend_idle.h index a4229153c966..d215e27bc564 100644 --- a/Marlin/src/feature/hotend_idle.h +++ b/Marlin/src/feature/hotend_idle.h @@ -32,7 +32,9 @@ typedef struct { timeout = HOTEND_IDLE_TIMEOUT_SEC; trigger = HOTEND_IDLE_MIN_TRIGGER; nozzle_target = HOTEND_IDLE_NOZZLE_TARGET; - bed_target = HOTEND_IDLE_BED_TARGET; + #if HAS_HEATED_BED + bed_target = HOTEND_IDLE_BED_TARGET; + #endif } } hotend_idle_settings_t; diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 6a992b8f2fd6..bd5ed492a17f 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -265,7 +265,9 @@ void menu_advanced_settings(); EDIT_ITEM(int3, MSG_TIMEOUT, &c.timeout, 0, 999); EDIT_ITEM(int3, MSG_TEMPERATURE, &c.trigger, 0, thermalManager.hotend_max_target(0)); EDIT_ITEM(int3, MSG_HOTEND_IDLE_NOZZLE_TARGET, &c.nozzle_target, 0, thermalManager.hotend_max_target(0)); - EDIT_ITEM(int3, MSG_HOTEND_IDLE_BED_TARGET, &c.bed_target, 0, BED_MAX_TARGET); + #if HAS_HEATED_BED + EDIT_ITEM(int3, MSG_HOTEND_IDLE_BED_TARGET, &c.bed_target, 0, BED_MAX_TARGET); + #endif END_MENU(); } From ec46a5953956a5e7f3d213439a1fd2bea793860e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 4 Feb 2024 16:06:43 -0600 Subject: [PATCH 19/39] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Fix?= =?UTF-8?q?=20uncrustify=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/extras/uncrustify.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/extras/uncrustify.cfg b/buildroot/share/extras/uncrustify.cfg index f332d2daf416..73ccadc5e37e 100644 --- a/buildroot/share/extras/uncrustify.cfg +++ b/buildroot/share/extras/uncrustify.cfg @@ -1014,7 +1014,7 @@ sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined # If true, space added with sp_cmt_cpp_start will be added after Doxygen # sequences like '///', '///<', '//!' and '//!<'. -sp_cmt_cpp_doxygen = force # true/false +sp_cmt_cpp_doxygen = true # true/false # If true, space added with sp_cmt_cpp_start will be added after Qt translator # or meta-data comments like '//:', '//=', and '//~'. From b12340b1d57288945633ad926136ab2c27d25c12 Mon Sep 17 00:00:00 2001 From: Robherc <68039049+robherc@users.noreply.github.com> Date: Sun, 4 Feb 2024 17:10:11 -0500 Subject: [PATCH 20/39] =?UTF-8?q?=F0=9F=94=A7=20Fix=20extraneous=20DIAG=20?= =?UTF-8?q?warnings=20(#26694)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/drivers.h | 15 +++++++++------ Marlin/src/inc/Warnings.cpp | 2 +- ini/features.ini | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h index fce8a5a9b275..5bb246ce9e3e 100644 --- a/Marlin/src/core/drivers.h +++ b/Marlin/src/core/drivers.h @@ -120,6 +120,10 @@ #define HAS_TMC220x 1 #endif +#if HAS_DRIVER(TMC26X) + #define HAS_TMC26X 1 +#endif + #define AXIS_IS_TMC(A) ( AXIS_DRIVER_TYPE(A,TMC2130) || AXIS_DRIVER_TYPE(A,TMC2160) \ || AXIS_DRIVER_TYPE(A,TMC2208) || AXIS_DRIVER_TYPE(A,TMC2209) \ || AXIS_DRIVER_TYPE(A,TMC2660) \ @@ -184,10 +188,9 @@ #if ANY_AXIS_HAS(SPI) #define HAS_TMC_SPI 1 #endif - -// -// TMC26XX Stepper Drivers -// -#if HAS_DRIVER(TMC26X) - #define HAS_TMC26X 1 +#if HAS_STALLGUARD || HAS_DRIVER(TMC2160_STANDALONE) || HAS_DRIVER(TMC2130_STANDALONE) \ + || HAS_DRIVER(TMC2209_STANDALONE) || HAS_DRIVER(TMC26X) \ + || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) \ + || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) + #define HAS_DIAG_PINS 1 #endif diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index a44b83439b8d..c2c0e63a5240 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -678,7 +678,7 @@ // // Warn users of potential endstop/DIAG pin conflicts to prevent homing issues when not using sensorless homing // -#if !USE_SENSORLESS +#if !USE_SENSORLESS && HAS_DIAG_PINS #if ENABLED(USES_DIAG_JUMPERS) && DISABLED(DIAG_JUMPERS_REMOVED) #warning "Motherboard DIAG jumpers must be removed when SENSORLESS_HOMING is disabled. (Define DIAG_JUMPERS_REMOVED to suppress this warning.)" #endif diff --git a/ini/features.ini b/ini/features.ini index 4baa2566f04d..6a808390be3f 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -28,7 +28,7 @@ SR_LCD_3W_NL = SailfishLCD=https://github.com/mikeshub HAS_MOTOR_CURRENT_(I2C|DAC|SPI|PWM) = build_src_filter=+ HAS_MOTOR_CURRENT_I2C = SlowSoftI2CMaster build_src_filter=+ -HAS_TMC26X = TMC26XStepper=https://github.com/MarlinFirmware/TMC26XStepper/archive/a7d7c92a13.zip +HAS_TMC26X = TMC26XStepper=https://github.com/MarlinFirmware/TMC26XStepper/archive/0.1.2.zip build_src_filter=+ LIB_INTERNAL_MAX31865 = build_src_filter=+ NEOPIXEL_LED = adafruit/Adafruit NeoPixel@~1.8.0 From d8e73d30362e17523bd50133344f7782fdf1be5e Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 5 Feb 2024 00:21:40 +0000 Subject: [PATCH 21/39] [cron] Bump distribution date (2024-02-05) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 388173bd4f6f..d7d6f6658c80 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-04" +//#define STRING_DISTRIBUTION_DATE "2024-02-05" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 902e4471079f..7729811138e3 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-04" + #define STRING_DISTRIBUTION_DATE "2024-02-05" #endif /** From e61a84a717cc80d4583278fdbdeff72becf3d9b5 Mon Sep 17 00:00:00 2001 From: Scott Mikutsky Date: Tue, 6 Feb 2024 00:37:29 -0500 Subject: [PATCH 22/39] =?UTF-8?q?=F0=9F=9A=B8=20Keep=20Filament=20Change?= =?UTF-8?q?=20near=20the=20top=20(#26172)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/menu/menu_main.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index 3daeb285a17a..7277045baf6b 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -332,14 +332,14 @@ void menu_main() { SUBMENU(MSG_MOTION, menu_motion); } - #if ALL(ADVANCED_PAUSE_FEATURE, DISABLE_ENCODER) - FILAMENT_CHANGE_ITEM(); - #endif - #if HAS_CUTTER SUBMENU(MSG_CUTTER(MENU), STICKY_SCREEN(menu_spindle_laser)); #endif + #if ENABLED(ADVANCED_PAUSE_FEATURE) + FILAMENT_CHANGE_ITEM(); + #endif + #if HAS_TEMPERATURE SUBMENU(MSG_TEMPERATURE, menu_temperature); #endif @@ -503,10 +503,6 @@ void menu_main() { }); #endif - #if ENABLED(ADVANCED_PAUSE_FEATURE) && DISABLED(DISABLE_ENCODER) - FILAMENT_CHANGE_ITEM(); - #endif - END_MENU(); } From 3dd22349a9c9daa7039e86c9a617efe063283beb Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 6 Feb 2024 06:06:16 +0000 Subject: [PATCH 23/39] [cron] Bump distribution date (2024-02-06) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d7d6f6658c80..efaf7ed11877 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-05" +//#define STRING_DISTRIBUTION_DATE "2024-02-06" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7729811138e3..1a406a97dda3 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-05" + #define STRING_DISTRIBUTION_DATE "2024-02-06" #endif /** From 005d6879d998ccd900d1a311185f7069541dc623 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Wed, 7 Feb 2024 19:33:54 +1300 Subject: [PATCH 24/39] =?UTF-8?q?=F0=9F=94=A7=20Restore=20probe=20XY=20edi?= =?UTF-8?q?t=20defaults,=20remove=20arbitrary=20Z=20limit=20(#26774)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_post.h | 8 ++++---- Marlin/src/inc/SanityCheck.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 6a24268895c0..c64bde0bc04c 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -2961,16 +2961,16 @@ #endif #if HAS_BED_PROBE #ifndef PROBE_OFFSET_XMIN - #define PROBE_OFFSET_XMIN -50 + #define PROBE_OFFSET_XMIN -(X_BED_SIZE) #endif #ifndef PROBE_OFFSET_XMAX - #define PROBE_OFFSET_XMAX 50 + #define PROBE_OFFSET_XMAX X_BED_SIZE #endif #ifndef PROBE_OFFSET_YMIN - #define PROBE_OFFSET_YMIN -50 + #define PROBE_OFFSET_YMIN -(Y_BED_SIZE) #endif #ifndef PROBE_OFFSET_YMAX - #define PROBE_OFFSET_YMAX 50 + #define PROBE_OFFSET_YMAX Y_BED_SIZE #endif #if ALL(ENDSTOPPULLUPS, USE_Z_MIN_PROBE) #define ENDSTOPPULLUP_ZMIN_PROBE diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 0736e96629d6..973f17927078 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1463,8 +1463,8 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i PROBE_OFFSET_ASSERT("PROBE_OFFSET_YMIN", PROBE_OFFSET_YMIN, -(Y_BED_SIZE), Y_BED_SIZE); PROBE_OFFSET_ASSERT("PROBE_OFFSET_YMAX", PROBE_OFFSET_YMAX, -(Y_BED_SIZE), Y_BED_SIZE); #endif - PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMIN", PROBE_OFFSET_ZMIN, -20, 20); - PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMAX", PROBE_OFFSET_ZMAX, -20, 20); + PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMIN", PROBE_OFFSET_ZMIN, -(Z_MAX_POS), Z_MAX_POS); + PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMAX", PROBE_OFFSET_ZMAX, -(Z_MAX_POS), Z_MAX_POS); /** * Check for improper NOZZLE_AS_PROBE or NOZZLE_TO_PROBE_OFFSET From 2c8e7bd5a58c338bad5111891497e8cb35f2fed6 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 7 Feb 2024 12:07:15 +0000 Subject: [PATCH 25/39] [cron] Bump distribution date (2024-02-07) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index efaf7ed11877..adb949adcc07 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-06" +//#define STRING_DISTRIBUTION_DATE "2024-02-07" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 1a406a97dda3..f5fee4f67e10 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-06" + #define STRING_DISTRIBUTION_DATE "2024-02-07" #endif /** From a3211253a05f6f0380fa3bee8eb32b2f02c7bd3a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Feb 2024 13:58:01 -0600 Subject: [PATCH 26/39] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20FTDI=20Eve=20Touch?= =?UTF-8?q?=20UI=20M84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp index dcf4789593b7..137ddc59cff5 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp @@ -113,9 +113,9 @@ bool MainMenu::onTouchEnd(uint8_t tag) { case 4: GOTO_SCREEN(MoveAxisScreen); break; case 5: injectCommands(F("M84 E" - TERN_(DISABLE_INACTIVE_X, " X") - TERN_(DISABLE_INACTIVE_Y, " Y") - TERN_(DISABLE_INACTIVE_Z, " Z") + TERN_(DISABLE_IDLE_X, " X") + TERN_(DISABLE_IDLE_Y, " Y") + TERN_(DISABLE_IDLE_Z, " Z") )); break; case 6: GOTO_SCREEN(TemperatureScreen); break; From a3c78c45101fd13066eae944ba4dcdfcec3e57f4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Feb 2024 14:00:29 -0600 Subject: [PATCH 27/39] =?UTF-8?q?=F0=9F=8E=A8=20Delete=20old=20FTDI=20Eve?= =?UTF-8?q?=20bootscreen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theme/bootscreen_logo_portrait.h | 41 ------------------- 1 file changed, 41 deletions(-) delete mode 100644 Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/bootscreen_logo_portrait.h diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/bootscreen_logo_portrait.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/bootscreen_logo_portrait.h deleted file mode 100644 index 169a306afcaa..000000000000 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/theme/bootscreen_logo_portrait.h +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 3 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * To view a copy of the GNU General Public License, go to the following * - * location: . * - ****************************************************************************/ - -/** - * This file was auto-generated using "svg2cpp.pl" - * - * The encoding consists of x,y pairs with the min and max scaled to - * 0x0000 and 0xFFFE. A single 0xFFFF in the data stream indicates the - * start of a new closed path. - */ -#pragma once - -constexpr float x_min = 0.000000, x_max = 272.000000, - y_min = 0.000000, y_max = 480.000000; - -const PROGMEM uint16_t logo_green[] = {0x8048, 0x46D9, 0x27BC, 0x9DBA, 0xD8D3, 0x9DBA}; -const PROGMEM uint16_t logo_mark[] = {0xDB9F, 0xAC0C, 0xDA6F, 0xAC2D, 0xD970, 0xAC91, 0xD8C0, 0xAD23, 0xD885, 0xADCF, 0xD8C0, 0xAE7A, 0xD970, 0xAF0C, 0xDA6F, 0xAF6F, 0xDB9F, 0xAF8F, 0xDCCE, 0xAF6F, 0xDDD0, 0xAF0C, 0xDE7D, 0xAE7B, 0xDEB9, 0xADCF, 0xDE7D, 0xAD22, 0xDDD0, 0xAC91, 0xDCCE, 0xAC2D, 0xFFFF, 0xDB9F, 0xABC3, 0xDCFE, 0xABEA, 0xDE28, 0xAC5E, 0xDEF1, 0xAD06, 0xDF36, 0xADCF, 0xDEF1, 0xAE95, 0xDE28, 0xAF3E, 0xDCFE, 0xAFB1, 0xDB9F, 0xAFD8, 0xDA3F, 0xAFB1, 0xD916, 0xAF3E, 0xD849, 0xAE95, 0xD808, 0xADCF, 0xD849, 0xAD06, 0xD916, 0xAC5E, 0xDA3F, 0xABEA, 0xFFFF, 0xDB7D, 0xACE6, 0xDAE4, 0xACE6, 0xDAE4, 0xADA9, 0xDB7D, 0xADA9, 0xDC3B, 0xAD94, 0xDC71, 0xAD48, 0xDC3B, 0xACFD, 0xFFFF, 0xDB85, 0xAC9E, 0xDCCB, 0xACC8, 0xDD37, 0xAD47, 0xDCF6, 0xADAC, 0xDC3E, 0xADDE, 0xDC85, 0xADFF, 0xDCE8, 0xAE4E, 0xDD92, 0xAEEA, 0xDCBD, 0xAEEA, 0xDC1E, 0xAE58, 0xDBA7, 0xAE03, 0xDB36, 0xADEF, 0xDAE4, 0xADEF, 0xDAE4, 0xAEEA, 0xDA26, 0xAEEA, 0xDA26, 0xAC9E}; -const PROGMEM uint16_t logo_type[] = {0xD8D5, 0xA520, 0xD8A5, 0xA563, 0xD82E, 0xA57F, 0xD348, 0xA57F, 0xD2D1, 0xA598, 0xD2A0, 0xA5D9, 0xD2A0, 0xAF7A, 0xD274, 0xAFBE, 0xD202, 0xAFDA, 0xCD37, 0xAFDA, 0xCCBF, 0xAFBE, 0xCC8F, 0xAF7A, 0xCC8F, 0xA5D9, 0xCC63, 0xA598, 0xCBF1, 0xA57F, 0xC70B, 0xA57F, 0xC694, 0xA563, 0xC664, 0xA520, 0xC664, 0xA28C, 0xC70B, 0xA22C, 0xD82E, 0xA22C, 0xD8A5, 0xA248, 0xD8D5, 0xA28C, 0xFFFF, 0xB138, 0xAC8C, 0xB952, 0xAC8C, 0xB952, 0xA57F, 0xB138, 0xA57F, 0xFFFF, 0xBF27, 0xA421, 0xBF57, 0xA476, 0xBF6D, 0xA4D0, 0xBF6D, 0xAD36, 0xBF57, 0xAD90, 0xBF27, 0xADE6, 0xBBFA, 0xAFB2, 0xBB60, 0xAFCF, 0xBABD, 0xAFDA, 0xAFCE, 0xAFDA, 0xAF30, 0xAFCF, 0xAE9A, 0xAFB2, 0xAB6E, 0xADE6, 0xAB39, 0xAD90, 0xAB28, 0xAD36, 0xAB28, 0xA4D0, 0xAB39, 0xA476, 0xAB6E, 0xA421, 0xAE9A, 0xA255, 0xAF30, 0xA239, 0xAFCE, 0xA22C, 0xBABD, 0xA22C, 0xBB60, 0xA239, 0xBBFA, 0xA255, 0xFFFF, 0x93A4, 0xACDC, 0x9CEA, 0xACDC, 0x9CEA, 0xAA34, 0x93A4, 0xAA34, 0x93A4, 0xACDC, 0xFFFF, 0x93A4, 0xA796, 0x9CEA, 0xA796, 0x9CEA, 0xA525, 0x93A4, 0xA525, 0xFFFF, 0xA227, 0xA421, 0xA258, 0xA478, 0xA26E, 0xA4D5, 0xA26E, 0xA700, 0xA24F, 0xA757, 0xA204, 0xA7A5, 0xA089, 0xA8B8, 0xA061, 0xA903, 0xA092, 0xA949, 0xA1FC, 0xAA43, 0xA24B, 0xAA91, 0xA26E, 0xAAE8, 0xA26E, 0xAD36, 0xA258, 0xAD90, 0xA227, 0xADE6, 0x9EFC, 0xAFB2, 0x9E61, 0xAFCF, 0x9DBE, 0xAFDA, 0x8ED0, 0xAFDA, 0x8E28, 0xAF7A, 0x8E28, 0xA28C, 0x8E59, 0xA248, 0x8ED0, 0xA22C, 0x9DBE, 0xA22C, 0x9E61, 0xA239, 0x9EFC, 0xA255, 0xFFFF, 0x853C, 0xA502, 0x8517, 0xA557, 0x84C9, 0xA5A2, 0x7994, 0xACC8, 0x8494, 0xACC8, 0x850A, 0xACE4, 0x853C, 0xAD27, 0x853C, 0xAF7A, 0x850A, 0xAFBE, 0x8494, 0xAFDA, 0x7371, 0xAFDA, 0x72C9, 0xAF7A, 0x72C9, 0xAD09, 0x72E8, 0xACB2, 0x7333, 0xAC64, 0x7EA5, 0xA53E, 0x73A6, 0xA53E, 0x732F, 0xA522, 0x72FE, 0xA4DF, 0x72FE, 0xA28C, 0x732F, 0xA248, 0x73A6, 0xA22C, 0x8494, 0xA22C, 0x850A, 0xA248, 0x853C, 0xA28C, 0xFFFF, 0x6B68, 0xAC87, 0x6BDB, 0xACA3, 0x6C07, 0xACE6, 0x6C07, 0xAF7A, 0x6BDB, 0xAFBE, 0x6B68, 0xAFDA, 0x5C84, 0xAFDA, 0x5BDC, 0xAF7A, 0x5BDC, 0xA28C, 0x5C84, 0xA22C, 0x6146, 0xA22C, 0x61EE, 0xA28C, 0x61EE, 0xAC2D, 0x621E, 0xAC6E, 0x6295, 0xAC87, 0xFFFF, 0x52C6, 0xA248, 0x52F7, 0xA28C, 0x52F7, 0xAD45, 0x52EE, 0xAD45, 0x52DC, 0xAD9B, 0x52B1, 0xADE6, 0x4F85, 0xAFB2, 0x4EEA, 0xAFCF, 0x4E47, 0xAFDA, 0x4359, 0xAFDA, 0x42BA, 0xAFCF, 0x4224, 0xAFB2, 0x3EF8, 0xADE6, 0x3EC3, 0xAD90, 0x3EB2, 0xAD36, 0x3EB2, 0xA28C, 0x3EE2, 0xA248, 0x3F5A, 0xA22C, 0x441B, 0xA22C, 0x4493, 0xA248, 0x44C3, 0xA28C, 0x44C3, 0xAC2D, 0x44F4, 0xAC71, 0x456B, 0xAC8C, 0x4C3E, 0xAC8C, 0x4CB1, 0xAC71, 0x4CDD, 0xAC2D, 0x4CDD, 0xA28C, 0x4D0D, 0xA248, 0x4D85, 0xA22C, 0x524F, 0xA22C, 0xFFFF, 0x3748, 0xAC87, 0x37BB, 0xACA3, 0x37E7, 0xACE6, 0x37E7, 0xAF7A, 0x37BB, 0xAFBE, 0x3748, 0xAFDA, 0x2864, 0xAFDA, 0x27BC, 0xAF7A, 0x27BC, 0xA28C, 0x2864, 0xA22C, 0x2D26, 0xA22C, 0x2DCD, 0xA28C, 0x2DCD, 0xAC2D, 0x2DFE, 0xAC6E, 0x2E75, 0xAC87}; -const PROGMEM uint16_t logo_black[] = {0x8048, 0x527A, 0x8ADE, 0x5CDE, 0x75B2, 0x5CDE, 0xFFFF, 0x8048, 0x4FF6, 0x71D9, 0x5E20, 0x8EB8, 0x5E20, 0x8048, 0x4FF6, 0xFFFF, 0x4436, 0x8D8E, 0x4ECC, 0x97F2, 0x39A0, 0x97F2, 0xFFFF, 0x4436, 0x8B0A, 0x35C8, 0x9934, 0x52A5, 0x9934, 0xFFFF, 0xBC3D, 0x8D8E, 0xC6D4, 0x97F2, 0xB1A7, 0x97F2, 0xFFFF, 0xBC3D, 0x8B0A, 0xADCE, 0x9934, 0xCAAC, 0x9934, 0xFFFF, 0x8045, 0x6778, 0x7F6D, 0x67A7, 0x7E9D, 0x689F, 0x7D49, 0x69EA, 0x7B41, 0x6A81, 0x7908, 0x6A3A, 0x7726, 0x692C, 0x75EA, 0x685A, 0x7505, 0x684C, 0x744A, 0x6899, 0x73F5, 0x69A8, 0x7345, 0x6B1A, 0x7193, 0x6BF8, 0x6F4D, 0x6C08, 0x6CFA, 0x6B45, 0x6B61, 0x6AA3, 0x6A7D, 0x6AB7, 0x69EB, 0x6B1D, 0x6A1D, 0x6C34, 0x6A22, 0x6DB8, 0x68E5, 0x6ECD, 0x66B9, 0x6F33, 0x6417, 0x6EC5, 0x6239, 0x6E5C, 0x6165, 0x6E91, 0x6108, 0x6F09, 0x61C1, 0x7018, 0x6282, 0x7196, 0x61CF, 0x72D1, 0x5FE5, 0x7384, 0x5D38, 0x7380, 0x5B4B, 0x7365, 0x5A97, 0x73B7, 0x5A74, 0x7438, 0x5B90, 0x7520, 0x5CE8, 0x7671, 0x5CCB, 0x77BB, 0x5B43, 0x78B0, 0x58B6, 0x7914, 0x56D7, 0x7944, 0x564F, 0x79AD, 0x5667, 0x7A2F, 0x57DA, 0x7AE3, 0x59B7, 0x7BF3, 0x5A31, 0x7D37, 0x5927, 0x7E5D, 0x56E0, 0x7F1E, 0x5529, 0x7F93, 0x54D7, 0x800D, 0x5529, 0x8087, 0x56E0, 0x80FD, 0x5926, 0x81BE, 0x5A30, 0x82E5, 0x59B5, 0x8428, 0x57D8, 0x8538, 0x5664, 0x85EB, 0x564C, 0x866D, 0x56D4, 0x86D7, 0x58B2, 0x8708, 0x5B3F, 0x876B, 0x5CC6, 0x8860, 0x5CE3, 0x89AA, 0x5B8B, 0x8AFC, 0x5A6D, 0x8BE3, 0x5A91, 0x8C65, 0x5B44, 0x8CB7, 0x5D32, 0x8C9C, 0x5FDE, 0x8C98, 0x61C7, 0x8D4B, 0x627A, 0x8E87, 0x61B9, 0x9005, 0x60FF, 0x9114, 0x615C, 0x918B, 0x622F, 0x91C0, 0x640E, 0x9158, 0x66B0, 0x90EA, 0x68DC, 0x9150, 0x6A18, 0x9266, 0x6A12, 0x93E9, 0x69E0, 0x9501, 0x6A72, 0x9567, 0x6B56, 0x957B, 0x6CEE, 0x94D9, 0x6F43, 0x9417, 0x7188, 0x9428, 0x7339, 0x9506, 0x73E9, 0x9678, 0x743E, 0x9787, 0x74F8, 0x97D4, 0x75DD, 0x97C6, 0x771A, 0x96F4, 0x78FB, 0x95E6, 0x7B35, 0x95A1, 0x7D3D, 0x9637, 0x7E91, 0x9782, 0x7F60, 0x987A, 0x8038, 0x98AA, 0x810F, 0x987B, 0x81DF, 0x9782, 0x8333, 0x9638, 0x853B, 0x95A1, 0x8775, 0x95E7, 0x8956, 0x96F5, 0x8A92, 0x97C8, 0x8B78, 0x97D6, 0x8C32, 0x9789, 0x8C88, 0x967A, 0x8D37, 0x9508, 0x8EE9, 0x942A, 0x912F, 0x941A, 0x9383, 0x94DD, 0x951B, 0x957F, 0x95FF, 0x956B, 0x9690, 0x9505, 0x9660, 0x93ED, 0x9659, 0x926A, 0x9797, 0x9154, 0x99C3, 0x90EF, 0x9C65, 0x915D, 0x9E43, 0x91C6, 0x9F17, 0x9191, 0x9F74, 0x9119, 0x9EBB, 0x900A, 0x9DFA, 0x8E8C, 0x9EAE, 0x8D51, 0xA098, 0x8C9E, 0xA345, 0x8CA2, 0xA531, 0x8CBE, 0xA5E5, 0x8C6B, 0xA609, 0x8BEA, 0xA4EC, 0x8B02, 0xA394, 0x89B1, 0xA3B2, 0x8867, 0xA53A, 0x8772, 0xA7C6, 0x870E, 0xA9A5, 0x86DE, 0xAA2D, 0x8675, 0xAA14, 0x85F2, 0xA8A2, 0x853F, 0xA6C5, 0x842E, 0xA64B, 0x82EB, 0xA755, 0x81C5, 0xA99C, 0x8104, 0xAB52, 0x808F, 0xABA6, 0x8015, 0xAB52, 0x7F9B, 0xA99C, 0x7F25, 0xA755, 0x7E64, 0xA64C, 0x7D3E, 0xA6C7, 0x7BFA, 0xA8A5, 0x7AEA, 0xAA18, 0x7A37, 0xAA31, 0x79B5, 0xA9A9, 0x794B, 0xA7CA, 0x791B, 0xA53C, 0x78B7, 0xA3B6, 0x77C1, 0xA39A, 0x7677, 0xA4F1, 0x7526, 0xA60E, 0x743F, 0xA5EB, 0x73BD, 0xA538, 0x736B, 0xA34B, 0x7387, 0xA09E, 0x738A, 0x9EB4, 0x72D6, 0x9E02, 0x719B, 0x9EC4, 0x701D, 0x9F7E, 0x6F0E, 0x9F20, 0x6E96, 0x9E4E, 0x6E61, 0x9C6E, 0x6ECA, 0x99CB, 0x6F37, 0x97A0, 0x6ED2, 0x9664, 0x6DBC, 0x966B, 0x6C38, 0x969B, 0x6B21, 0x960B, 0x6ABB, 0x9526, 0x6AA6, 0x938E, 0x6B48, 0x913B, 0x6C0B, 0x8EF4, 0x6BFA, 0x8D43, 0x6B1D, 0x8C94, 0x69AA, 0x8C3F, 0x689B, 0x8B85, 0x684D, 0x8A9E, 0x685C, 0x8962, 0x692E, 0x8781, 0x6A3C, 0x8546, 0x6A82, 0x833F, 0x69EA, 0x81EC, 0x68A0, 0x811C, 0x67A8, 0x8045, 0x6778, 0x8045, 0x6778, 0xFFFF, 0x8047, 0x6AA0, 0x81C8, 0x6AFA, 0x8268, 0x6BD5, 0x81C8, 0x6CAF, 0x8047, 0x6D09, 0x7EC6, 0x6CAF, 0x7E27, 0x6BD5, 0x7EC6, 0x6AFA, 0x8047, 0x6AA0, 0x8047, 0x6AA0, 0xFFFF, 0x803E, 0x6E19, 0x867C, 0x6E71, 0x8C65, 0x6F75, 0x91D7, 0x711B, 0x96AD, 0x735B, 0x9ABC, 0x762C, 0x9DA2, 0x794C, 0x9F5F, 0x7CA2, 0x9FF3, 0x8011, 0x9F5E, 0x8380, 0x9DA1, 0x86D5, 0x9ABA, 0x89F6, 0x96AB, 0x8CC7, 0x91D6, 0x8F08, 0x8C65, 0x90AD, 0x867C, 0x91B1, 0x803D, 0x9209, 0x7A00, 0x91B1, 0x7416, 0x90AD, 0x6EA6, 0x8F08, 0x69D0, 0x8CC7, 0x65D6, 0x8A0A, 0x62EE, 0x86F4, 0x6125, 0x839B, 0x6089, 0x8011, 0x6124, 0x7C88, 0x62ED, 0x792E, 0x65D6, 0x7619, 0x69CF, 0x735B, 0x6EA5, 0x711B, 0x7416, 0x6F75, 0x7A00, 0x6E71, 0x803E, 0x6E19, 0x803E, 0x6E19, 0xFFFF, 0x803E, 0x6EB2, 0x7A5A, 0x6F04, 0x74B2, 0x6FF8, 0x6F4B, 0x7194, 0x6A8F, 0x73C7, 0x66A2, 0x7681, 0x63D5, 0x7986, 0x6226, 0x7CBF, 0x6197, 0x8011, 0x6226, 0x8363, 0x63D5, 0x869C, 0x66A2, 0x89A2, 0x6A8F, 0x8C5B, 0x6F4B, 0x8E8E, 0x74B2, 0x902B, 0x7A5A, 0x911E, 0x803D, 0x9170, 0x803E, 0x9170, 0x8621, 0x911E, 0x8BCA, 0x902B, 0x9130, 0x8E8E, 0x95ED, 0x8C5B, 0x99CF, 0x89AB, 0x9CA7, 0x869C, 0x9E55, 0x8367, 0x9EE5, 0x8011, 0x9E55, 0x7CBB, 0x9CA7, 0x7986, 0x99CF, 0x7677, 0x95ED, 0x73C7, 0x9130, 0x7194, 0x8BCA, 0x6FF8, 0x8621, 0x6F04, 0x803E, 0x6EB2, 0x803E, 0x6EB2, 0xFFFF, 0x80BC, 0x6FD7, 0x80AF, 0x71D8, 0x7FC8, 0x71D9, 0x7FB7, 0x6FD8, 0x80BC, 0x6FD7, 0x80BC, 0x6FD7, 0xFFFF, 0x83CB, 0x6FF6, 0x84CD, 0x700B, 0x843E, 0x7206, 0x835B, 0x71F4, 0xFFFF, 0x7CA9, 0x6FF8, 0x7D1A, 0x71F5, 0x7C37, 0x7207, 0x7BA7, 0x700D, 0x7CA9, 0x6FF8, 0x7CA9, 0x6FF8, 0xFFFF, 0x87CD, 0x7068, 0x88C7, 0x7092, 0x87BA, 0x727C, 0x86DF, 0x7258, 0xFFFF, 0x78A8, 0x706B, 0x7997, 0x725A, 0x78BA, 0x727E, 0x77AD, 0x7095, 0x78A8, 0x706B, 0x78A8, 0x706B, 0xFFFF, 0x6700, 0x708A, 0x6880, 0x70E5, 0x6920, 0x71BF, 0x6880, 0x7299, 0x66FF, 0x72F4, 0x657F, 0x7299, 0x64E0, 0x71BF, 0x657F, 0x70E4, 0x6700, 0x708A, 0x6700, 0x708A, 0xFFFF, 0x998D, 0x708C, 0x9B0E, 0x70E6, 0x9BAE, 0x71C0, 0x9B0E, 0x729B, 0x998D, 0x72F6, 0x980D, 0x729B, 0x976E, 0x71C1, 0x980D, 0x70E7, 0x998D, 0x708C, 0x998D, 0x708C, 0xFFFF, 0x8BA7, 0x712C, 0x8C95, 0x716A, 0x8B10, 0x7339, 0x8A3F, 0x7303, 0x8BA7, 0x712C, 0xFFFF, 0x74CE, 0x712F, 0x7635, 0x7307, 0x7564, 0x733C, 0x73DE, 0x716D, 0x74CE, 0x712F, 0x74CE, 0x712F, 0xFFFF, 0x8F47, 0x723F, 0x9023, 0x728E, 0x8E2D, 0x743A, 0x8D6B, 0x73F4, 0x8F47, 0x723F, 0xFFFF, 0x712D, 0x7242, 0x7308, 0x73F7, 0x7248, 0x743D, 0x7050, 0x7292, 0x712D, 0x7242, 0x712D, 0x7242, 0xFFFF, 0x803E, 0x72F6, 0x891B, 0x73F4, 0x909A, 0x76CC, 0x959F, 0x7B0B, 0x975E, 0x8011, 0x959F, 0x8517, 0x909A, 0x8957, 0x891B, 0x8C2E, 0x803E, 0x8D2B, 0x7761, 0x8C2E, 0x6FE2, 0x8957, 0x6ADD, 0x8517, 0x691E, 0x8011, 0x6ADD, 0x7B0B, 0x6FE2, 0x76CC, 0x7761, 0x73F4, 0x803E, 0x72F6, 0x803E, 0x72F6, 0xFFFF, 0x803E, 0x738F, 0x77C8, 0x7481, 0x70A0, 0x7738, 0x6BD7, 0x7B46, 0x6A2C, 0x8011, 0x6BD7, 0x84DC, 0x70A1, 0x88EA, 0x77C9, 0x8BA1, 0x803E, 0x8C93, 0x88B4, 0x8BA1, 0x8FDB, 0x88EA, 0x94A5, 0x84DD, 0x9650, 0x8011, 0x94A5, 0x7B46, 0x8FDB, 0x7738, 0x88B4, 0x7481, 0x803E, 0x738F, 0x803E, 0x738F, 0xFFFF, 0x929B, 0x739A, 0x935C, 0x73FA, 0x9100, 0x7578, 0x905A, 0x7527, 0x9175, 0x745E, 0xFFFF, 0x6DDC, 0x739D, 0x7022, 0x7527, 0x6F74, 0x757C, 0x6D16, 0x73FF, 0x6DDC, 0x739D, 0x6DDC, 0x739D, 0xFFFF, 0x9589, 0x7533, 0x9634, 0x75A4, 0x937E, 0x76ED, 0x92E8, 0x768B, 0xFFFF, 0x6AEB, 0x7539, 0x6D8D, 0x7690, 0x6CFB, 0x76F0, 0x6CEC, 0x76FA, 0x6BED, 0x7674, 0x6A40, 0x75A9, 0x6A45, 0x75A7, 0x6AEB, 0x7539, 0x6AEB, 0x7539, 0xFFFF, 0x980B, 0x7707, 0x989A, 0x7784, 0x9597, 0x7892, 0x951A, 0x7825, 0xFFFF, 0x686A, 0x770C, 0x6B5B, 0x782A, 0x6ADF, 0x7897, 0x67DD, 0x7788, 0x686A, 0x770C, 0x686A, 0x770C, 0xFFFF, 0x9A12, 0x790A, 0x9A7E, 0x7991, 0x9740, 0x7A5E, 0x96E1, 0x79E8, 0x9A12, 0x790A, 0xFFFF, 0x6664, 0x790F, 0x6996, 0x79ED, 0x6937, 0x7A63, 0x65F9, 0x7996, 0x6664, 0x790F, 0x6664, 0x790F, 0xFFFF, 0x9B91, 0x7B32, 0x9BDB, 0x7BC1, 0x9870, 0x7C48, 0x9831, 0x7BCB, 0xFFFF, 0x64E6, 0x7B37, 0x6847, 0x7BD0, 0x6807, 0x7C4C, 0x649D, 0x7BC5, 0x64E6, 0x7B37, 0x64E6, 0x7B37, 0xFFFF, 0x9C82, 0x7D72, 0x9CA7, 0x7E06, 0x9925, 0x7E46, 0x9903, 0x7DC5, 0xFFFF, 0x63F7, 0x7D78, 0x6776, 0x7DC9, 0x6756, 0x7E49, 0x63D3, 0x7E0A, 0x63F7, 0x7D78, 0x63F7, 0x7D78, 0xFFFF, 0x5C87, 0x7EDB, 0x5E08, 0x7F35, 0x5EA8, 0x800F, 0x5E08, 0x80E9, 0x5C87, 0x8144, 0x5C85, 0x8144, 0x5B06, 0x80E9, 0x5A67, 0x800F, 0x5B06, 0x7F35, 0x5C87, 0x7EDB, 0x5C87, 0x7EDB, 0xFFFF, 0xA402, 0x7EDE, 0xA583, 0x7F38, 0xA623, 0x8011, 0xA623, 0x8013, 0xA583, 0x80EC, 0xA402, 0x8147, 0xA281, 0x80ED, 0xA1E2, 0x8013, 0xA281, 0x7F38, 0xA402, 0x7EDE, 0xA402, 0x7EDE, 0xFFFF, 0x9CE0, 0x7FC0, 0x9CE0, 0x8055, 0x9957, 0x804D, 0x9957, 0x7FCB, 0xFFFF, 0x639D, 0x7FC5, 0x6726, 0x7FCE, 0x6726, 0x8051, 0x639D, 0x805A, 0x639D, 0x7FC5, 0x639D, 0x7FC5, 0xFFFF, 0x9927, 0x81D1, 0x9CAA, 0x8210, 0x9C87, 0x82A2, 0x9907, 0x8252, 0x9927, 0x81D1, 0x9927, 0x81D1, 0xFFFF, 0x6757, 0x81D5, 0x6777, 0x8255, 0x63F9, 0x82A7, 0x63D4, 0x8214, 0xFFFF, 0x9877, 0x83CF, 0x9BE2, 0x8455, 0x9B99, 0x84E3, 0x9838, 0x844C, 0x9877, 0x83CF, 0x9877, 0x83CF, 0xFFFF, 0x6808, 0x83D3, 0x6848, 0x8450, 0x64E7, 0x84E8, 0x649E, 0x845A, 0xFFFF, 0x9749, 0x85B9, 0x9A88, 0x8684, 0x9A1D, 0x870C, 0x96EB, 0x862E, 0x9749, 0x85B9, 0x9749, 0x85B9, 0xFFFF, 0x6938, 0x85BD, 0x6997, 0x8634, 0x6665, 0x8710, 0x65F9, 0x8689, 0xFFFF, 0x95A2, 0x8785, 0x98A5, 0x8892, 0x9818, 0x890F, 0x9527, 0x87F2, 0x95A2, 0x8785, 0x95A2, 0x8785, 0xFFFF, 0x6ADF, 0x878A, 0x6B5B, 0x87F8, 0x686A, 0x8914, 0x67DC, 0x8897, 0x6ADF, 0x878A, 0xFFFF, 0x6CF7, 0x892F, 0x6D8D, 0x8991, 0x6AEB, 0x8AE9, 0x6A40, 0x8A79, 0xFFFF, 0x9380, 0x8932, 0x9645, 0x8A72, 0x963E, 0x8A77, 0x9599, 0x8AE3, 0x92F5, 0x898D, 0x9380, 0x8932, 0x9380, 0x8932, 0xFFFF, 0x9110, 0x8AA1, 0x936F, 0x8C1F, 0x92AA, 0x8C80, 0x9064, 0x8AF7, 0x9110, 0x8AA1, 0x9110, 0x8AA1, 0xFFFF, 0x6F73, 0x8AA5, 0x7021, 0x8AFB, 0x7035, 0x8B04, 0x6DED, 0x8C8B, 0x6DE1, 0x8C87, 0x6D17, 0x8C23, 0xFFFF, 0x8E3E, 0x8BE1, 0x9037, 0x8D8B, 0x8F59, 0x8DDC, 0x8D7C, 0x8C27, 0x8E3E, 0x8BE1, 0x8E3E, 0x8BE1, 0xFFFF, 0x7259, 0x8BEB, 0x731B, 0x8C31, 0x7140, 0x8DE7, 0x7064, 0x8D97, 0xFFFF, 0x8B21, 0x8CE3, 0x8CA9, 0x8EB2, 0x8BBA, 0x8EEF, 0x8A51, 0x8D18, 0x8B21, 0x8CE3, 0x8B21, 0x8CE3, 0xFFFF, 0x7576, 0x8CEB, 0x7648, 0x8D20, 0x74E0, 0x8EF8, 0x73F2, 0x8EBB, 0xFFFF, 0x66F3, 0x8D2F, 0x6874, 0x8D8A, 0x687D, 0x8D8F, 0x6886, 0x8D94, 0x6926, 0x8E6E, 0x6887, 0x8F48, 0x6705, 0x8FA2, 0x6584, 0x8F49, 0x657F, 0x8F45, 0x6570, 0x8F3E, 0x6573, 0x8F3E, 0x64D3, 0x8E63, 0x6573, 0x8D89, 0x66F3, 0x8D2F, 0x66F3, 0x8D2F, 0xFFFF, 0x9993, 0x8D31, 0x9B13, 0x8D8C, 0x9BB4, 0x8E66, 0x9B16, 0x8F40, 0x9993, 0x8F9A, 0x9814, 0x8F40, 0x9774, 0x8E66, 0x9812, 0x8D8C, 0x9993, 0x8D31, 0x9993, 0x8D31, 0xFFFF, 0x87CD, 0x8DA1, 0x88DC, 0x8F8B, 0x87E0, 0x8FB5, 0x86F0, 0x8DC6, 0x87CD, 0x8DA1, 0x87CD, 0x8DA1, 0xFFFF, 0x78CD, 0x8DA8, 0x79A8, 0x8DCB, 0x78BC, 0x8FBB, 0x77C1, 0x8F92, 0xFFFF, 0x8450, 0x8E19, 0x84E2, 0x9014, 0x83E0, 0x9029, 0x836C, 0x8E2C, 0x8450, 0x8E19, 0x8450, 0x8E19, 0xFFFF, 0x7C48, 0x8E1C, 0x7D2B, 0x8E2E, 0x7CBD, 0x902C, 0x7BBB, 0x9017, 0x7C48, 0x8E1C, 0xFFFF, 0x80BF, 0x8E49, 0x80D2, 0x904A, 0x7FCC, 0x904A, 0x7FD9, 0x8E49, 0x80BF, 0x8E49, 0x80BF, 0x8E49, 0xFFFF, 0x804F, 0x9321, 0x81D0, 0x937A, 0x8271, 0x9455, 0x81D1, 0x952F, 0x8051, 0x958A, 0x7ECF, 0x9530, 0x7E2F, 0x9456, 0x7ECE, 0x937B, 0x804F, 0x9321, 0x804F, 0x9321, 0xFFFF, 0x8048, 0x46D9, 0x27BC, 0x9DBA, 0xD8D3, 0x9DBA, 0xFFFF, 0x8048, 0x4BC9, 0x952E, 0x604A, 0x6B62, 0x604A, 0xFFFF, 0x68D2, 0x62CE, 0x97BF, 0x62CE, 0xB9BA, 0x8427, 0xA239, 0x9B36, 0x5E16, 0x9B36, 0x46B6, 0x8446, 0x68D2, 0x62CE, 0xFFFF, 0xBC3E, 0x869F, 0xD13B, 0x9B36, 0xA742, 0x9B36, 0xFFFF, 0x4431, 0x86BE, 0x590E, 0x9B36, 0x2F54, 0x9B36, 0x4431, 0x86BE}; -const PROGMEM uint16_t logo_white[] = {0x80BC, 0x6FD7, 0x80AF, 0x71D8, 0x7FC8, 0x71D9, 0x7FB7, 0x6FD8, 0x80BC, 0x6FD7, 0xFFFF, 0x83CB, 0x6FF6, 0x84CD, 0x700B, 0x843E, 0x7206, 0x835B, 0x71F4, 0xFFFF, 0x7CA9, 0x6FF8, 0x7D1A, 0x71F5, 0x7C37, 0x7207, 0x7BA7, 0x700D, 0x7CA9, 0x6FF8, 0x7CA9, 0x6FF8, 0xFFFF, 0x87CD, 0x7068, 0x88C7, 0x7092, 0x87BA, 0x727C, 0x86DF, 0x7258, 0xFFFF, 0x78A8, 0x706B, 0x7997, 0x725A, 0x78BA, 0x727E, 0x77AD, 0x7095, 0x78A8, 0x706B, 0x78A8, 0x706B, 0xFFFF, 0x8BA7, 0x712C, 0x8C95, 0x716A, 0x8B10, 0x7339, 0x8A3F, 0x7303, 0xFFFF, 0x74CE, 0x712F, 0x7635, 0x7307, 0x7564, 0x733C, 0x73DE, 0x716D, 0x74CE, 0x712F, 0x74CE, 0x712F, 0xFFFF, 0x8F47, 0x723F, 0x9023, 0x728E, 0x8E2D, 0x743A, 0x8D6B, 0x73F4, 0xFFFF, 0x712D, 0x7242, 0x7309, 0x73F7, 0x7248, 0x743D, 0x7050, 0x7292, 0x712D, 0x7242, 0x712D, 0x7242, 0xFFFF, 0x929B, 0x739A, 0x935C, 0x73FA, 0x9100, 0x7578, 0x905A, 0x7527, 0xFFFF, 0x6DDC, 0x739D, 0x7022, 0x7527, 0x6F74, 0x757C, 0x6D16, 0x73FF, 0x6DDC, 0x739D, 0x6DDC, 0x739D, 0xFFFF, 0x9589, 0x7533, 0x9634, 0x75A4, 0x937E, 0x76ED, 0x92E8, 0x768B, 0xFFFF, 0x6AEB, 0x7539, 0x6D8D, 0x7690, 0x6CFB, 0x76F0, 0x6A40, 0x75A9, 0x6AEB, 0x7539, 0xFFFF, 0x980B, 0x7707, 0x989A, 0x7784, 0x9597, 0x7892, 0x951A, 0x7825, 0xFFFF, 0x686A, 0x770C, 0x6B5B, 0x782A, 0x6ADF, 0x7897, 0x67DD, 0x7788, 0x686A, 0x770C, 0x686A, 0x770C, 0xFFFF, 0x9A12, 0x790A, 0x9A7E, 0x7991, 0x9740, 0x7A5E, 0x96E1, 0x79E8, 0xFFFF, 0x6664, 0x790F, 0x6996, 0x79ED, 0x6937, 0x7A63, 0x65F9, 0x7996, 0x6664, 0x790F, 0x6664, 0x790F, 0xFFFF, 0x9B91, 0x7B32, 0x9BDB, 0x7BC1, 0x9870, 0x7C48, 0x9831, 0x7BCC, 0xFFFF, 0x64E6, 0x7B37, 0x6847, 0x7BD0, 0x6807, 0x7C4C, 0x649D, 0x7BC5, 0x64E6, 0x7B37, 0x64E6, 0x7B37, 0xFFFF, 0x9C82, 0x7D72, 0x9CA7, 0x7E06, 0x9925, 0x7E46, 0x9903, 0x7DC5, 0xFFFF, 0x63F7, 0x7D78, 0x6776, 0x7DC9, 0x6756, 0x7E49, 0x63D3, 0x7E0A, 0x63F7, 0x7D78, 0x63F7, 0x7D78, 0xFFFF, 0x9CE0, 0x7FC0, 0x9CE0, 0x8055, 0x9957, 0x804D, 0x9957, 0x7FCB, 0xFFFF, 0x639D, 0x7FC5, 0x6726, 0x7FCE, 0x6726, 0x8051, 0x639D, 0x805A, 0x639D, 0x7FC5, 0xFFFF, 0x9927, 0x81D1, 0x9CAA, 0x8210, 0x9C87, 0x82A2, 0x9907, 0x8252, 0x9927, 0x81D1, 0x9927, 0x81D1, 0xFFFF, 0x6757, 0x81D5, 0x6777, 0x8256, 0x63F9, 0x82A7, 0x63D4, 0x8214, 0xFFFF, 0x9877, 0x83CF, 0x9BE2, 0x8455, 0x9B99, 0x84E3, 0x9838, 0x844C, 0x9877, 0x83CF, 0xFFFF, 0x6808, 0x83D3, 0x6848, 0x8450, 0x64E7, 0x84E8, 0x649E, 0x845A, 0xFFFF, 0x9749, 0x85B9, 0x9A88, 0x8684, 0x9A1D, 0x870C, 0x96EB, 0x862E, 0x9749, 0x85B9, 0x9749, 0x85B9, 0xFFFF, 0x6938, 0x85BD, 0x6997, 0x8634, 0x6665, 0x8710, 0x65F9, 0x8689, 0xFFFF, 0x95A2, 0x8785, 0x98A5, 0x8892, 0x9818, 0x890F, 0x9527, 0x87F2, 0x95A2, 0x8785, 0x95A2, 0x8785, 0xFFFF, 0x6ADF, 0x878A, 0x6B5B, 0x87F8, 0x686A, 0x8915, 0x67DC, 0x8897, 0xFFFF, 0x6CF7, 0x8930, 0x6D8D, 0x8991, 0x6AEB, 0x8AE9, 0x6A40, 0x8A79, 0xFFFF, 0x9380, 0x8932, 0x9645, 0x8A72, 0x9599, 0x8AE3, 0x92F5, 0x898D, 0x9380, 0x8932, 0xFFFF, 0x9110, 0x8AA1, 0x936F, 0x8C1F, 0x92AA, 0x8C80, 0x9064, 0x8AF7, 0x9110, 0x8AA1, 0x9110, 0x8AA1, 0xFFFF, 0x6F73, 0x8AA5, 0x7021, 0x8AFB, 0x6DED, 0x8C8C, 0x6D17, 0x8C23, 0xFFFF, 0x8E3E, 0x8BE1, 0x9037, 0x8D8B, 0x8F59, 0x8DDC, 0x8D7C, 0x8C27, 0x8E3E, 0x8BE1, 0x8E3E, 0x8BE1, 0xFFFF, 0x7259, 0x8BEB, 0x731B, 0x8C31, 0x7140, 0x8DE7, 0x7064, 0x8D97, 0xFFFF, 0x8B21, 0x8CE3, 0x8CA9, 0x8EB2, 0x8BBA, 0x8EEF, 0x8A51, 0x8D18, 0x8B21, 0x8CE3, 0x8B21, 0x8CE3, 0xFFFF, 0x7576, 0x8CEB, 0x7648, 0x8D20, 0x74E0, 0x8EF8, 0x73F2, 0x8EBB, 0xFFFF, 0x87CD, 0x8DA1, 0x88DC, 0x8F8B, 0x87E0, 0x8FB5, 0x86F0, 0x8DC6, 0x87CD, 0x8DA1, 0x87CD, 0x8DA1, 0xFFFF, 0x78CC, 0x8DA8, 0x79A8, 0x8DCB, 0x78BC, 0x8FBB, 0x77C0, 0x8F92, 0xFFFF, 0x8450, 0x8E19, 0x84E2, 0x9014, 0x83E0, 0x9029, 0x836C, 0x8E2C, 0x8450, 0x8E19, 0x8450, 0x8E19, 0xFFFF, 0x7C48, 0x8E1C, 0x7D2B, 0x8E2E, 0x7CBD, 0x902C, 0x7BBB, 0x9017, 0xFFFF, 0x80BE, 0x8E49, 0x80D1, 0x904A, 0x7FCC, 0x904A, 0x7FD9, 0x8E49, 0x80BE, 0x8E49, 0xFFFF, 0x8276, 0x75D6, 0x83AF, 0x75FE, 0x8436, 0x7628, 0x84AE, 0x7661, 0x8542, 0x7706, 0x8512, 0x77BA, 0x8457, 0x7845, 0x8335, 0x788B, 0x8318, 0x7882, 0x82D8, 0x7860, 0x831E, 0x7830, 0x8353, 0x7823, 0x83E6, 0x77F9, 0x8464, 0x7790, 0x847A, 0x771A, 0x8415, 0x76B7, 0x83B6, 0x7691, 0x8351, 0x7676, 0x827F, 0x7662, 0x81BB, 0x7687, 0x8161, 0x76AF, 0x8123, 0x76DA, 0x80E5, 0x771A, 0x80C5, 0x774D, 0x80B8, 0x77C1, 0x80D1, 0x77EE, 0x8107, 0x7814, 0x81CC, 0x786B, 0x837F, 0x7918, 0x8464, 0x7983, 0x84C0, 0x79B2, 0x852D, 0x79FD, 0x859D, 0x7ABC, 0x858E, 0x7B79, 0x8545, 0x7C25, 0x84D9, 0x7CC5, 0x8469, 0x7D4D, 0x843B, 0x7DCD, 0x8555, 0x7DA8, 0x85D3, 0x7D67, 0x870D, 0x7CA0, 0x87E0, 0x7BC0, 0x880D, 0x7B5B, 0x886D, 0x7A46, 0x88B3, 0x799B, 0x88CC, 0x7970, 0x893A, 0x78EA, 0x8995, 0x78A8, 0x8A01, 0x786F, 0x8AF8, 0x781F, 0x8BA6, 0x77FD, 0x8C0C, 0x77EF, 0x8C96, 0x77FB, 0x8D1D, 0x7815, 0x8D59, 0x7826, 0x8E40, 0x7889, 0x8EDB, 0x7925, 0x8EFC, 0x797B, 0x8EFF, 0x79D4, 0x8E71, 0x7A7B, 0x8D58, 0x7AD2, 0x8C23, 0x7ADE, 0x8AFF, 0x7A97, 0x8AF5, 0x7A81, 0x8AEF, 0x7A4E, 0x8B68, 0x7A52, 0x8B96, 0x7A5F, 0x8C39, 0x7A87, 0x8D33, 0x7A7F, 0x8E07, 0x7A3F, 0x8E66, 0x79CB, 0x8E63, 0x7985, 0x8E43, 0x793F, 0x8DC6, 0x78C6, 0x8CFA, 0x7876, 0x8C7E, 0x785F, 0x8C18, 0x7857, 0x8B84, 0x7874, 0x8B22, 0x788F, 0x8A7D, 0x78CA, 0x8A2E, 0x78F9, 0x89F0, 0x7930, 0x89A3, 0x79A5, 0x8979, 0x7AC0, 0x897C, 0x7B9C, 0x8972, 0x7BF2, 0x88CC, 0x7D32, 0x87B7, 0x7E4C, 0x8665, 0x7F52, 0x8660, 0x7F5A, 0x878F, 0x7F01, 0x88AE, 0x7EC2, 0x89FD, 0x7E9E, 0x8B8D, 0x7EC6, 0x8C40, 0x7F0E, 0x8CB6, 0x7F68, 0x8D1D, 0x7FD7, 0x8DFA, 0x80BD, 0x8EA8, 0x816E, 0x8F34, 0x81D4, 0x8F8A, 0x81F9, 0x8FDA, 0x820A, 0x90AB, 0x820F, 0x9120, 0x81FF, 0x91A5, 0x81DC, 0x91F4, 0x81B8, 0x922C, 0x8198, 0x9288, 0x812B, 0x927D, 0x80AB, 0x9252, 0x8068, 0x921C, 0x8033, 0x9174, 0x7FEB, 0x9099, 0x7FEB, 0x8FCF, 0x8029, 0x8F5D, 0x808D, 0x8F47, 0x80A4, 0x8ED4, 0x80A4, 0x8EC5, 0x8070, 0x8F65, 0x7FE6, 0x906D, 0x7F92, 0x91A4, 0x7F90, 0x92A8, 0x7FF7, 0x92FC, 0x8043, 0x9331, 0x8090, 0x9349, 0x813D, 0x92D1, 0x81E3, 0x9264, 0x8227, 0x91E5, 0x825B, 0x915D, 0x8280, 0x90D3, 0x8296, 0x8FA0, 0x829A, 0x8F2C, 0x8286, 0x8EE7, 0x8273, 0x8E78, 0x824A, 0x8DA9, 0x81D4, 0x8CB9, 0x8127, 0x8B68, 0x802C, 0x8B22, 0x8001, 0x8AC3, 0x7FE7, 0x8A50, 0x7FF4, 0x88FD, 0x8068, 0x87A4, 0x811D, 0x879E, 0x812D, 0x8904, 0x81F1, 0x89D4, 0x8285, 0x8A7C, 0x8343, 0x8A94, 0x8431, 0x8A4E, 0x84A1, 0x89E8, 0x850E, 0x892F, 0x85E5, 0x88B0, 0x86E5, 0x88C0, 0x8757, 0x88F2, 0x878D, 0x8927, 0x87AD, 0x8ABF, 0x8821, 0x8B0E, 0x881E, 0x8B70, 0x8811, 0x8C1B, 0x87D6, 0x8C9B, 0x8776, 0x8CC4, 0x873D, 0x8CD3, 0x8705, 0x8CA2, 0x86A3, 0x8C06, 0x8662, 0x8B39, 0x864F, 0x8A77, 0x8662, 0x89F9, 0x864D, 0x8A10, 0x8606, 0x8A66, 0x85F7, 0x8B35, 0x85DC, 0x8C50, 0x85FD, 0x8D3C, 0x8663, 0x8D94, 0x870A, 0x8D7D, 0x875F, 0x8D3A, 0x87B8, 0x8CB1, 0x882D, 0x8BC1, 0x888C, 0x8B30, 0x88A7, 0x8A8D, 0x88AE, 0x89EE, 0x8898, 0x896E, 0x887E, 0x8869, 0x882D, 0x87EE, 0x87EA, 0x87A4, 0x87A8, 0x878E, 0x8785, 0x874D, 0x86E3, 0x875D, 0x8637, 0x87FD, 0x8466, 0x8705, 0x835A, 0x86B8, 0x8359, 0x84A4, 0x8358, 0x7F20, 0x851B, 0x7F13, 0x864D, 0x8016, 0x86F9, 0x818E, 0x87D8, 0x823B, 0x8869, 0x8272, 0x88C9, 0x8276, 0x8915, 0x8266, 0x893D, 0x81FB, 0x89D8, 0x8197, 0x8A21, 0x8119, 0x8A62, 0x80A7, 0x8A8A, 0x8016, 0x8AAA, 0x7EDC, 0x8AAE, 0x7DC5, 0x8A63, 0x7D55, 0x8A29, 0x7CFA, 0x89E5, 0x7CAD, 0x8939, 0x7D1B, 0x8895, 0x7E00, 0x8825, 0x7F27, 0x8800, 0x7F66, 0x880F, 0x7F69, 0x8850, 0x7E49, 0x8873, 0x7D9A, 0x88C9, 0x7D4F, 0x893E, 0x7D8B, 0x89B2, 0x7DD8, 0x89E6, 0x7E36, 0x8A10, 0x7F02, 0x8A40, 0x7FDB, 0x8A34, 0x8046, 0x8A16, 0x8091, 0x89F5, 0x80A5, 0x89EB, 0x80FE, 0x89AB, 0x8126, 0x8981, 0x8159, 0x8918, 0x814F, 0x88E6, 0x8128, 0x88B8, 0x8094, 0x8856, 0x7EFC, 0x8796, 0x7D74, 0x86E7, 0x7D3D, 0x86C5, 0x7CD8, 0x8674, 0x7C98, 0x8605, 0x7CA0, 0x8536, 0x7D7C, 0x83E6, 0x7E07, 0x8357, 0x7DED, 0x835B, 0x79CC, 0x843E, 0x7962, 0x8448, 0x77CB, 0x8450, 0x76F3, 0x8438, 0x763E, 0x841E, 0x7502, 0x83FE, 0x746C, 0x83FD, 0x73E4, 0x840A, 0x72CE, 0x8444, 0x729B, 0x8457, 0x71E6, 0x84B7, 0x71B5, 0x84EB, 0x719B, 0x853B, 0x719B, 0x8558, 0x71D4, 0x85E0, 0x72B0, 0x8642, 0x73D4, 0x8661, 0x74B3, 0x8616, 0x74AD, 0x84D7, 0x74B2, 0x84B3, 0x74B5, 0x849B, 0x751E, 0x8496, 0x753B, 0x84B8, 0x75C5, 0x856E, 0x756D, 0x865A, 0x74D0, 0x86B8, 0x73FA, 0x86EA, 0x7250, 0x86CF, 0x70E7, 0x863F, 0x707E, 0x85C8, 0x705F, 0x8549, 0x7075, 0x84CC, 0x70AC, 0x8475, 0x70CD, 0x8452, 0x71FF, 0x839C, 0x7287, 0x8376, 0x736A, 0x833A, 0x7443, 0x8319, 0x751E, 0x8311, 0x76AC, 0x8327, 0x77C4, 0x8341, 0x7810, 0x8340, 0x799F, 0x8313, 0x7A2A, 0x82EA, 0x7B24, 0x8281, 0x7BE4, 0x820C, 0x7BEC, 0x81B1, 0x7A5E, 0x81C8, 0x7809, 0x81ED, 0x7751, 0x81F8, 0x7664, 0x81EF, 0x7571, 0x81B4, 0x74BB, 0x8141, 0x7483, 0x80F9, 0x7408, 0x802F, 0x73D9, 0x7FEB, 0x7359, 0x7F50, 0x72A0, 0x7EC4, 0x719E, 0x7E89, 0x7074, 0x7EA8, 0x7015, 0x7ECC, 0x6FD0, 0x7EF8, 0x6FA3, 0x7F19, 0x6F6B, 0x7FBB, 0x6F93, 0x8017, 0x6FA7, 0x8032, 0x6FD7, 0x805A, 0x70DF, 0x8092, 0x7205, 0x805A, 0x729E, 0x7FCB, 0x72B3, 0x7FBC, 0x7309, 0x7FA6, 0x733B, 0x7FDE, 0x72F9, 0x804B, 0x726D, 0x80A7, 0x70E6, 0x80FB, 0x700D, 0x80EC, 0x6F48, 0x80A8, 0x6EFC, 0x8073, 0x6EC1, 0x8026, 0x6E93, 0x7FCC, 0x6ED4, 0x7ED8, 0x6F54, 0x7E72, 0x6FCB, 0x7E3A, 0x700B, 0x7E25, 0x71AB, 0x7DED, 0x7356, 0x7E3E, 0x7472, 0x7EF4, 0x7536, 0x7FBD, 0x75DA, 0x8075, 0x7628, 0x80B6, 0x767B, 0x80D8, 0x76D9, 0x80EF, 0x7755, 0x80FC, 0x7881, 0x80D5, 0x7931, 0x8093, 0x7A00, 0x801E, 0x799B, 0x7D9B, 0x789A, 0x7CD8, 0x77C0, 0x7BE5, 0x7783, 0x7B55, 0x7787, 0x7AB9, 0x77AE, 0x7A67, 0x77E6, 0x7A1D, 0x781E, 0x79CD, 0x785E, 0x7909, 0x7853, 0x78C0, 0x7823, 0x788B, 0x7808, 0x7875, 0x7649, 0x77E8, 0x74B6, 0x7869, 0x7488, 0x78B3, 0x7472, 0x7901, 0x74D2, 0x796F, 0x75D8, 0x799A, 0x76EE, 0x7971, 0x774A, 0x797A, 0x7751, 0x79B4, 0x76A0, 0x79F0, 0x75E4, 0x7A0A, 0x7454, 0x79E1, 0x73AF, 0x7986, 0x7369, 0x7909, 0x7374, 0x7891, 0x739D, 0x783C, 0x73B6, 0x781E, 0x74B7, 0x7768, 0x765D, 0x772C, 0x77ED, 0x7769, 0x7932, 0x77FC, 0x7979, 0x7836, 0x79B8, 0x787B, 0x79DF, 0x7912, 0x7998, 0x7A14, 0x7967, 0x7AB4, 0x796A, 0x7AD8, 0x79C5, 0x7B60, 0x7A9D, 0x7BE9, 0x7B72, 0x7C47, 0x7EBA, 0x7BD6, 0x8206, 0x7CA8, 0x82FA, 0x7C2E, 0x8391, 0x7BB4, 0x83F6, 0x7B40, 0x8413, 0x7AD0, 0x83DD, 0x7A71, 0x838A, 0x7A39, 0x8296, 0x79B7, 0x80F3, 0x78FA, 0x8016, 0x788A, 0x7FB4, 0x7833, 0x7F8D, 0x77DF, 0x7F92, 0x77A9, 0x7FB3, 0x7718, 0x7FF6, 0x76C2, 0x8036, 0x768A, 0x8097, 0x764A, 0x80DF, 0x762A, 0x813C, 0x7605, 0x8275, 0x75D5}; - -#define LOGO_BACKGROUND 0xDEEA5C - -#define LOGO_PAINT_PATHS \ - LOGO_PAINT_PATH(0xC1D82F, logo_green) \ - LOGO_PAINT_PATH(0x000000, logo_black) \ - LOGO_PAINT_PATH(0x000000, logo_type) \ - LOGO_PAINT_PATH(0x000000, logo_mark) \ - LOGO_PAINT_PATH(0xFFFFFF, logo_white) From 0829a511f03d75121f2a8aa557fc0b45f5f2069c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Feb 2024 18:09:36 -0600 Subject: [PATCH 28/39] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20"stat?= =?UTF-8?q?ic=5Fwarning"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Warnings.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index c2c0e63a5240..f889ce38e05c 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -31,6 +31,24 @@ // Warnings! Located here so they will appear just once in the build output. // +// static_warning works like a static_assert but only emits a (messy) warning. +#ifdef __GNUC__ + namespace mfwarn { + struct true_type {}; + struct false_type {}; + template struct converter : public true_type {}; + template <> struct converter<0> : public false_type {}; + } + #define static_warning(cond, msg) \ + struct CAT(static_warning, __LINE__) { \ + void _(::mfwarn::false_type const&) __attribute__((deprecated(msg))) {}; \ + void _(::mfwarn::true_type const&) {}; \ + CAT(static_warning, __LINE__)() {_(::mfwarn::converter<(cond)>());} \ + } +#else + #define static_warning(...) +#endif + #if ENABLED(MARLIN_DEV_MODE) #warning "WARNING! Disable MARLIN_DEV_MODE for the final build!" #ifdef __LONG_MAX__ From 371fb5a256d968712d6180bf6faf9090c75246e4 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Thu, 8 Feb 2024 00:20:32 +0000 Subject: [PATCH 29/39] [cron] Bump distribution date (2024-02-08) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index adb949adcc07..2bb3aaab0753 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-07" +//#define STRING_DISTRIBUTION_DATE "2024-02-08" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f5fee4f67e10..355a77709d14 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-07" + #define STRING_DISTRIBUTION_DATE "2024-02-08" #endif /** From 4aa48beb378fec6a6e7de0c8c3c7fe47f6551c24 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Feb 2024 18:25:13 -0600 Subject: [PATCH 30/39] =?UTF-8?q?=F0=9F=9A=B8=20Adjust=20encoder=20multipl?= =?UTF-8?q?ier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/common/encoder.cpp | 14 +++--- Marlin/src/lcd/marlinui.cpp | 63 +++++++++++--------------- Marlin/src/lcd/marlinui.h | 16 +++---- Marlin/src/lcd/menu/menu.cpp | 2 +- Marlin/src/lcd/menu/menu_item.h | 2 +- Marlin/src/lcd/menu/menu_mixer.cpp | 2 +- 6 files changed, 43 insertions(+), 56 deletions(-) diff --git a/Marlin/src/lcd/e3v2/common/encoder.cpp b/Marlin/src/lcd/e3v2/common/encoder.cpp index cb14596849a5..c406cc47d922 100644 --- a/Marlin/src/lcd/e3v2/common/encoder.cpp +++ b/Marlin/src/lcd/e3v2/common/encoder.cpp @@ -127,7 +127,7 @@ EncoderState encoderReceiveAnalyze() { #if ENABLED(ENCODER_RATE_MULTIPLIER) millis_t ms = millis(); - int32_t encoderMultiplier = 1; + int32_t encoder_multiplier = 1; // if must encoder rati multiplier if (encoderRate.enabled) { @@ -137,10 +137,10 @@ EncoderState encoderReceiveAnalyze() { // Note that the rate is always calculated between two passes through the // loop and that the abs of the temp_diff value is tracked. const float encoderStepRate = encoderMovementSteps / float(ms - encoderRate.lastEncoderTime) * 1000; - if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100; - else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10; + if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoder_multiplier = 100; + else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoder_multiplier = 10; #if ENCODER_5X_STEPS_PER_SEC - else if (encoderStepRate >= ENCODER_5X_STEPS_PER_SEC) encoderMultiplier = 5; + else if (encoderStepRate >= ENCODER_5X_STEPS_PER_SEC) encoder_multiplier = 5; #endif } encoderRate.lastEncoderTime = ms; @@ -148,12 +148,12 @@ EncoderState encoderReceiveAnalyze() { #else - constexpr int32_t encoderMultiplier = 1; + constexpr int32_t encoder_multiplier = 1; #endif - // encoderRate.encoderMoveValue += (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP); - encoderRate.encoderMoveValue = (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP); + // encoderRate.encoderMoveValue += (temp_diff * encoder_multiplier) / (ENCODER_PULSES_PER_STEP); + encoderRate.encoderMoveValue = (temp_diff * encoder_multiplier) / (ENCODER_PULSES_PER_STEP); if (encoderRate.encoderMoveValue < 0) encoderRate.encoderMoveValue = -encoderRate.encoderMoveValue; temp_diff = 0; diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 313131d87aba..9a8152ba9909 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -398,12 +398,7 @@ void MarlinUI::init() { bool MarlinUI::screen_changed; #if ENABLED(ENCODER_RATE_MULTIPLIER) - bool MarlinUI::encoderRateMultiplierEnabled; - millis_t MarlinUI::lastEncoderMovementMillis = 0; - void MarlinUI::enable_encoder_multiplier(const bool onoff) { - encoderRateMultiplierEnabled = onoff; - lastEncoderMovementMillis = 0; - } + bool MarlinUI::encoder_multiplier_enabled; #endif #if ANY(REVERSE_MENU_DIRECTION, REVERSE_SELECT_DIRECTION) @@ -614,8 +609,6 @@ void MarlinUI::init() { void MarlinUI::status_screen() { - TERN_(HAS_MARLINUI_MENU, ENCODER_RATE_MULTIPLY(false)); - #if BASIC_PROGRESS_BAR // @@ -1053,41 +1046,37 @@ void MarlinUI::init() { #if ALL(HAS_MARLINUI_MENU, ENCODER_RATE_MULTIPLIER) - int32_t encoderMultiplier = 1; - - if (encoderRateMultiplierEnabled) { - const float encoderMovementSteps = float(abs_diff) / epps; - - if (lastEncoderMovementMillis) { - // Note that the rate is always calculated between two passes through the - // loop and that the abs of the encoderDiff value is tracked. - const float encoderStepRate = encoderMovementSteps / float(ms - lastEncoderMovementMillis) * 1000; - - if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100; - else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10; - - // Enable to output the encoder steps per second value - //#define ENCODER_RATE_MULTIPLIER_DEBUG - #if ENABLED(ENCODER_RATE_MULTIPLIER_DEBUG) - SERIAL_ECHO_START(); - SERIAL_ECHOPGM("Enc Step Rate: ", encoderStepRate); - SERIAL_ECHOPGM(" Multiplier: ", encoderMultiplier); - SERIAL_ECHOPGM(" ENCODER_10X_STEPS_PER_SEC: ", ENCODER_10X_STEPS_PER_SEC); - SERIAL_ECHOPGM(" ENCODER_100X_STEPS_PER_SEC: ", ENCODER_100X_STEPS_PER_SEC); - SERIAL_EOL(); - #endif - } - - lastEncoderMovementMillis = ms; - } // encoderRateMultiplierEnabled + int32_t encoder_multiplier = 1; + + if (encoder_multiplier_enabled) { + // Note that the rate is always calculated between two passes through the + // loop and that the abs of the encoderDiff value is tracked. + static millis_t encoder_mult_prev_ms = 0; + const float encoderStepRate = ((float(abs_diff) / float(epps)) * 1000.0f) / float(ms - encoder_mult_prev_ms); + encoder_mult_prev_ms = ms; + + if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoder_multiplier = 100; + else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoder_multiplier = 10; + + // Enable to output the encoder steps per second value + //#define ENCODER_RATE_MULTIPLIER_DEBUG + #if ENABLED(ENCODER_RATE_MULTIPLIER_DEBUG) + SERIAL_ECHO_START(); + SERIAL_ECHOPGM("Enc Step Rate: ", encoderStepRate); + SERIAL_ECHOPGM(" Multiplier: ", encoder_multiplier); + SERIAL_ECHOPGM(" ENCODER_10X_STEPS_PER_SEC: ", ENCODER_10X_STEPS_PER_SEC); + SERIAL_ECHOPGM(" ENCODER_100X_STEPS_PER_SEC: ", ENCODER_100X_STEPS_PER_SEC); + SERIAL_EOL(); + #endif + } #else - constexpr int32_t encoderMultiplier = 1; + constexpr int32_t encoder_multiplier = 1; #endif // ENCODER_RATE_MULTIPLIER - if (can_encode()) encoderPosition += (encoderDiff * encoderMultiplier) / epps; + if (can_encode()) encoderPosition += (encoderDiff * encoder_multiplier) / epps; encoderDiff = 0; } diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 04f4aea24ff7..ff87852f119b 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -658,6 +658,13 @@ class MarlinUI { TERN(HAS_SCREEN_TIMEOUT, return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS, UNUSED(ms)); } + #if ALL(HAS_MARLINUI_MENU, ENCODER_RATE_MULTIPLIER) + static bool encoder_multiplier_enabled; + static void enable_encoder_multiplier(const bool onoff) { encoder_multiplier_enabled = onoff; } + #else + static void enable_encoder_multiplier(const bool) {} + #endif + #if HAS_MARLINUI_MENU #if HAS_TOUCH_BUTTONS @@ -667,15 +674,6 @@ class MarlinUI { static constexpr uint8_t touch_buttons = 0; #endif - #if ENABLED(ENCODER_RATE_MULTIPLIER) - static bool encoderRateMultiplierEnabled; - static millis_t lastEncoderMovementMillis; - static void enable_encoder_multiplier(const bool onoff); - #define ENCODER_RATE_MULTIPLY(F) (ui.encoderRateMultiplierEnabled = F) - #else - #define ENCODER_RATE_MULTIPLY(F) NOOP - #endif - // Manual Movement static ManualMove manual_move; static bool can_show_slider() { return !external_control && currentScreen != manual_move.screen_ptr; } diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index e98c9b48c04a..892af5dbabd8 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -222,6 +222,7 @@ void MarlinUI::goto_screen(screenFunc_t screen, const uint16_t encoder/*=0*/, co TERN_(HAS_MARLINUI_U8GLIB, drawing_screen = false); TERN_(HAS_MARLINUI_MENU, encoder_direction_normal()); + enable_encoder_multiplier(false); set_selection(false); } @@ -255,7 +256,6 @@ void MarlinUI::synchronize(FSTR_P const fmsg/*=nullptr*/) { */ void scroll_screen(const uint8_t limit, const bool is_menu) { ui.encoder_direction_menus(); - ENCODER_RATE_MULTIPLY(false); if (int32_t(ui.encoderPosition) < 0) ui.encoderPosition = 0; if (ui.first_page) { encoderLine = ui.encoderPosition / (ENCODER_STEPS_PER_MENU_ITEM); diff --git a/Marlin/src/lcd/menu/menu_item.h b/Marlin/src/lcd/menu/menu_item.h index 823d2a4a25e7..47cd7d5cf3a5 100644 --- a/Marlin/src/lcd/menu/menu_item.h +++ b/Marlin/src/lcd/menu/menu_item.h @@ -287,8 +287,8 @@ class MenuItem_bool : public MenuEditItemBase { #define _MENU_INNER_F(TYPE, USE_MULTIPLIER, FLABEL, V...) do { \ FSTR_P const flabel = FLABEL; \ if (CLICKED()) { \ - _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER); \ MenuItem_##TYPE::action(flabel, ##V); \ + _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER); \ if (ui.screen_changed) return; \ } \ if (ui.should_draw()) \ diff --git a/Marlin/src/lcd/menu/menu_mixer.cpp b/Marlin/src/lcd/menu/menu_mixer.cpp index 21c18c820989..917164c0dba3 100644 --- a/Marlin/src/lcd/menu/menu_mixer.cpp +++ b/Marlin/src/lcd/menu/menu_mixer.cpp @@ -43,7 +43,7 @@ void _lcd_mixer_gradient_z_edit(const bool isend) { ui.defer_status_screen(); - ENCODER_RATE_MULTIPLY(true); + ui.enable_encoder_multiplier(true); float &zvar = isend ? mixer.gradient.end_z : mixer.gradient.start_z; From 669814d0d408a622f020a55971ba04030e4fa4bf Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Feb 2024 23:40:54 -0600 Subject: [PATCH 31/39] =?UTF-8?q?=E2=9C=A8=20MARLIN=5FSMALL=5FBUILD=20opti?= =?UTF-8?q?on=20(#26775)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 3 +++ Marlin/src/feature/fwretract.cpp | 6 +++++ Marlin/src/gcode/bedlevel/G26.cpp | 24 +++++++++---------- Marlin/src/gcode/bedlevel/G35.cpp | 2 +- Marlin/src/gcode/bedlevel/M420.cpp | 9 +++---- Marlin/src/gcode/bedlevel/abl/G29.cpp | 8 +++---- Marlin/src/gcode/calibrate/G33.cpp | 8 +++---- Marlin/src/gcode/calibrate/G34_M422.cpp | 16 +++++++------ Marlin/src/gcode/calibrate/M425.cpp | 2 ++ Marlin/src/gcode/calibrate/M48.cpp | 8 +++---- Marlin/src/gcode/calibrate/M665.cpp | 9 ++++++- Marlin/src/gcode/calibrate/M666.cpp | 6 ++++- Marlin/src/gcode/calibrate/M852.cpp | 2 ++ Marlin/src/gcode/config/M200-M205.cpp | 12 +++++++++- Marlin/src/gcode/config/M217.cpp | 2 ++ Marlin/src/gcode/config/M218.cpp | 2 ++ Marlin/src/gcode/config/M281.cpp | 2 ++ Marlin/src/gcode/config/M301.cpp | 2 ++ Marlin/src/gcode/config/M304.cpp | 2 ++ Marlin/src/gcode/config/M309.cpp | 2 ++ Marlin/src/gcode/config/M92.cpp | 2 ++ Marlin/src/gcode/control/M211.cpp | 2 ++ Marlin/src/gcode/control/M42.cpp | 4 ++-- Marlin/src/gcode/control/M85.cpp | 7 +++++- Marlin/src/gcode/feature/advance/M900.cpp | 2 ++ .../src/gcode/feature/controllerfan/M710.cpp | 2 ++ .../src/gcode/feature/digipot/M907-M910.cpp | 2 ++ Marlin/src/gcode/feature/ft_motion/M493.cpp | 2 ++ .../src/gcode/feature/fwretract/M207-M209.cpp | 6 +++++ .../src/gcode/feature/input_shaping/M593.cpp | 4 +++- .../src/gcode/feature/network/M552-M554.cpp | 3 +++ Marlin/src/gcode/feature/nonlinear/M592.cpp | 1 + Marlin/src/gcode/feature/pause/M603.cpp | 2 ++ Marlin/src/gcode/feature/powerloss/M413.cpp | 2 ++ Marlin/src/gcode/feature/runout/M412.cpp | 2 ++ Marlin/src/gcode/feature/trinamic/M569.cpp | 2 ++ Marlin/src/gcode/feature/trinamic/M906.cpp | 2 ++ .../src/gcode/feature/trinamic/M911-M914.cpp | 4 ++++ Marlin/src/gcode/feature/trinamic/M919.cpp | 8 +++---- Marlin/src/gcode/gcode.h | 6 +++++ Marlin/src/gcode/geometry/M206_M428.cpp | 2 ++ Marlin/src/gcode/lcd/M145.cpp | 2 ++ Marlin/src/gcode/lcd/M250.cpp | 1 + Marlin/src/gcode/lcd/M255.cpp | 1 + Marlin/src/gcode/lcd/M256.cpp | 1 + Marlin/src/gcode/lcd/M414.cpp | 1 + Marlin/src/gcode/probe/M423.cpp | 6 +++-- Marlin/src/gcode/probe/M851.cpp | 12 ++++++---- Marlin/src/gcode/temp/M306.cpp | 2 ++ Marlin/src/gcode/temp/M86-M87.cpp | 2 ++ Marlin/src/gcode/units/M149.cpp | 2 ++ Marlin/src/inc/Conditionals_adv.h | 6 +++++ Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/module/temperature.cpp | 2 ++ 54 files changed, 179 insertions(+), 55 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 558fd70a9e8d..df532ae6f310 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -4527,3 +4527,6 @@ // Report uncleaned reset reason from register r2 instead of MCUSR. Supported by Optiboot on AVR. //#define OPTIBOOT_RESET_REASON + +// Shrink the build for smaller boards by sacrificing some serial feedback +//#define MARLIN_SMALL_BUILD diff --git a/Marlin/src/feature/fwretract.cpp b/Marlin/src/feature/fwretract.cpp index 8f2edad158dd..aee775bffff4 100644 --- a/Marlin/src/feature/fwretract.cpp +++ b/Marlin/src/feature/fwretract.cpp @@ -212,6 +212,8 @@ void FWRetract::M207() { } void FWRetract::M207_report() { + TERN_(MARLIN_SMALL_BUILD, return); + SERIAL_ECHOLNPGM_P( PSTR(" M207 S"), LINEAR_UNIT(settings.retract_length) , PSTR(" W"), LINEAR_UNIT(settings.swap_retract_length) @@ -237,6 +239,8 @@ void FWRetract::M208() { } void FWRetract::M208_report() { + TERN_(MARLIN_SMALL_BUILD, return); + SERIAL_ECHOLNPGM( " M208 S", LINEAR_UNIT(settings.retract_recover_extra) , " W", LINEAR_UNIT(settings.swap_retract_recover_extra) @@ -258,6 +262,8 @@ void FWRetract::M208_report() { } void FWRetract::M209_report() { + TERN_(MARLIN_SMALL_BUILD, return); + SERIAL_ECHOLNPGM(" M209 S", AS_DIGIT(autoretract_enabled)); } diff --git a/Marlin/src/gcode/bedlevel/G26.cpp b/Marlin/src/gcode/bedlevel/G26.cpp index 7fae11783e9d..ab940c65acdc 100644 --- a/Marlin/src/gcode/bedlevel/G26.cpp +++ b/Marlin/src/gcode/bedlevel/G26.cpp @@ -532,7 +532,7 @@ void GcodeSuite::G26() { if (bedtemp) { if (!WITHIN(bedtemp, 40, BED_MAX_TARGET)) { - SERIAL_ECHOLNPGM("?Specified bed temperature not plausible (40-", BED_MAX_TARGET, "C)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified bed temperature not plausible (40-", BED_MAX_TARGET, "C).")); return; } g26.bed_temp = bedtemp; @@ -543,7 +543,7 @@ void GcodeSuite::G26() { if (parser.seenval('L')) { g26.layer_height = parser.value_linear_units(); if (!WITHIN(g26.layer_height, 0.0, 2.0)) { - SERIAL_ECHOLNPGM("?Specified layer height not plausible."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified layer height not plausible.")); return; } } @@ -552,12 +552,12 @@ void GcodeSuite::G26() { if (parser.has_value()) { g26.retraction_multiplier = parser.value_float(); if (!WITHIN(g26.retraction_multiplier, 0.05, 15.0)) { - SERIAL_ECHOLNPGM("?Specified Retraction Multiplier not plausible."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified Retraction Multiplier not plausible.")); return; } } else { - SERIAL_ECHOLNPGM("?Retraction Multiplier must be specified."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Retraction Multiplier must be specified.")); return; } } @@ -565,7 +565,7 @@ void GcodeSuite::G26() { if (parser.seenval('S')) { g26.nozzle = parser.value_float(); if (!WITHIN(g26.nozzle, 0.1, 2.0)) { - SERIAL_ECHOLNPGM("?Specified nozzle size not plausible."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified nozzle size not plausible.")); return; } } @@ -575,7 +575,7 @@ void GcodeSuite::G26() { #if HAS_MARLINUI_MENU g26.prime_flag = -1; #else - SERIAL_ECHOLNPGM("?Prime length must be specified when not using an LCD."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Prime length must be specified when not using an LCD.")); return; #endif } @@ -583,7 +583,7 @@ void GcodeSuite::G26() { g26.prime_flag++; g26.prime_length = parser.value_linear_units(); if (!WITHIN(g26.prime_length, 0.0, 25.0)) { - SERIAL_ECHOLNPGM("?Specified prime length not plausible."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified prime length not plausible.")); return; } } @@ -592,7 +592,7 @@ void GcodeSuite::G26() { if (parser.seenval('F')) { g26.filament_diameter = parser.value_linear_units(); if (!WITHIN(g26.filament_diameter, 1.0, 4.0)) { - SERIAL_ECHOLNPGM("?Specified filament size not plausible."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified filament size not plausible.")); return; } } @@ -616,7 +616,7 @@ void GcodeSuite::G26() { // If any preset or temperature was specified if (noztemp) { if (!WITHIN(noztemp, 165, thermalManager.hotend_max_target(active_extruder))) { - SERIAL_ECHOLNPGM("?Specified nozzle temperature not plausible."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified nozzle temperature not plausible.")); return; } g26.hotend_temp = noztemp; @@ -637,12 +637,12 @@ void GcodeSuite::G26() { if (parser.seen('R')) g26_repeats = parser.has_value() ? parser.value_int() : GRID_MAX_POINTS + 1; else { - SERIAL_ECHOLNPGM("?(R)epeat must be specified when not using an LCD."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(R)epeat must be specified when not using an LCD.")); return; } #endif if (g26_repeats < 1) { - SERIAL_ECHOLNPGM("?(R)epeat value not plausible; must be at least 1."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(R)epeat value not plausible; must be at least 1.")); return; } @@ -650,7 +650,7 @@ void GcodeSuite::G26() { g26.xy_pos.set(parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : current_position.x, parser.seenval('Y') ? RAW_Y_POSITION(parser.value_linear_units()) : current_position.y); if (!position_is_reachable(g26.xy_pos)) { - SERIAL_ECHOLNPGM("?Specified X,Y coordinate out of bounds."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified X,Y coordinate out of bounds.")); return; } diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index 89a43ef08a9e..63a1491f9bb1 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -64,7 +64,7 @@ void GcodeSuite::G35() { const uint8_t screw_thread = parser.byteval('S', TRAMMING_SCREW_THREAD); if (!WITHIN(screw_thread, 30, 51) || screw_thread % 10 > 1) { - SERIAL_ECHOLNPGM("?(S)crew thread must be 30, 31, 40, 41, 50, or 51."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(S)crew thread must be 30, 31, 40, 41, 50, or 51.")); return; } diff --git a/Marlin/src/gcode/bedlevel/M420.cpp b/Marlin/src/gcode/bedlevel/M420.cpp index d870a4f4308a..c495da301850 100644 --- a/Marlin/src/gcode/bedlevel/M420.cpp +++ b/Marlin/src/gcode/bedlevel/M420.cpp @@ -105,13 +105,12 @@ void GcodeSuite::M420() { const int16_t a = settings.calc_num_meshes(); if (!a) { - SERIAL_ECHOLNPGM("?EEPROM storage not available."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("EEPROM storage not available.")); return; } if (!WITHIN(storage_slot, 0, a - 1)) { - SERIAL_ECHOLNPGM("?Invalid storage slot."); - SERIAL_ECHOLNPGM("?Use 0 to ", a - 1); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Invalid storage slot. Use 0 to ", a - 1)); return; } @@ -120,7 +119,7 @@ void GcodeSuite::M420() { #else - SERIAL_ECHOLNPGM("?EEPROM storage not available."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("EEPROM storage not available.")); return; #endif @@ -245,6 +244,8 @@ void GcodeSuite::M420() { } void GcodeSuite::M420_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F( TERN(MESH_BED_LEVELING, "Mesh Bed Leveling", TERN(AUTO_BED_LEVELING_UBL, "Unified Bed Leveling", "Auto Bed Leveling")) )); diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 1ca3826c816f..3126bee47f84 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -344,7 +344,7 @@ G29_TYPE GcodeSuite::G29() { abl.verbose_level = parser.intval('V'); if (!WITHIN(abl.verbose_level, 0, 4)) { - SERIAL_ECHOLNPGM("?(V)erbose level implausible (0-4)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(V)erbose level implausible (0-4).")); G29_RETURN(false, false); } @@ -365,11 +365,11 @@ G29_TYPE GcodeSuite::G29() { if (parser.seenval('P')) abl.grid_points.x = abl.grid_points.y = parser.value_int(); if (!WITHIN(abl.grid_points.x, 2, GRID_MAX_POINTS_X)) { - SERIAL_ECHOLNPGM("?Probe points (X) implausible (2-" STRINGIFY(GRID_MAX_POINTS_X) ")."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Probe points (X) implausible (2-" STRINGIFY(GRID_MAX_POINTS_X) ").")); G29_RETURN(false, false); } if (!WITHIN(abl.grid_points.y, 2, GRID_MAX_POINTS_Y)) { - SERIAL_ECHOLNPGM("?Probe points (Y) implausible (2-" STRINGIFY(GRID_MAX_POINTS_Y) ")."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Probe points (Y) implausible (2-" STRINGIFY(GRID_MAX_POINTS_Y) ").")); G29_RETURN(false, false); } @@ -404,7 +404,7 @@ G29_TYPE GcodeSuite::G29() { DEBUG_ECHOLNPGM("G29 L", abl.probe_position_lf.x, " R", abl.probe_position_rb.x, " F", abl.probe_position_lf.y, " B", abl.probe_position_rb.y); } - SERIAL_ECHOLNPGM("? (L,R,F,B) out of bounds."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG(" (L,R,F,B) out of bounds.")); G29_RETURN(false, false); } diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 223beb4ddffa..59e0db132a71 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -390,7 +390,7 @@ void GcodeSuite::G33() { const int8_t probe_points = parser.intval('P', DELTA_CALIBRATION_DEFAULT_POINTS); if (!WITHIN(probe_points, 0, 10)) { - SERIAL_ECHOLNPGM("?(P)oints implausible (0-10)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(P)oints implausible (0-10).")); return; } @@ -409,19 +409,19 @@ void GcodeSuite::G33() { const float calibration_precision = parser.floatval('C', 0.0f); if (calibration_precision < 0) { - SERIAL_ECHOLNPGM("?(C)alibration precision implausible (>=0)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(C)alibration precision implausible (>=0).")); return; } const int8_t force_iterations = parser.intval('F', 0); if (!WITHIN(force_iterations, 0, 30)) { - SERIAL_ECHOLNPGM("?(F)orce iteration implausible (0-30)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(F)orce iteration implausible (0-30).")); return; } const int8_t verbose_level = parser.byteval('V', 1); if (!WITHIN(verbose_level, 0, 3)) { - SERIAL_ECHOLNPGM("?(V)erbose level implausible (0-3)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(V)erbose level implausible (0-3).")); return; } diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index bbc403904f66..8b94dd53921b 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -110,19 +110,19 @@ void GcodeSuite::G34() { const int8_t z_auto_align_iterations = parser.intval('I', Z_STEPPER_ALIGN_ITERATIONS); if (!WITHIN(z_auto_align_iterations, 1, 30)) { - SERIAL_ECHOLNPGM("?(I)teration out of bounds (1-30)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(I)teration out of bounds (1-30).")); break; } const float z_auto_align_accuracy = parser.floatval('T', Z_STEPPER_ALIGN_ACC); if (!WITHIN(z_auto_align_accuracy, 0.01f, 1.0f)) { - SERIAL_ECHOLNPGM("?(T)arget accuracy out of bounds (0.01-1.0)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(T)arget accuracy out of bounds (0.01-1.0).")); break; } const float z_auto_align_amplification = TERN(HAS_Z_STEPPER_ALIGN_STEPPER_XY, Z_STEPPER_ALIGN_AMP, parser.floatval('A', Z_STEPPER_ALIGN_AMP)); if (!WITHIN(ABS(z_auto_align_amplification), 0.5f, 2.0f)) { - SERIAL_ECHOLNPGM("?(A)mplification out of bounds (0.5-2.0)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(A)mplification out of bounds (0.5-2.0).")); break; } @@ -450,7 +450,7 @@ void GcodeSuite::M422() { const bool is_probe_point = parser.seen_test('S'); if (TERN0(HAS_Z_STEPPER_ALIGN_STEPPER_XY, is_probe_point && parser.seen_test('W'))) { - SERIAL_ECHOLNPGM("?(S) and (W) may not be combined."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(S) and (W) may not be combined.")); return; } @@ -460,7 +460,7 @@ void GcodeSuite::M422() { ); if (!is_probe_point && TERN1(HAS_Z_STEPPER_ALIGN_STEPPER_XY, !parser.seen_test('W'))) { - SERIAL_ECHOLNPGM("?(S)" TERN_(HAS_Z_STEPPER_ALIGN_STEPPER_XY, " or (W)") " is required."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(S)" TERN_(HAS_Z_STEPPER_ALIGN_STEPPER_XY, " or (W)") " is required.")); return; } @@ -490,11 +490,11 @@ void GcodeSuite::M422() { if (is_probe_point) { if (!probe.can_reach(pos.x, Y_CENTER)) { - SERIAL_ECHOLNPGM("?(X) out of bounds."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(X) out of bounds.")); return; } if (!probe.can_reach(pos)) { - SERIAL_ECHOLNPGM("?(Y) out of bounds."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(Y) out of bounds.")); return; } } @@ -503,6 +503,8 @@ void GcodeSuite::M422() { } void GcodeSuite::M422_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_Z_AUTO_ALIGN)); for (uint8_t i = 0; i < NUM_Z_STEPPERS; ++i) { report_echo_start(forReplay); diff --git a/Marlin/src/gcode/calibrate/M425.cpp b/Marlin/src/gcode/calibrate/M425.cpp index cd206ca48927..22d71aba58e5 100644 --- a/Marlin/src/gcode/calibrate/M425.cpp +++ b/Marlin/src/gcode/calibrate/M425.cpp @@ -106,6 +106,8 @@ void GcodeSuite::M425() { } void GcodeSuite::M425_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_BACKLASH_COMPENSATION)); SERIAL_ECHOLNPGM_P( PSTR(" M425 F"), backlash.get_correction() diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp index e3b81ce5b8c0..8dd951e054b3 100644 --- a/Marlin/src/gcode/calibrate/M48.cpp +++ b/Marlin/src/gcode/calibrate/M48.cpp @@ -62,13 +62,13 @@ void GcodeSuite::M48() { const int8_t verbose_level = parser.byteval('V', 1); if (!WITHIN(verbose_level, 0, 4)) { - SERIAL_ECHOLNPGM("?(V)erbose level implausible (0-4)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(V)erbose level implausible (0-4).")); return; } const int8_t n_samples = parser.byteval('P', 10); if (!WITHIN(n_samples, 4, 50)) { - SERIAL_ECHOLNPGM("?Sample size not plausible (4-50)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Sample size not plausible (4-50).")); return; } @@ -82,7 +82,7 @@ void GcodeSuite::M48() { if (!probe.can_reach(test_position)) { LCD_MESSAGE_MAX(MSG_M48_OUT_OF_BOUNDS); - SERIAL_ECHOLNPGM("? (X,Y) out of bounds."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG(" (X,Y) out of bounds.")); return; } @@ -90,7 +90,7 @@ void GcodeSuite::M48() { bool seen_L = parser.seen('L'); uint8_t n_legs = seen_L ? parser.value_byte() : 0; if (n_legs > 15) { - SERIAL_ECHOLNPGM("?Legs of movement implausible (0-15)."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Legs of movement implausible (0-15).")); return; } if (n_legs == 1) n_legs = 2; diff --git a/Marlin/src/gcode/calibrate/M665.cpp b/Marlin/src/gcode/calibrate/M665.cpp index 22ad80425ac7..5409ff42324e 100644 --- a/Marlin/src/gcode/calibrate/M665.cpp +++ b/Marlin/src/gcode/calibrate/M665.cpp @@ -62,6 +62,8 @@ } void GcodeSuite::M665_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_DELTA_SETTINGS)); SERIAL_ECHOLNPGM_P( PSTR(" M665 L"), LINEAR_UNIT(delta_diagonal_rod) @@ -132,6 +134,8 @@ } void GcodeSuite::M665_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_SCARA_SETTINGS " (" STR_S_SEG_PER_SEC TERN_(HAS_SCARA_OFFSET, " " STR_SCARA_P_T_Z) ")")); SERIAL_ECHOLNPGM_P( PSTR(" M665 S"), segments_per_second @@ -170,6 +174,8 @@ } void GcodeSuite::M665_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_POLARGRAPH_SETTINGS)); SERIAL_ECHOLNPGM_P( PSTR(" M665 S"), LINEAR_UNIT(segments_per_second), @@ -196,10 +202,11 @@ } void GcodeSuite::M665_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); report_heading_etc(forReplay, F(STR_POLAR_SETTINGS)); SERIAL_ECHOLNPGM_P(PSTR(" M665 S"), segments_per_second); } -#endif +#endif // POLAR #endif // IS_KINEMATIC diff --git a/Marlin/src/gcode/calibrate/M666.cpp b/Marlin/src/gcode/calibrate/M666.cpp index 143b6f249a4e..418629015432 100644 --- a/Marlin/src/gcode/calibrate/M666.cpp +++ b/Marlin/src/gcode/calibrate/M666.cpp @@ -56,11 +56,13 @@ } } } - if (is_err) SERIAL_ECHOLNPGM("?M666 offsets must be <= 0"); + if (is_err) SERIAL_ECHOLNPGM(GCODE_ERR_MSG("M666 offsets must be <= 0")); if (!is_set) M666_report(); } void GcodeSuite::M666_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_ENDSTOP_ADJUSTMENT)); SERIAL_ECHOLNPGM_P( PSTR(" M666 X"), LINEAR_UNIT(delta_endstop_adj.a) @@ -105,6 +107,8 @@ } void GcodeSuite::M666_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_ENDSTOP_ADJUSTMENT)); SERIAL_ECHOPGM(" M666"); #if ENABLED(X_DUAL_ENDSTOPS) diff --git a/Marlin/src/gcode/calibrate/M852.cpp b/Marlin/src/gcode/calibrate/M852.cpp index 6d3c004548c6..001160ae72c2 100644 --- a/Marlin/src/gcode/calibrate/M852.cpp +++ b/Marlin/src/gcode/calibrate/M852.cpp @@ -92,6 +92,8 @@ void GcodeSuite::M852() { } void GcodeSuite::M852_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_SKEW_FACTOR)); SERIAL_ECHOPGM(" M852 I", p_float_t(planner.skew_factor.xy, 6)); #if ENABLED(SKEW_CORRECTION_FOR_Z) diff --git a/Marlin/src/gcode/config/M200-M205.cpp b/Marlin/src/gcode/config/M200-M205.cpp index 899f12099bbd..a0466fbeab63 100644 --- a/Marlin/src/gcode/config/M200-M205.cpp +++ b/Marlin/src/gcode/config/M200-M205.cpp @@ -67,7 +67,7 @@ if (WITHIN(lval, 0, VOLUMETRIC_EXTRUDER_LIMIT_MAX)) planner.set_volumetric_extruder_limit(target_extruder, lval); else - SERIAL_ECHOLNPGM("?L value out of range (0-" STRINGIFY(VOLUMETRIC_EXTRUDER_LIMIT_MAX) ")."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("L value out of range (0-" STRINGIFY(VOLUMETRIC_EXTRUDER_LIMIT_MAX) ").")); } #endif @@ -75,6 +75,8 @@ } void GcodeSuite::M200_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + if (!forReplay) { report_heading(forReplay, F(STR_FILAMENT_SETTINGS), false); if (!parser.volumetric_enabled) SERIAL_ECHOPGM(" (Disabled):"); @@ -142,6 +144,8 @@ void GcodeSuite::M201() { } void GcodeSuite::M201_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_MAX_ACCELERATION)); #if NUM_AXES SERIAL_ECHOPGM_P( @@ -198,6 +202,8 @@ void GcodeSuite::M203() { } void GcodeSuite::M203_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_MAX_FEEDRATES)); #if NUM_AXES SERIAL_ECHOPGM_P( @@ -255,6 +261,8 @@ void GcodeSuite::M204() { } void GcodeSuite::M204_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_ACCELERATION_P_R_T)); SERIAL_ECHOLNPGM_P( PSTR(" M204 P"), LINEAR_UNIT(planner.settings.acceleration) @@ -329,6 +337,8 @@ void GcodeSuite::M205() { } void GcodeSuite::M205_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F( "Advanced (" M205_MIN_SEG_TIME_STR " S T" TERN_(HAS_JUNCTION_DEVIATION, " J") diff --git a/Marlin/src/gcode/config/M217.cpp b/Marlin/src/gcode/config/M217.cpp index 59737d3b0438..df275c2d3193 100644 --- a/Marlin/src/gcode/config/M217.cpp +++ b/Marlin/src/gcode/config/M217.cpp @@ -164,6 +164,8 @@ void GcodeSuite::M217() { } void GcodeSuite::M217_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_TOOL_CHANGING)); SERIAL_ECHOPGM(" M217"); diff --git a/Marlin/src/gcode/config/M218.cpp b/Marlin/src/gcode/config/M218.cpp index ff63dcaf34e7..006f9a1d2c1b 100644 --- a/Marlin/src/gcode/config/M218.cpp +++ b/Marlin/src/gcode/config/M218.cpp @@ -63,6 +63,8 @@ void GcodeSuite::M218() { } void GcodeSuite::M218_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_HOTEND_OFFSETS)); for (uint8_t e = 1; e < HOTENDS; ++e) { report_echo_start(forReplay); diff --git a/Marlin/src/gcode/config/M281.cpp b/Marlin/src/gcode/config/M281.cpp index 038a5d615ada..24a179e54ee3 100644 --- a/Marlin/src/gcode/config/M281.cpp +++ b/Marlin/src/gcode/config/M281.cpp @@ -55,6 +55,8 @@ void GcodeSuite::M281() { } void GcodeSuite::M281_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_SERVO_ANGLES)); for (uint8_t i = 0; i < NUM_SERVOS; ++i) { switch (i) { diff --git a/Marlin/src/gcode/config/M301.cpp b/Marlin/src/gcode/config/M301.cpp index a3938acb1157..fe0eef772f38 100644 --- a/Marlin/src/gcode/config/M301.cpp +++ b/Marlin/src/gcode/config/M301.cpp @@ -78,6 +78,8 @@ void GcodeSuite::M301() { } void GcodeSuite::M301_report(const bool forReplay/*=true*/ E_OPTARG(const int8_t eindex/*=-1*/)) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_HOTEND_PID)); IF_DISABLED(HAS_MULTI_EXTRUDER, constexpr int8_t eindex = -1); HOTEND_LOOP() { diff --git a/Marlin/src/gcode/config/M304.cpp b/Marlin/src/gcode/config/M304.cpp index a71a34c6de42..8201730afd5a 100644 --- a/Marlin/src/gcode/config/M304.cpp +++ b/Marlin/src/gcode/config/M304.cpp @@ -42,6 +42,8 @@ void GcodeSuite::M304() { } void GcodeSuite::M304_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_BED_PID)); SERIAL_ECHOLNPGM(" M304" " P", thermalManager.temp_bed.pid.p() diff --git a/Marlin/src/gcode/config/M309.cpp b/Marlin/src/gcode/config/M309.cpp index 4953113041d7..033f5731edc6 100644 --- a/Marlin/src/gcode/config/M309.cpp +++ b/Marlin/src/gcode/config/M309.cpp @@ -42,6 +42,8 @@ void GcodeSuite::M309() { } void GcodeSuite::M309_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_CHAMBER_PID)); SERIAL_ECHOLNPGM(" M309" " P", thermalManager.temp_chamber.pid.p() diff --git a/Marlin/src/gcode/config/M92.cpp b/Marlin/src/gcode/config/M92.cpp index 2f33be63a1dc..2a5eb30f5516 100644 --- a/Marlin/src/gcode/config/M92.cpp +++ b/Marlin/src/gcode/config/M92.cpp @@ -96,6 +96,8 @@ void GcodeSuite::M92() { } void GcodeSuite::M92_report(const bool forReplay/*=true*/, const int8_t e/*=-1*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_STEPS_PER_UNIT)); #if NUM_AXES #define PRINT_EOL diff --git a/Marlin/src/gcode/control/M211.cpp b/Marlin/src/gcode/control/M211.cpp index 8e7d10ce65b9..471ca6c448de 100644 --- a/Marlin/src/gcode/control/M211.cpp +++ b/Marlin/src/gcode/control/M211.cpp @@ -40,6 +40,8 @@ void GcodeSuite::M211() { } void GcodeSuite::M211_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_SOFT_ENDSTOPS)); SERIAL_ECHOPGM(" M211 S", AS_DIGIT(soft_endstop._enabled), " ; "); serialprintln_onoff(soft_endstop._enabled); diff --git a/Marlin/src/gcode/control/M42.cpp b/Marlin/src/gcode/control/M42.cpp index 13965cb72c22..b995f208f57a 100644 --- a/Marlin/src/gcode/control/M42.cpp +++ b/Marlin/src/gcode/control/M42.cpp @@ -79,7 +79,7 @@ void GcodeSuite::M42() { #ifdef OUTPUT_OPEN_DRAIN case 5: pinMode(pin, OUTPUT_OPEN_DRAIN); break; #endif - default: SERIAL_ECHOLNPGM("Invalid Pin Mode"); return; + default: SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Invalid Pin Mode")); return; } } @@ -94,7 +94,7 @@ void GcodeSuite::M42() { #endif if (avoidWrite) { - SERIAL_ECHOLNPGM("?Cannot write to INPUT"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Cannot write to INPUT")); return; } diff --git a/Marlin/src/gcode/control/M85.cpp b/Marlin/src/gcode/control/M85.cpp index ee868349ed75..784631541367 100644 --- a/Marlin/src/gcode/control/M85.cpp +++ b/Marlin/src/gcode/control/M85.cpp @@ -32,11 +32,16 @@ void GcodeSuite::M85() { const millis_t ms = parser.value_millis_from_seconds(); #if LASER_SAFETY_TIMEOUT_MS > 0 if (ms && ms <= LASER_SAFETY_TIMEOUT_MS) { - SERIAL_ECHO_MSG("M85 timeout must be > ", MS_TO_SEC(LASER_SAFETY_TIMEOUT_MS + 999), " s for laser safety."); + SERIAL_ECHO_MSG(GCODE_ERR_MSG("M85 timeout must be > ", MS_TO_SEC(LASER_SAFETY_TIMEOUT_MS + 999), " s for laser safety.")); return; } #endif max_inactive_time = ms; } + else { + #if DISABLED(MARLIN_SMALL_BUILD) + SERIAL_ECHOLNPGM("Inactivity timeout ", MS_TO_SEC(max_inactive_time), " s."); + #endif + } } diff --git a/Marlin/src/gcode/feature/advance/M900.cpp b/Marlin/src/gcode/feature/advance/M900.cpp index 5fa9c04dbd2a..e8a16d952f30 100644 --- a/Marlin/src/gcode/feature/advance/M900.cpp +++ b/Marlin/src/gcode/feature/advance/M900.cpp @@ -141,6 +141,8 @@ void GcodeSuite::M900() { } void GcodeSuite::M900_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_LINEAR_ADVANCE)); #if DISTINCT_E < 2 report_echo_start(forReplay); diff --git a/Marlin/src/gcode/feature/controllerfan/M710.cpp b/Marlin/src/gcode/feature/controllerfan/M710.cpp index b98d88845dec..c8b5efa8cb02 100644 --- a/Marlin/src/gcode/feature/controllerfan/M710.cpp +++ b/Marlin/src/gcode/feature/controllerfan/M710.cpp @@ -67,6 +67,8 @@ void GcodeSuite::M710() { } void GcodeSuite::M710_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_CONTROLLER_FAN)); SERIAL_ECHOLNPGM(" M710" " S", int(controllerFan.settings.active_speed), diff --git a/Marlin/src/gcode/feature/digipot/M907-M910.cpp b/Marlin/src/gcode/feature/digipot/M907-M910.cpp index 8869f8d49462..55d43f1b416f 100644 --- a/Marlin/src/gcode/feature/digipot/M907-M910.cpp +++ b/Marlin/src/gcode/feature/digipot/M907-M910.cpp @@ -126,6 +126,8 @@ void GcodeSuite::M907() { #if HAS_MOTOR_CURRENT_SPI || HAS_MOTOR_CURRENT_PWM void GcodeSuite::M907_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_STEPPER_MOTOR_CURRENTS)); #if HAS_MOTOR_CURRENT_PWM SERIAL_ECHOLNPGM_P( // PWM-based has 3 values: diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index 64d57118a0f3..2da92b8582d6 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -104,6 +104,8 @@ void say_shaping() { } void GcodeSuite::M493_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_FT_MOTION)); const ft_config_t &c = ftMotion.cfg; SERIAL_ECHOPGM(" M493 S", c.mode); diff --git a/Marlin/src/gcode/feature/fwretract/M207-M209.cpp b/Marlin/src/gcode/feature/fwretract/M207-M209.cpp index 173c2894dcd6..2d198b7ade1d 100644 --- a/Marlin/src/gcode/feature/fwretract/M207-M209.cpp +++ b/Marlin/src/gcode/feature/fwretract/M207-M209.cpp @@ -38,6 +38,8 @@ void GcodeSuite::M207() { fwretract.M207(); } void GcodeSuite::M207_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_RETRACT_S_F_Z)); fwretract.M207_report(); } @@ -53,6 +55,8 @@ void GcodeSuite::M207_report(const bool forReplay/*=true*/) { void GcodeSuite::M208() { fwretract.M208(); } void GcodeSuite::M208_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_RECOVER_S_F)); fwretract.M208_report(); } @@ -68,6 +72,8 @@ void GcodeSuite::M208_report(const bool forReplay/*=true*/) { void GcodeSuite::M209() { fwretract.M209(); } void GcodeSuite::M209_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_AUTO_RETRACT_S)); fwretract.M209_report(); } diff --git a/Marlin/src/gcode/feature/input_shaping/M593.cpp b/Marlin/src/gcode/feature/input_shaping/M593.cpp index 1b6a43f9ddb7..249536efffb5 100644 --- a/Marlin/src/gcode/feature/input_shaping/M593.cpp +++ b/Marlin/src/gcode/feature/input_shaping/M593.cpp @@ -28,6 +28,8 @@ #include "../../../module/stepper.h" void GcodeSuite::M593_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F("Input Shaping")); #if ENABLED(INPUT_SHAPING_X) SERIAL_ECHOLNPGM(" M593 X" @@ -78,7 +80,7 @@ void GcodeSuite::M593() { if (for_Y) stepper.set_shaping_frequency(Y_AXIS, freq); } else - SERIAL_ECHOLNPGM("?Frequency (F) must be greater than ", min_freq, " or 0 to disable"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Frequency (F) must be greater than ", min_freq, " or 0 to disable")); } } diff --git a/Marlin/src/gcode/feature/network/M552-M554.cpp b/Marlin/src/gcode/feature/network/M552-M554.cpp index 7633ec1fd532..9a09a973c82c 100644 --- a/Marlin/src/gcode/feature/network/M552-M554.cpp +++ b/Marlin/src/gcode/feature/network/M552-M554.cpp @@ -97,6 +97,7 @@ void GcodeSuite::M552() { } void GcodeSuite::M552_report() { + TERN_(MARLIN_SMALL_BUILD, return); ip_report(552, F("ip address"), Ethernet.linkStatus() == LinkON ? Ethernet.localIP() : ethernet.ip); } @@ -111,6 +112,7 @@ void GcodeSuite::M553() { } void GcodeSuite::M553_report() { + TERN_(MARLIN_SMALL_BUILD, return); ip_report(553, F("subnet mask"), Ethernet.linkStatus() == LinkON ? Ethernet.subnetMask() : ethernet.subnet); } @@ -125,6 +127,7 @@ void GcodeSuite::M554() { } void GcodeSuite::M554_report() { + TERN_(MARLIN_SMALL_BUILD, return); ip_report(554, F("gateway"), Ethernet.linkStatus() == LinkON ? Ethernet.gatewayIP() : ethernet.gateway); } diff --git a/Marlin/src/gcode/feature/nonlinear/M592.cpp b/Marlin/src/gcode/feature/nonlinear/M592.cpp index 792bb9b91200..b1c4ca4be790 100644 --- a/Marlin/src/gcode/feature/nonlinear/M592.cpp +++ b/Marlin/src/gcode/feature/nonlinear/M592.cpp @@ -28,6 +28,7 @@ #include "../../../module/stepper.h" void GcodeSuite::M592_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); report_heading(forReplay, F(STR_NONLINEAR_EXTRUSION)); SERIAL_ECHOLNPGM(" M592 A", stepper.ne.A, " B", stepper.ne.B, " C", stepper.ne.C); } diff --git a/Marlin/src/gcode/feature/pause/M603.cpp b/Marlin/src/gcode/feature/pause/M603.cpp index 0204ab25ef65..fcc042f58e86 100644 --- a/Marlin/src/gcode/feature/pause/M603.cpp +++ b/Marlin/src/gcode/feature/pause/M603.cpp @@ -61,6 +61,8 @@ void GcodeSuite::M603() { } void GcodeSuite::M603_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_FILAMENT_LOAD_UNLOAD)); #if EXTRUDERS == 1 diff --git a/Marlin/src/gcode/feature/powerloss/M413.cpp b/Marlin/src/gcode/feature/powerloss/M413.cpp index 8cbe468476b3..733a34484cb7 100644 --- a/Marlin/src/gcode/feature/powerloss/M413.cpp +++ b/Marlin/src/gcode/feature/powerloss/M413.cpp @@ -64,6 +64,8 @@ void GcodeSuite::M413() { } void GcodeSuite::M413_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_POWER_LOSS_RECOVERY)); SERIAL_ECHOPGM(" M413 S", AS_DIGIT(recovery.enabled) #if HAS_PLR_BED_THRESHOLD diff --git a/Marlin/src/gcode/feature/runout/M412.cpp b/Marlin/src/gcode/feature/runout/M412.cpp index 4b4ab6a68a8e..4cfb23830913 100644 --- a/Marlin/src/gcode/feature/runout/M412.cpp +++ b/Marlin/src/gcode/feature/runout/M412.cpp @@ -67,6 +67,8 @@ void GcodeSuite::M412() { } void GcodeSuite::M412_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_FILAMENT_RUNOUT_SENSOR)); SERIAL_ECHOPGM( " M412 S", runout.enabled diff --git a/Marlin/src/gcode/feature/trinamic/M569.cpp b/Marlin/src/gcode/feature/trinamic/M569.cpp index b4e6a13c52a6..06a4992ceb07 100644 --- a/Marlin/src/gcode/feature/trinamic/M569.cpp +++ b/Marlin/src/gcode/feature/trinamic/M569.cpp @@ -155,6 +155,8 @@ void GcodeSuite::M569() { } void GcodeSuite::M569_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_DRIVER_STEPPING_MODE)); auto say_M569 = [](const bool forReplay, FSTR_P const etc=nullptr, const bool eol=false) { diff --git a/Marlin/src/gcode/feature/trinamic/M906.cpp b/Marlin/src/gcode/feature/trinamic/M906.cpp index b949200ad779..c0dc456a8a32 100644 --- a/Marlin/src/gcode/feature/trinamic/M906.cpp +++ b/Marlin/src/gcode/feature/trinamic/M906.cpp @@ -231,6 +231,8 @@ void GcodeSuite::M906() { } void GcodeSuite::M906_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_STEPPER_DRIVER_CURRENT)); auto say_M906 = [](const bool forReplay) { diff --git a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp index fa1cc1227cc2..ba6d9538a4f8 100644 --- a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp +++ b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp @@ -378,6 +378,8 @@ } void GcodeSuite::M913_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_HYBRID_THRESHOLD)); auto say_M913 = [](const bool forReplay) { @@ -565,6 +567,8 @@ } void GcodeSuite::M914_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_STALLGUARD_THRESHOLD)); auto say_M914 = [](const bool forReplay) { diff --git a/Marlin/src/gcode/feature/trinamic/M919.cpp b/Marlin/src/gcode/feature/trinamic/M919.cpp index 4ee004291d85..98227c712532 100644 --- a/Marlin/src/gcode/feature/trinamic/M919.cpp +++ b/Marlin/src/gcode/feature/trinamic/M919.cpp @@ -64,7 +64,7 @@ void GcodeSuite::M919() { if (WITHIN(toff, 1, 15)) DEBUG_ECHOLNPGM(".toff: ", toff); else { - SERIAL_ECHOLNPGM("?O out of range (1..15)"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("O out of range (1..15)")); err = true; } } @@ -74,7 +74,7 @@ void GcodeSuite::M919() { if (WITHIN(hend, -3, 12)) DEBUG_ECHOLNPGM(".hend: ", hend); else { - SERIAL_ECHOLNPGM("?P out of range (-3..12)"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("P out of range (-3..12)")); err = true; } } @@ -84,7 +84,7 @@ void GcodeSuite::M919() { if (WITHIN(hstrt, 1, 8)) DEBUG_ECHOLNPGM(".hstrt: ", hstrt); else { - SERIAL_ECHOLNPGM("?S out of range (1..8)"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("S out of range (1..8)")); err = true; } } @@ -118,7 +118,7 @@ void GcodeSuite::M919() { // Get the chopper timing for the specified axis and index switch (i) { default: // A specified axis isn't Trinamic - SERIAL_ECHOLNPGM("?Axis ", C(AXIS_CHAR(i)), " has no TMC drivers."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Axis ", C(AXIS_CHAR(i)), " has no TMC drivers.")); break; #if AXIS_IS_TMC(X) || AXIS_IS_TMC(X2) diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 7a72097141b7..8004187903dd 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -341,6 +341,12 @@ #define HAS_FAST_MOVES 1 #endif +#if ENABLED(MARLIN_SMALL_BUILD) + #define GCODE_ERR_MSG(V...) "?" +#else + #define GCODE_ERR_MSG(V...) "?" V +#endif + enum AxisRelative : uint8_t { LOGICAL_AXIS_LIST(REL_E, REL_X, REL_Y, REL_Z, REL_I, REL_J, REL_K, REL_U, REL_V, REL_W) #if HAS_EXTRUDERS diff --git a/Marlin/src/gcode/geometry/M206_M428.cpp b/Marlin/src/gcode/geometry/M206_M428.cpp index 7017eabbdc3e..dcf19625be99 100644 --- a/Marlin/src/gcode/geometry/M206_M428.cpp +++ b/Marlin/src/gcode/geometry/M206_M428.cpp @@ -48,6 +48,8 @@ void GcodeSuite::M206() { } void GcodeSuite::M206_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_HOME_OFFSET)); SERIAL_ECHOLNPGM_P( #if IS_CARTESIAN diff --git a/Marlin/src/gcode/lcd/M145.cpp b/Marlin/src/gcode/lcd/M145.cpp index d72d5d678989..3cc6130dfd45 100644 --- a/Marlin/src/gcode/lcd/M145.cpp +++ b/Marlin/src/gcode/lcd/M145.cpp @@ -61,6 +61,8 @@ void GcodeSuite::M145() { } void GcodeSuite::M145_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F(STR_MATERIAL_HEATUP)); for (uint8_t i = 0; i < PREHEAT_COUNT; ++i) { report_echo_start(forReplay); diff --git a/Marlin/src/gcode/lcd/M250.cpp b/Marlin/src/gcode/lcd/M250.cpp index 58b6dac872a3..40c39edd1c6a 100644 --- a/Marlin/src/gcode/lcd/M250.cpp +++ b/Marlin/src/gcode/lcd/M250.cpp @@ -38,6 +38,7 @@ void GcodeSuite::M250() { } void GcodeSuite::M250_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); report_heading_etc(forReplay, F(STR_LCD_CONTRAST)); SERIAL_ECHOLNPGM(" M250 C", ui.contrast); } diff --git a/Marlin/src/gcode/lcd/M255.cpp b/Marlin/src/gcode/lcd/M255.cpp index 2b982ee5d9a0..e8213f3fd8a1 100644 --- a/Marlin/src/gcode/lcd/M255.cpp +++ b/Marlin/src/gcode/lcd/M255.cpp @@ -44,6 +44,7 @@ void GcodeSuite::M255() { } void GcodeSuite::M255_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); report_heading_etc(forReplay, F(STR_DISPLAY_SLEEP)); SERIAL_ECHOLNPGM(" M255 S", TERN(HAS_DISPLAY_SLEEP, ui.sleep_timeout_minutes, ui.backlight_timeout_minutes), diff --git a/Marlin/src/gcode/lcd/M256.cpp b/Marlin/src/gcode/lcd/M256.cpp index 9842cc258339..647aec4ff5e5 100644 --- a/Marlin/src/gcode/lcd/M256.cpp +++ b/Marlin/src/gcode/lcd/M256.cpp @@ -37,6 +37,7 @@ void GcodeSuite::M256() { } void GcodeSuite::M256_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); report_heading_etc(forReplay, F(STR_LCD_BRIGHTNESS)); SERIAL_ECHOLNPGM(" M256 B", ui.brightness); } diff --git a/Marlin/src/gcode/lcd/M414.cpp b/Marlin/src/gcode/lcd/M414.cpp index 9aa49ea3c210..4b961ad8cae1 100644 --- a/Marlin/src/gcode/lcd/M414.cpp +++ b/Marlin/src/gcode/lcd/M414.cpp @@ -44,6 +44,7 @@ void GcodeSuite::M414() { } void GcodeSuite::M414_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); report_heading_etc(forReplay, F(STR_UI_LANGUAGE)); SERIAL_ECHOLNPGM(" M414 S", ui.language); } diff --git a/Marlin/src/gcode/probe/M423.cpp b/Marlin/src/gcode/probe/M423.cpp index 7c82a4f8af30..7ab887eb645a 100644 --- a/Marlin/src/gcode/probe/M423.cpp +++ b/Marlin/src/gcode/probe/M423.cpp @@ -72,12 +72,12 @@ void GcodeSuite::M423() { do_report = false; const int8_t x = parser.value_int(); if (!WITHIN(x, 0, XATC_MAX_POINTS - 1)) - SERIAL_ECHOLNPGM("?(X) out of range (0..", XATC_MAX_POINTS - 1, ")."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(X) out of range (0..", XATC_MAX_POINTS - 1, ").")); else { if (parser.seenval('Z')) xatc.z_offset[x] = parser.value_linear_units(); else - SERIAL_ECHOLNPGM("?(Z) required."); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("(Z) required.")); } } @@ -86,6 +86,8 @@ void GcodeSuite::M423() { } void GcodeSuite::M423_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F("X-Twist Correction")); SERIAL_ECHOLNPGM(" M423 A", xatc.start, " I", xatc.spacing); for (uint8_t x = 0; x < XATC_MAX_POINTS; ++x) { diff --git a/Marlin/src/gcode/probe/M851.cpp b/Marlin/src/gcode/probe/M851.cpp index ec63ff190dc0..7c40eddd5d48 100644 --- a/Marlin/src/gcode/probe/M851.cpp +++ b/Marlin/src/gcode/probe/M851.cpp @@ -47,11 +47,11 @@ void GcodeSuite::M851() { if (WITHIN(x, PROBE_OFFSET_XMIN, PROBE_OFFSET_XMAX)) offs.x = x; else { - SERIAL_ECHOLNPGM("?X out of range (", PROBE_OFFSET_XMIN, " to ", PROBE_OFFSET_XMAX, ")"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("X out of range (", PROBE_OFFSET_XMIN, " to ", PROBE_OFFSET_XMAX, ")")); ok = false; } #else - if (x) SERIAL_ECHOLNPGM("?X must be 0 (NOZZLE_AS_PROBE)."); // ...but let 'ok' stay true + if (x) SERIAL_ECHOLNPGM(GCODE_ERR_MSG("X must be 0 (NOZZLE_AS_PROBE).")); // ...but let 'ok' stay true #endif } @@ -61,11 +61,11 @@ void GcodeSuite::M851() { if (WITHIN(y, PROBE_OFFSET_YMIN, PROBE_OFFSET_YMAX)) offs.y = y; else { - SERIAL_ECHOLNPGM("?Y out of range (", PROBE_OFFSET_YMIN, " to ", PROBE_OFFSET_YMAX, ")"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Y out of range (", PROBE_OFFSET_YMIN, " to ", PROBE_OFFSET_YMAX, ")")); ok = false; } #else - if (y) SERIAL_ECHOLNPGM("?Y must be 0 (NOZZLE_AS_PROBE)."); // ...but let 'ok' stay true + if (y) SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Y must be 0 (NOZZLE_AS_PROBE).")); // ...but let 'ok' stay true #endif } @@ -74,7 +74,7 @@ void GcodeSuite::M851() { if (WITHIN(z, PROBE_OFFSET_ZMIN, PROBE_OFFSET_ZMAX)) offs.z = z; else { - SERIAL_ECHOLNPGM("?Z out of range (", PROBE_OFFSET_ZMIN, " to ", PROBE_OFFSET_ZMAX, ")"); + SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Z out of range (", PROBE_OFFSET_ZMIN, " to ", PROBE_OFFSET_ZMAX, ")")); ok = false; } } @@ -84,6 +84,8 @@ void GcodeSuite::M851() { } void GcodeSuite::M851_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_Z_PROBE_OFFSET)); SERIAL_ECHOPGM_P( #if HAS_PROBE_XY_OFFSET diff --git a/Marlin/src/gcode/temp/M306.cpp b/Marlin/src/gcode/temp/M306.cpp index 2830a77ab4fd..585b706a82ff 100644 --- a/Marlin/src/gcode/temp/M306.cpp +++ b/Marlin/src/gcode/temp/M306.cpp @@ -88,6 +88,8 @@ void GcodeSuite::M306() { } void GcodeSuite::M306_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading(forReplay, F("Model predictive control")); HOTEND_LOOP() { report_echo_start(forReplay); diff --git a/Marlin/src/gcode/temp/M86-M87.cpp b/Marlin/src/gcode/temp/M86-M87.cpp index 7fb446196123..a64358d21278 100644 --- a/Marlin/src/gcode/temp/M86-M87.cpp +++ b/Marlin/src/gcode/temp/M86-M87.cpp @@ -34,6 +34,8 @@ #include "../../feature/hotend_idle.h" void GcodeSuite::M86_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + hotend_idle_settings_t &c = hotend_idle.cfg; report_heading(forReplay, F("Hotend Idle Timeout")); SERIAL_ECHOLNPGM(" M86" diff --git a/Marlin/src/gcode/units/M149.cpp b/Marlin/src/gcode/units/M149.cpp index bd9d8d486cb5..a3bf7858b82f 100644 --- a/Marlin/src/gcode/units/M149.cpp +++ b/Marlin/src/gcode/units/M149.cpp @@ -37,6 +37,8 @@ void GcodeSuite::M149() { } void GcodeSuite::M149_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + report_heading_etc(forReplay, F(STR_TEMPERATURE_UNITS)); SERIAL_ECHOLN(F(" M149 "), C(parser.temp_units_code()), F(" ; Units in "), parser.temp_units_name()); } diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 93acd89aa981..a5481bb985dd 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -26,6 +26,12 @@ * Conditionals set before pins.h and which depend on Configuration_adv.h. */ +#if ENABLED(MARLIN_SMALL_BUILD) + #undef EEPROM_CHITCHAT + #undef CAPABILITIES_REPORT + #define DISABLE_M503 +#endif + #ifndef AXIS_RELATIVE_MODES #define AXIS_RELATIVE_MODES {} #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 973f17927078..c70ac494328f 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3957,7 +3957,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." * Sanity Check for Slim LCD Menus and Probe Offset Wizard */ #if ALL(SLIM_LCD_MENUS, PROBE_OFFSET_WIZARD) - #error "SLIM_LCD_MENUS disables \"Advanced Settings > Probe Offsets > PROBE_OFFSET_WIZARD.\"" + #error "SLIM_LCD_MENUS disables 'Advanced Settings > Probe Offsets > PROBE_OFFSET_WIZARD.'" #endif /** diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 5ac26794a403..9b071ecc3650 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2271,6 +2271,8 @@ void Temperature::task() { } void Temperature::M305_report(const uint8_t t_index, const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + gcode.report_heading_etc(forReplay, F(STR_USER_THERMISTORS)); SERIAL_ECHOPGM(" M305 P", AS_DIGIT(t_index)); From 1d295f7983a90be9eddc830bc7be621c6dcb14c7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 7 Feb 2024 23:44:55 -0600 Subject: [PATCH 32/39] =?UTF-8?q?=F0=9F=94=A5=20Clean=20up=20SCARA/TPARA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 87908d1821c0..b49ae40babb9 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1006,9 +1006,6 @@ // Radius around the center where the arm cannot reach #define MIDDLE_DEAD_ZONE_R 0 // (mm) - #define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ - #define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ - #elif ENABLED(MP_SCARA) #define SCARA_OFFSET_THETA1 12 // degrees @@ -1027,23 +1024,19 @@ #define DEFAULT_SEGMENTS_PER_SECOND 200 // Length of inner and outer support arms. Measure arm lengths precisely. - #define TPARA_LINKAGE_1 120 // (mm) - #define TPARA_LINKAGE_2 120 // (mm) + #define TPARA_LINKAGE_1 120 // (mm) + #define TPARA_LINKAGE_2 120 // (mm) - // SCARA tower offset (position of Tower relative to bed zero position) - // This needs to be reasonably accurate as it defines the printbed position in the SCARA space. - #define TPARA_OFFSET_X 0 // (mm) - #define TPARA_OFFSET_Y 0 // (mm) - #define TPARA_OFFSET_Z 0 // (mm) + // TPARA tower offset (position of Tower relative to bed zero position) + // This needs to be reasonably accurate as it defines the printbed position in the TPARA space. + #define TPARA_OFFSET_X 0 // (mm) + #define TPARA_OFFSET_Y 0 // (mm) + #define TPARA_OFFSET_Z 0 // (mm) #define FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly // Radius around the center where the arm cannot reach #define MIDDLE_DEAD_ZONE_R 0 // (mm) - - // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ - #define THETA_HOMING_OFFSET 0 - #define PSI_HOMING_OFFSET 0 #endif // @section polar From 20c6a6233bc3d749335d3f761c61131355a6e534 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 8 Feb 2024 16:49:13 -0600 Subject: [PATCH 33/39] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20HC32?= =?UTF-8?q?=20endstop=20interrupts=20for=20X2/Y2/Z4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/HC32/endstop_interrupts.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Marlin/src/HAL/HC32/endstop_interrupts.cpp b/Marlin/src/HAL/HC32/endstop_interrupts.cpp index a976fa1d3c0d..99987ec76f5b 100644 --- a/Marlin/src/HAL/HC32/endstop_interrupts.cpp +++ b/Marlin/src/HAL/HC32/endstop_interrupts.cpp @@ -40,9 +40,15 @@ void endstopIRQHandler() { CHECK(X_MAX); CHECK(X_MIN); + CHECK(X2_MAX); + CHECK(X2_MIN); + CHECK(Y_MAX); CHECK(Y_MIN); + CHECK(Y2_MAX); + CHECK(Y2_MIN); + CHECK(Z_MAX); CHECK(Z_MIN); @@ -52,6 +58,9 @@ void endstopIRQHandler() { CHECK(Z3_MAX); CHECK(Z3_MIN); + CHECK(Z4_MAX); + CHECK(Z4_MIN); + CHECK(Z_MIN_PROBE); // Update endstops @@ -69,9 +78,15 @@ void setup_endstop_interrupts() { SETUP(X_MAX); SETUP(X_MIN); + SETUP(X2_MAX); + SETUP(X2_MIN); + SETUP(Y_MAX); SETUP(Y_MIN); + SETUP(Y2_MAX); + SETUP(Y2_MIN); + SETUP(Z_MAX); SETUP(Z_MIN); @@ -81,6 +96,9 @@ void setup_endstop_interrupts() { SETUP(Z3_MAX); SETUP(Z3_MIN); + SETUP(Z4_MAX); + SETUP(Z4_MIN); + SETUP(Z_MIN_PROBE); #undef SETUP @@ -88,7 +106,7 @@ void setup_endstop_interrupts() { // Ensure 1 - 10 IRQs are registered // Disable some endstops if you encounter this error -#define ENDSTOPS_INTERRUPTS_COUNT COUNT_ENABLED(USE_X_MAX, USE_X_MIN, USE_Y_MAX, USE_Y_MIN, USE_Z_MAX, USE_Z_MIN, USE_Z2_MAX, USE_Z2_MIN, USE_Z3_MAX, USE_Z3_MIN, USE_Z_MIN_PROBE) +#define ENDSTOPS_INTERRUPTS_COUNT COUNT_ENABLED(USE_X_MAX, USE_X_MIN, USE_X2_MAX, USE_X2_MIN, USE_Y_MAX, USE_Y_MIN, USE_Y2_MAX, USE_Y2_MIN, USE_Z_MAX, USE_Z_MIN, USE_Z2_MAX, USE_Z2_MIN, USE_Z3_MAX, USE_Z3_MIN, USE_Z4_MAX, USE_Z4_MIN, USE_Z_MIN_PROBE) #if ENDSTOPS_INTERRUPTS_COUNT > 10 #error "Too many endstop interrupts! HC32F460 only supports 10 endstop interrupts." #elif ENDSTOPS_INTERRUPTS_COUNT == 0 From 1e8fbb7bbb8611194c9d7242a860b153412694c5 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 9 Feb 2024 00:20:11 +0000 Subject: [PATCH 34/39] [cron] Bump distribution date (2024-02-09) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 2bb3aaab0753..840689ec4553 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-08" +//#define STRING_DISTRIBUTION_DATE "2024-02-09" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 355a77709d14..44b2610de43b 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-08" + #define STRING_DISTRIBUTION_DATE "2024-02-09" #endif /** From 76b568830475d218a5229ff9736a155c5a0cb620 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 9 Feb 2024 19:11:37 -0600 Subject: [PATCH 35/39] =?UTF-8?q?=F0=9F=9A=B8=20Optional=20encoder=20multi?= =?UTF-8?q?pliers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_adv.h | 18 ++++++++++++++++++ Marlin/src/lcd/e3v2/common/encoder.cpp | 11 ++++++----- Marlin/src/lcd/marlinui.cpp | 21 +++++++++++++-------- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index a5481bb985dd..4f74fa006718 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -869,6 +869,24 @@ #define HAS_ENCODER_ACTION 1 #endif +#if ENABLED(ENCODER_RATE_MULTIPLIER) + #ifndef ENCODER_5X_STEPS_PER_SEC + #define ENCODER_5X_STEPS_PER_SEC 0 + #endif + #ifndef ENCODER_10X_STEPS_PER_SEC + #define ENCODER_10X_STEPS_PER_SEC 0 + #endif + #ifndef ENCODER_100X_STEPS_PER_SEC + #define ENCODER_100X_STEPS_PER_SEC 0 + #endif + #if !((HAS_MARLINUI_MENU || HAS_DWIN_E3V2) && (ENCODER_5X_STEPS_PER_SEC || ENCODER_10X_STEPS_PER_SEC || ENCODER_100X_STEPS_PER_SEC)) + #undef ENCODER_RATE_MULTIPLIER + #undef ENCODER_5X_STEPS_PER_SEC + #undef ENCODER_10X_STEPS_PER_SEC + #undef ENCODER_100X_STEPS_PER_SEC + #endif +#endif + #if STATUS_MESSAGE_TIMEOUT_SEC > 0 #define HAS_STATUS_MESSAGE_TIMEOUT 1 #endif diff --git a/Marlin/src/lcd/e3v2/common/encoder.cpp b/Marlin/src/lcd/e3v2/common/encoder.cpp index c406cc47d922..5825fb0f7753 100644 --- a/Marlin/src/lcd/e3v2/common/encoder.cpp +++ b/Marlin/src/lcd/e3v2/common/encoder.cpp @@ -137,11 +137,12 @@ EncoderState encoderReceiveAnalyze() { // Note that the rate is always calculated between two passes through the // loop and that the abs of the temp_diff value is tracked. const float encoderStepRate = encoderMovementSteps / float(ms - encoderRate.lastEncoderTime) * 1000; - if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoder_multiplier = 100; - else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoder_multiplier = 10; - #if ENCODER_5X_STEPS_PER_SEC - else if (encoderStepRate >= ENCODER_5X_STEPS_PER_SEC) encoder_multiplier = 5; - #endif + if (ENCODER_100X_STEPS_PER_SEC > 0 && encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) + encoder_multiplier = 100; + else if (ENCODER_10X_STEPS_PER_SEC > 0 && encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) + encoder_multiplier = 10; + else if (ENCODER_5X_STEPS_PER_SEC > 0 && encoderStepRate >= ENCODER_5X_STEPS_PER_SEC) + encoder_multiplier = 5; } encoderRate.lastEncoderTime = ms; } diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 9a8152ba9909..f66b680bc1c8 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1055,18 +1055,23 @@ void MarlinUI::init() { const float encoderStepRate = ((float(abs_diff) / float(epps)) * 1000.0f) / float(ms - encoder_mult_prev_ms); encoder_mult_prev_ms = ms; - if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoder_multiplier = 100; - else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoder_multiplier = 10; + if (ENCODER_100X_STEPS_PER_SEC > 0 && encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) + encoder_multiplier = 100; + else if (ENCODER_10X_STEPS_PER_SEC > 0 && encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) + encoder_multiplier = 10; + else if (ENCODER_5X_STEPS_PER_SEC > 0 && encoderStepRate >= ENCODER_5X_STEPS_PER_SEC) + encoder_multiplier = 5; // Enable to output the encoder steps per second value //#define ENCODER_RATE_MULTIPLIER_DEBUG #if ENABLED(ENCODER_RATE_MULTIPLIER_DEBUG) - SERIAL_ECHO_START(); - SERIAL_ECHOPGM("Enc Step Rate: ", encoderStepRate); - SERIAL_ECHOPGM(" Multiplier: ", encoder_multiplier); - SERIAL_ECHOPGM(" ENCODER_10X_STEPS_PER_SEC: ", ENCODER_10X_STEPS_PER_SEC); - SERIAL_ECHOPGM(" ENCODER_100X_STEPS_PER_SEC: ", ENCODER_100X_STEPS_PER_SEC); - SERIAL_EOL(); + SERIAL_ECHO_MSG( + "Enc Step Rate: ", encoderStepRate, + " Mult: ", encoder_multiplier, + " 5X Steps: ", ENCODER_5X_STEPS_PER_SEC, + " 10X Steps: ", ENCODER_10X_STEPS_PER_SEC, + " 100X Steps: ", ENCODER_100X_STEPS_PER_SEC + ); #endif } From 8d7be79108ecb481761527516782830890a28de7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 9 Feb 2024 19:11:56 -0600 Subject: [PATCH 36/39] =?UTF-8?q?=F0=9F=91=B7=20Improve=20BIGTREE=5FGTR=5F?= =?UTF-8?q?V1=5F0=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/tests/BIGTREE_GTR_V1_0 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot/tests/BIGTREE_GTR_V1_0 b/buildroot/tests/BIGTREE_GTR_V1_0 index e2e70e5f81e3..932317598652 100755 --- a/buildroot/tests/BIGTREE_GTR_V1_0 +++ b/buildroot/tests/BIGTREE_GTR_V1_0 @@ -27,7 +27,7 @@ opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0 SERIAL_PORT -1 \ Z_DRIVER_TYPE A4988 Z2_DRIVER_TYPE A4988 Z3_DRIVER_TYPE A4988 Z4_DRIVER_TYPE A4988 \ DEFAULT_Kp_LIST '{ 22.2, 20.0, 21.0, 19.0, 18.0 }' DEFAULT_Ki_LIST '{ 1.08 }' DEFAULT_Kd_LIST '{ 114.0, 112.0, 110.0, 108.0 }' opt_enable TOOLCHANGE_FILAMENT_SWAP TOOLCHANGE_MIGRATION_FEATURE TOOLCHANGE_FS_SLOW_FIRST_PRIME TOOLCHANGE_FS_PRIME_FIRST_USED \ - PID_PARAMS_PER_HOTEND Z_MULTI_ENDSTOPS TC_GCODE_USE_GLOBAL_X TC_GCODE_USE_GLOBAL_Y + REPRAP_DISCOUNT_SMART_CONTROLLER PID_PARAMS_PER_HOTEND Z_MULTI_ENDSTOPS TC_GCODE_USE_GLOBAL_X TC_GCODE_USE_GLOBAL_Y exec_test $1 $2 "BigTreeTech GTR | 6 Extruders | Quad Z + Endstops" "$3" restore_configs @@ -42,7 +42,7 @@ opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0 SERIAL_PORT -1 \ MPC_AMBIENT_XFER_COEFF '{ 0.068f, 0.068f, 0.068f }' \ MPC_AMBIENT_XFER_COEFF_FAN255 '{ 0.097f, 0.097f, 0.097f }' \ FILAMENT_HEAT_CAPACITY_PERMM '{ 5.6e-3f, 3.6e-3f, 5.6e-3f }' -opt_enable SWITCHING_TOOLHEAD TOOL_SENSOR MPCTEMP MPC_EDIT_MENU MPC_AUTOTUNE MPC_AUTOTUNE_MENU +opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SWITCHING_TOOLHEAD TOOL_SENSOR MPCTEMP MPC_EDIT_MENU MPC_AUTOTUNE MPC_AUTOTUNE_MENU opt_disable PIDTEMP exec_test $1 $2 "BigTreeTech GTR | MPC | Switching Toolhead | Tool Sensors" "$3" From 4eba643ae1fe90f8aa2831a359efafbd78933fbe Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 10 Feb 2024 06:17:34 +0000 Subject: [PATCH 37/39] [cron] Bump distribution date (2024-02-10) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 840689ec4553..88388b4cb98d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-09" +//#define STRING_DISTRIBUTION_DATE "2024-02-10" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 44b2610de43b..90267532a69f 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-09" + #define STRING_DISTRIBUTION_DATE "2024-02-10" #endif /** From 9974327d333c3db443a7627b476f02c91a1ace0e Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 11 Feb 2024 03:28:37 +1300 Subject: [PATCH 38/39] extend uart checks --- Marlin/src/HAL/STM32/inc/SanityCheck.h | 5 +++-- .../src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h | 15 +++++++++++++++ .../src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h | 11 +++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Marlin/src/HAL/STM32/inc/SanityCheck.h b/Marlin/src/HAL/STM32/inc/SanityCheck.h index 8bff51874eb5..e35b4e59cf81 100644 --- a/Marlin/src/HAL/STM32/inc/SanityCheck.h +++ b/Marlin/src/HAL/STM32/inc/SanityCheck.h @@ -58,8 +58,9 @@ * Check for common serial pin conflicts */ #define _CHECK_SERIAL_PIN(N) (( \ - BTN_EN1 == N || DOGLCD_CS == N || HEATER_BED_PIN == N || FAN0_PIN == N || \ - SDIO_D2_PIN == N || SDIO_D3_PIN == N || SDIO_CK_PIN == N || SDIO_CMD_PIN == N \ + BTN_EN1 == N || BTN_EN2 == N ||DOGLCD_CS == N || HEATER_BED_PIN == N || FAN0_PIN == N || \ + SDIO_D2_PIN == N || SDIO_D3_PIN == N || SDIO_CK_PIN == N || SDIO_CMD_PIN == N || \ + Y_STEP_PIN == N || Y_ENABLE_PIN == N || E0_ENABLE_PIN == N || POWER_LOSS_PIN == N \ )) #define CHECK_SERIAL_PIN(T,N) defined(UART##N##_##T##_PIN) && _CHECK_SERIAL_PIN(UART##N##_##T##_PIN) #if SERIAL_IN_USE(1) diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h index b950d8d1ac83..c182f2febe75 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h @@ -107,3 +107,18 @@ #define E0_SLAVE_ADDRESS 3 #endif #endif + +// Pins for documentation and sanity checks only. +// Changing these will not change the pin they are on. + +// Hardware UART pins +#define UART1_TX_PIN PA9 // default usage LCD connector +#define UART1_RX_PIN PA10 // default usage LCD connector +#define UART2_TX_PIN PA2 // default usage TFT connector +#define UART2_RX_PIN PA3 // default usage TFT connector +#define UART3_TX_PIN PB10 // default usage Y_STEP_PIN +#define UART3_RX_PIN PB11 // default usage Y_ENABLE_PIN +#define UART4_TX_PIN PC10 // default usage TMC UART +#define UART4_RX_PIN PC11 // default usage TMC UART +#define UART5_TX_PIN PC12 // default usage POWER_LOSS_PIN +#define UART5_RX_PIN PD2 // default usage E0_ENABLE_PIN diff --git a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h index ba1d06f68923..df91933d719b 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h @@ -461,3 +461,14 @@ #ifndef BOARD_NEOPIXEL_PIN #define BOARD_NEOPIXEL_PIN PA8 // LED driving pin #endif + +// Pins for documentation and sanity checks only. +// Changing these will not change the pin they are on. + +// Hardware UART pins +#define UART1_TX_PIN PA9 // default usage LCD connector +#define UART1_RX_PIN PA10 // default usage LCD connector +#define UART2_TX_PIN PA2 // default usage TFT connector +#define UART2_RX_PIN PA3 // default usage TFT connector +#define UART4_TX_PIN PC10 // default usage TMC UART +#define UART4_RX_PIN PC11 // default usage TMC UART From 9e879a5b1f801e7572e7948be38a6dad16ad35d8 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 11 Feb 2024 00:22:45 +0000 Subject: [PATCH 39/39] [cron] Bump distribution date (2024-02-11) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 88388b4cb98d..ca18332b6ba6 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-02-10" +//#define STRING_DISTRIBUTION_DATE "2024-02-11" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 90267532a69f..91e5ac4dbcdc 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-02-10" + #define STRING_DISTRIBUTION_DATE "2024-02-11" #endif /**