From 6390b3b69bbe543593b1d6eb4183bef4ab98d395 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 21 Apr 2023 13:21:39 +0200 Subject: [PATCH 1/9] Remove duplicate separator string Flash: -14B SRAM: 0B --- Firmware/ultralcd.cpp | 73 +++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a2bfd7bd6..8850d5cea 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -89,7 +89,8 @@ static char lcd_status_message[LCD_WIDTH + 1]; static uint8_t lay1cal_filament = 0; -static const char separator[] PROGMEM = "--------------------"; +static const char STR_SEPARATOR[] PROGMEM = "--------------------"; +static_assert(sizeof(STR_SEPARATOR) == LCD_WIDTH + 1, "separator length must be updated to match screen width"); /** forward declarations **/ @@ -258,8 +259,6 @@ uint8_t selected_sheet = 0; bool bMain; // flag (i.e. 'fake parameter') for 'lcd_sdcard_menu()' function bool bSettings; // flag (i.e. 'fake parameter') for 'lcd_hw_setup_menu()' function -const char STR_SEPARATOR[] PROGMEM = "------------"; - static void lcd_implementation_drawmenu_sdfile(uint8_t row, const char* longFilename) { uint8_t len = LCD_WIDTH - 1; @@ -1496,40 +1495,40 @@ void TestPullupCrash() { //! | 3.7.2.-2363 | c=16 //! | prusa3d.com | MSG_PRUSA3D //! | forum.prusa3d.com | MSG_PRUSA3D_FORUM -//! | help.prusa3d.com | MSG_PRUSA3D_HELP -//! | -------------- | STR_SEPARATOR +//! | help.prusa3d.com | MSG_PRUSA3D_HELP +//! | ------------------ | STR_SEPARATOR //! | 1_75mm_MK3 | FILAMENT_SIZE -//! | help.prusa3d.com | ELECTRONICS -//! | help.prusa3d.com | NOZZLE_TYPE -//! | -------------- | STR_SEPARATOR +//! | help.prusa3d.com | ELECTRONICS +//! | help.prusa3d.com | NOZZLE_TYPE +//! | ------------------ | STR_SEPARATOR //! | Date: | c=17 //! | MMM DD YYYY | __DATE__ -//! | -------------- | STR_SEPARATOR +//! | ------------------ | STR_SEPARATOR //! @endcode //! //! If MMU is connected //! -//! @code{.unparsed} -//! | MMU connected | c=18 -//! | FW: 1.0.6-7064523 | -//! @endcode +//! @code{.unparsed} +//! | MMU connected | c=18 +//! | FW: 1.0.6-7064523 | +//! @endcode //! //! If MMU is not connected //! -//! @code{.unparsed} -//! | MMU N/A | c=18 -//! @endcode +//! @code{.unparsed} +//! | MMU N/A | c=18 +//! @endcode //! //! If Flash Air is connected //! -//! @code{.unparsed} -//! | -------------- | STR_SEPARATOR -//! | FlashAir IP Addr: | c=18 -//! | 192.168.1.100 | -//! @endcode +//! @code{.unparsed} +//! | ------------------ | STR_SEPARATOR +//! | FlashAir IP Addr: | c=18 +//! | 192.168.1.100 | +//! @endcode //! //! @code{.unparsed} -//! | -------------- | STR_SEPARATOR +//! | ------------------ | STR_SEPARATOR //! | XYZ cal. details | MSG_XYZ_DETAILS c=18 //! | Extruder info | MSG_INFO_EXTRUDER //! | XYZ cal. details | MSG_INFO_SENSORS @@ -1537,8 +1536,8 @@ void TestPullupCrash() { //! //! If TMC2130 defined //! -//! @code{.unparsed} -//! | Belt status | MSG_BELT_STATUS +//! @code{.unparsed} +//! | Belt status | MSG_BELT_STATUS //! @endcode //! //! @code{.unparsed} @@ -1547,16 +1546,16 @@ void TestPullupCrash() { //! //! If Voltage Bed and PWR Pin are defined //! -//! @code{.unparsed} -//! | Voltages | MSG_MENU_VOLTAGES -//! @endcode +//! @code{.unparsed} +//! | Voltages | MSG_MENU_VOLTAGES +//! @endcode //! //! //! If DEBUG_BUILD is defined //! -//! @code{.unparsed} -//! | Debug | c=18 -//! @endcode +//! @code{.unparsed} +//! | Debug | c=18 +//! @endcode //! ---------------------- //! @endcode static void lcd_support_menu() @@ -2421,7 +2420,7 @@ void lcd_move_e() //! @code{.unparsed} //! |01234567890123456789| //! |Y distance from min | MSG_Y_DIST_FROM_MIN -//! | -------------- | STR_SEPARATOR +//! |--------------------| STR_SEPARATOR //! |Left: 00.00mm| MSG_LEFT c=10, c=8 //! |Right: 00.00mm| MSG_RIGHT c=10, c=8 //! ---------------------- @@ -2439,7 +2438,7 @@ static void lcd_menu_xyz_y_min() "%S:" ), _i("Y distance from min"), ////MSG_Y_DIST_FROM_MIN c=20 - separator, + STR_SEPARATOR, _i("Left"), ////MSG_LEFT c=10 _i("Right") ////MSG_RIGHT c=10 ); @@ -2464,7 +2463,7 @@ float _deg(float rad) //! @code{.unparsed} //! |01234567890123456789| //! |Measured skew :0.00D| MSG_MEASURED_SKEW c=14 -//! | -------------- | STR_SEPARATOR +//! |--------------------| STR_SEPARATOR //! |Slight skew :0.12D| MSG_SLIGHT_SKEW c=14 //! |Severe skew :0.25D| MSG_SEVERE_SKEW c=14 //! ---------------------- @@ -2482,7 +2481,7 @@ static void lcd_menu_xyz_skew() "%-14.14S:%3.2f\x01" ), _i("Measured skew"), ////MSG_MEASURED_SKEW c=14 - separator, + STR_SEPARATOR, _i("Slight skew"), _deg(bed_skew_angle_mild), ////MSG_SLIGHT_SKEW c=14 _i("Severe skew"), _deg(bed_skew_angle_extreme) ////MSG_SEVERE_SKEW c=14 ); @@ -2500,7 +2499,7 @@ static void lcd_menu_xyz_skew() //! @code{.unparsed} //! |01234567890123456789| //! |[0;0] point offset | MSG_MEASURED_OFFSET c=20 -//! | -------------- | STR_SEPARATOR +//! |--------------------| STR_SEPARATOR //! |X 00.00mm| c=10 //! |Y 00.00mm| c=10 //! ---------------------- @@ -2509,7 +2508,7 @@ static void lcd_menu_xyz_skew() static void lcd_menu_xyz_offset() { lcd_puts_at_P(0, 0, _i("[0;0] point offset"));////MSG_MEASURED_OFFSET c=20 - lcd_puts_at_P(0, 1, separator); + lcd_puts_at_P(0, 1, STR_SEPARATOR); for (uint8_t i = 0; i < 2; i++) { lcd_set_cursor(0, i + 2); @@ -6952,7 +6951,7 @@ static uint8_t lcd_selftest_screen(TestScreen screen, uint8_t _progress, uint8_t if (screen == TestScreen::Failed) lcd_puts_P(_T(MSG_SELFTEST_FAILED)); if (screen == TestScreen::Home) lcd_puts_P(_i("Calibrating home"));////MSG_CALIBRATING_HOME c=20 - lcd_puts_at_P(0, 1, separator); + lcd_puts_at_P(0, 1, STR_SEPARATOR); if ((screen >= TestScreen::ExtruderFan) && (screen <= TestScreen::FansOk)) { //SERIAL_ECHOLNPGM("Fan test"); From 02a0f6a35a93c3361bce74e593e223d39d25c63e Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 21 Apr 2023 14:56:26 +0200 Subject: [PATCH 2/9] Correctly utilize the menu stack in the Mode select message Flash: -34B SRAM: 0B --- Firmware/ultralcd.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 8850d5cea..d0c33ea96 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3425,8 +3425,7 @@ static void crash_mode_switch() { lcd_crash_detect_enable(); } - if (printJobOngoing() || (lcd_commands_type == LcdCommands::Layer1Cal)) menu_goto(lcd_tune_menu, 9, true, true); - else menu_goto(lcd_settings_menu, 9, true, true); + menu_back(); } #endif //TMC2130 From 9272545deb0f1d500664986c867d47c54939ff7b Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 21 Apr 2023 17:42:50 +0200 Subject: [PATCH 3/9] Dead code cleanup --- Firmware/mesh_bed_calibration.cpp | 19 --------- Firmware/mesh_bed_calibration.h | 10 +---- Firmware/ultralcd.cpp | 67 ++++--------------------------- 3 files changed, 8 insertions(+), 88 deletions(-) diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 308421010..8c82acc91 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -3101,25 +3101,6 @@ void count_xyz_details(float (&distanceMin)[2]) { distanceMin[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); } } -/* -e_MBL_TYPE e_mbl_type = e_MBL_OPTIMAL; - -void mbl_mode_set() { - switch (e_mbl_type) { - case e_MBL_OPTIMAL: e_mbl_type = e_MBL_PREC; break; - case e_MBL_PREC: e_mbl_type = e_MBL_FAST; break; - case e_MBL_FAST: e_mbl_type = e_MBL_OPTIMAL; break; - default: e_mbl_type = e_MBL_OPTIMAL; break; - } - eeprom_update_byte((uint8_t*)EEPROM_MBL_TYPE,(uint8_t)e_mbl_type); -} - -void mbl_mode_init() { - uint8_t mbl_type = eeprom_read_byte((uint8_t*)EEPROM_MBL_TYPE); - if (mbl_type == 0xFF) e_mbl_type = e_MBL_OPTIMAL; - else e_mbl_type = mbl_type; -} -*/ void mbl_settings_init() { //3x3 mesh; 3 Z-probes on each point, magnet elimination on diff --git a/Firmware/mesh_bed_calibration.h b/Firmware/mesh_bed_calibration.h index 02b97cc2d..fcfa9527b 100644 --- a/Firmware/mesh_bed_calibration.h +++ b/Firmware/mesh_bed_calibration.h @@ -201,15 +201,7 @@ extern void babystep_reset(); extern void count_xyz_details(float (&distanceMin)[2]); extern bool sample_z(); -/* -typedef enum -{ - e_MBL_FAST, e_MBL_OPTIMAL, e_MBL_PREC -} e_MBL_TYPE; -*/ -//extern e_MBL_TYPE e_mbl_type; -//extern void mbl_mode_set(); -//extern void mbl_mode_init(); + extern void mbl_settings_init(); extern bool mbl_point_measurement_valid(uint8_t ix, uint8_t iy, uint8_t meas_points, bool zigzag); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d0c33ea96..b92016bb7 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -24,7 +24,6 @@ #include "mesh_bed_leveling.h" #include "mesh_bed_calibration.h" -//#include "Configuration.h" #include "cmdqueue.h" #include "Filament_sensor.h" @@ -95,8 +94,6 @@ static_assert(sizeof(STR_SEPARATOR) == LCD_WIDTH + 1, "separator length must be /** forward declarations **/ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg); -// void copy_and_scalePID_i(); -// void copy_and_scalePID_d(); /* Different menus */ #if (LANG_MODE != 0) @@ -104,7 +101,6 @@ static void lcd_language_menu(); #endif static void lcd_main_menu(); static void lcd_tune_menu(); -//static void lcd_move_menu(); static void lcd_settings_menu(); static void lcd_calibration_menu(); static void lcd_control_temperature_menu(); @@ -1593,13 +1589,6 @@ static void lcd_support_menu() #if (FW_DEV_VERSION != FW_VERSION_GOLD) && (FW_DEV_VERSION != FW_VERSION_RC) MENU_ITEM_BACK_P(PSTR(" repo " FW_REPOSITORY)); #endif - // Ideally this block would be optimized out by the compiler. -/* const uint8_t fw_string_len = strlen_P(FW_VERSION_STR_P()); - if (fw_string_len < 6) { - MENU_ITEM_BACK_P(PSTR(MSG_FW_VERSION " - " FW_version)); - } else { - MENU_ITEM_BACK_P(PSTR("FW - " FW_version)); - }*/ MENU_ITEM_BACK_P(_n("prusa3d.com"));////MSG_PRUSA3D c=18 MENU_ITEM_BACK_P(_n("forum.prusa3d.com"));////MSG_PRUSA3D_FORUM c=18 @@ -3392,10 +3381,7 @@ static void lcd_silent_mode_set() { // Wait until the planner queue is drained and the stepper routine achieves // an idle state. st_synchronize(); - if (tmc2130_wait_standstill_xy(1000)) {} -// MYSERIAL.print("standstill OK"); -// else -// MYSERIAL.print("standstill NG!"); + tmc2130_wait_standstill_xy(1000); cli(); tmc2130_mode = (SilentModeMenu != SILENT_MODE_NORMAL)?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL; update_mode_profile(); @@ -4171,29 +4157,6 @@ while (0) #define SETTINGS_MMU_MODE #endif //MMU_FORCE_STEALTH_MODE -/* -#define SETTINGS_MBL_MODE \ -do\ -{\ - switch(e_mbl_type)\ - {\ - case e_MBL_FAST:\ - MENU_ITEM_FUNCTION_P(_n("Mode [Fast]"),mbl_mode_set);\ - break; \ - case e_MBL_OPTIMAL:\ - MENU_ITEM_FUNCTION_P(_n("Mode [Optimal]"), mbl_mode_set); \ - break; \ - case e_MBL_PREC:\ - MENU_ITEM_FUNCTION_P(_n("Mode [Precise]"), mbl_mode_set); \ - break; \ - default:\ - MENU_ITEM_FUNCTION_P(_n("Mode [Optimal]"), mbl_mode_set); \ - break; \ - }\ -}\ -while (0) -*/ - #define SETTINGS_MMU_LOADING_TEST \ do\ {\ @@ -4384,12 +4347,12 @@ while (0) static void lcd_checking_menu(void) { -MENU_BEGIN(); -MENU_ITEM_BACK_P(_T(MSG_HW_SETUP)); -SETTINGS_MODE; -SETTINGS_MODEL; -SETTINGS_VERSION; -MENU_END(); + MENU_BEGIN(); + MENU_ITEM_BACK_P(_T(MSG_HW_SETUP)); + SETTINGS_MODE; + SETTINGS_MODEL; + SETTINGS_VERSION; + MENU_END(); } template @@ -4955,18 +4918,6 @@ void unload_filament(float unloadLength) eFilamentAction = FilamentAction::None; } -#include "xflash.h" - -#ifdef LCD_TEST -static void lcd_test_menu() -{ - XFLASH_SPI_ENTER(); - xflash_enable_wr(); - xflash_chip_erase(); - xflash_disable_wr(); -} -#endif //LCD_TEST - /// @brief Set print fan speed /// @param speed ranges from 0 to 255 static void lcd_selftest_setfan(const uint8_t speed) { @@ -5324,9 +5275,6 @@ static void lcd_main_menu() MENU_ITEM_SUBMENU_P(_i("Fail stats MMU"), lcd_menu_fails_stats_mmu);////MSG_MMU_FAIL_STATS c=18 } MENU_ITEM_SUBMENU_P(_i("Support"), lcd_support_menu);////MSG_SUPPORT c=18 -#ifdef LCD_TEST - MENU_ITEM_SUBMENU_P(_i("XFLASH init"), lcd_test_menu);////MSG_XFLASH c=18 -#endif //LCD_TEST MENU_END(); @@ -5528,7 +5476,6 @@ static void lcd_mesh_bed_leveling_settings() MENU_ITEM_TOGGLE(_T(MSG_Z_PROBE_NR), sToggle, mbl_probe_nr_toggle); MENU_ITEM_TOGGLE_P(_T(MSG_MAGNETS_COMP), (points_nr == 7) ? (magnet_elimination ? _T(MSG_ON): _T(MSG_OFF)) : _T(MSG_NA), mbl_magnets_elimination_toggle); MENU_END(); - //SETTINGS_MBL_MODE; } #ifdef LCD_BL_PIN From 9de2cbfe8eafebafbb47f7378caeaef8a424dc11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 22 Apr 2023 13:23:14 +0000 Subject: [PATCH 4/9] Fix an issue with crash_mode_switch toggling Proposed changes --- Firmware/ultralcd.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b92016bb7..90efb9f54 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3403,15 +3403,8 @@ static void lcd_silent_mode_set() { #ifdef TMC2130 static void crash_mode_switch() { - if (lcd_crash_detect_enabled()) - { - lcd_crash_detect_disable(); - } - else - { - lcd_crash_detect_enable(); - } - menu_back(); + if (lcd_crash_detect_enabled()) lcd_crash_detect_disable(); + else lcd_crash_detect_enable(); } #endif //TMC2130 From 5b7266fdf1d261fd9a27f311c94f57bb65a8e191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sun, 23 Apr 2023 09:43:23 +0000 Subject: [PATCH 5/9] Don't render message when printer is idle Guard the lcd_display_message_fullscreen_P call by blocks_queued(). If there are no planned moves, there is no need to render this message, it creates a weird LCD draw noticable by the user. Change in memory: Flash: +10 bytes SRAM: 0 bytes --- Firmware/ultralcd.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 90efb9f54..6c68fe38a 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3377,15 +3377,18 @@ static void lcd_silent_mode_set() { } eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); #ifdef TMC2130 - lcd_display_message_fullscreen_P(_i("Mode change in progress..."));////MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 - // Wait until the planner queue is drained and the stepper routine achieves - // an idle state. - st_synchronize(); + if (blocks_queued()) + { + lcd_display_message_fullscreen_P(_i("Mode change in progress..."));////MSG_MODE_CHANGE_IN_PROGRESS c=20 r=3 + // Wait until the planner queue is drained and the stepper routine achieves + // an idle state. + st_synchronize(); + } tmc2130_wait_standstill_xy(1000); - cli(); - tmc2130_mode = (SilentModeMenu != SILENT_MODE_NORMAL)?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL; - update_mode_profile(); - tmc2130_init(TMCInitParams(false, FarmOrUserECool())); + cli(); + tmc2130_mode = (SilentModeMenu != SILENT_MODE_NORMAL)?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL; + update_mode_profile(); + tmc2130_init(TMCInitParams(false, FarmOrUserECool())); // We may have missed a stepper timer interrupt due to the time spent in tmc2130_init. // Be safe than sorry, reset the stepper timer before re-enabling interrupts. st_reset_timer(); From 67f0fe0fceb3fccee54990e4e7ff56643ec61f03 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 23 Apr 2023 23:25:19 +0200 Subject: [PATCH 6/9] Remove AUTOTEMP menu items They are commented out and broken anyway --- Firmware/ultralcd.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 6c68fe38a..0d1430fb5 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5515,13 +5515,6 @@ static void lcd_control_temperature_menu() MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 3); #endif MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255); -#if defined AUTOTEMP && (TEMP_SENSOR_0 != 0) -//MENU_ITEM_EDIT removed, following code must be redesigned if AUTOTEMP enabled - MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled); - MENU_ITEM_EDIT(float3, _n(" \xdf Min"), &autotemp_min, 0, HEATER_0_MAXTEMP - 10); - MENU_ITEM_EDIT(float3, _n(" \xdf Max"), &autotemp_max, 0, HEATER_0_MAXTEMP - 10); - MENU_ITEM_EDIT(float32, _n(" \xdf Fact"), &autotemp_factor, 0.0, 1.0); -#endif MENU_END(); } From 4a2a89cb742397cd2642370446d7d9cd807888c4 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 23 Apr 2023 23:25:35 +0200 Subject: [PATCH 7/9] Remove stupid comments from older bad code --- Firmware/ultralcd.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0d1430fb5..c6bbcc886 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5390,20 +5390,20 @@ static void lcd_tune_menu() SilentModeMenu = eeprom_read_byte((uint8_t*) EEPROM_SILENT); MENU_BEGIN(); - MENU_ITEM_BACK_P(_T(MSG_MAIN)); //1 - MENU_ITEM_EDIT_int3_P(_i("Speed"), &feedmultiply, 10, 999);//2////MSG_SPEED c=15 + MENU_ITEM_BACK_P(_T(MSG_MAIN)); + MENU_ITEM_EDIT_int3_P(_i("Speed"), &feedmultiply, 10, 999);////MSG_SPEED c=15 - MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10);//3 + MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 10); - MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255);//5 - MENU_ITEM_EDIT_int3_P(_i("Flow"), &extrudemultiply, 10, 999);//6////MSG_FLOW c=15 + MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255); + MENU_ITEM_EDIT_int3_P(_i("Flow"), &extrudemultiply, 10, 999);////MSG_FLOW c=15 #ifdef LA_LIVE_K - MENU_ITEM_EDIT_advance_K();//7 + MENU_ITEM_EDIT_advance_K(); #endif #ifdef FILAMENTCHANGEENABLE if (!farm_mode) - MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8 + MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change); #endif #ifdef FILAMENT_SENSOR From c83646743f5bfb49a9aa4478009cd47d3a31522c Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 23 Apr 2023 23:48:11 +0200 Subject: [PATCH 8/9] Deduplicate MMU settings Flash: -58B SRAM: 0B --- Firmware/ultralcd.cpp | 120 ++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 76 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c6bbcc886..455f8b817 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4054,27 +4054,17 @@ static void lcd_fsensor_settings_menu() { #endif //FILAMENT_SENSOR -static void settingsSpoolJoin() +static void menuitems_MMU_settings_common() { MENU_ITEM_TOGGLE_P(MSG_SPOOL_JOIN, SpoolJoin::spooljoin.isSpoolJoinEnabled() ? _T(MSG_ON) : _T(MSG_OFF), SpoolJoin::spooljoin.toggleSpoolJoin); -} - -#define SETTINGS_SPOOLJOIN \ -do\ -{\ - settingsSpoolJoin();\ -}\ -while(0)\ #ifdef MMU_HAS_CUTTER -static void settingsCutter() -{ - if (EEPROM_MMU_CUTTER_ENABLED_enabled == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + if (EEPROM_MMU_CUTTER_ENABLED_enabled == eeprom_read_byte((uint8_t *)EEPROM_MMU_CUTTER_ENABLED)) { MENU_ITEM_TOGGLE_P(_T(MSG_CUTTER), _T(MSG_ON), lcd_cutter_enabled); } #ifdef MMU_ALWAYS_CUT - else if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED)) + else if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t *)EEPROM_MMU_CUTTER_ENABLED)) { MENU_ITEM_TOGGLE_P(_T(MSG_CUTTER), _T(MSG_ALWAYS), lcd_cutter_enabled); } @@ -4083,17 +4073,12 @@ static void settingsCutter() { MENU_ITEM_TOGGLE_P(_T(MSG_CUTTER), _T(MSG_OFF), lcd_cutter_enabled); } -} +#endif // MMU_HAS_CUTTER -#define SETTINGS_CUTTER \ -do\ -{\ - settingsCutter();\ -}\ -while(0) -#else -#define SETTINGS_CUTTER -#endif //MMU_HAS_CUTTER +#ifndef MMU_FORCE_STEALTH_MODE + MENU_ITEM_TOGGLE_P(_T(MSG_MMU_MODE), eeprom_read_byte((uint8_t *)EEPROM_MMU_STEALTH) ? _T(MSG_STEALTH) : _T(MSG_NORMAL), lcd_mmu_mode_toggle); +#endif // MMU_FORCE_STEALTH_MODE +} static void mmu_enable_switch() { @@ -4109,29 +4094,38 @@ static void mmu_enable_switch() } } -static void mmu_reset() +static void SETTINGS_SILENT_MODE() { - MMU2::mmu2.Reset(MMU2::MMU2::ResetForm::Software); -} - -static void SETTINGS_SILENT_MODE() { - if (!farm_mode) { //dont show in menu if we are in farm mode + if (!farm_mode) + { // dont show in menu if we are in farm mode #ifdef TMC2130 - if (eeprom_read_byte((uint8_t*)EEPROM_SILENT) == SILENT_MODE_NORMAL) { - MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_NORMAL), lcd_silent_mode_set); - MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), lcd_crash_detect_enabled() ? _T(MSG_ON) : _T(MSG_OFF), crash_mode_switch); - } else { - MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_STEALTH), lcd_silent_mode_set); - MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), NULL, lcd_crash_mode_info); + if (eeprom_read_byte((uint8_t *)EEPROM_SILENT) == SILENT_MODE_NORMAL) + { + MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_NORMAL), lcd_silent_mode_set); + MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), lcd_crash_detect_enabled() ? _T(MSG_ON) : _T(MSG_OFF), crash_mode_switch); } -#else //TMC2130 - switch (eeprom_read_byte((uint8_t*)EEPROM_SILENT)) { - case SILENT_MODE_POWER: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set); break; - case SILENT_MODE_SILENT: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_SILENT), lcd_silent_mode_set); break; - case SILENT_MODE_AUTO: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_AUTO_POWER), lcd_silent_mode_set); break; - default: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set); break; // (probably) not needed - } -#endif //TMC2130 + else + { + MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_STEALTH), lcd_silent_mode_set); + MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), NULL, lcd_crash_mode_info); + } +#else // TMC2130 + switch (eeprom_read_byte((uint8_t *)EEPROM_SILENT)) + { + case SILENT_MODE_POWER: + MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set); + break; + case SILENT_MODE_SILENT: + MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_SILENT), lcd_silent_mode_set); + break; + case SILENT_MODE_AUTO: + MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_AUTO_POWER), lcd_silent_mode_set); + break; + default: + MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set); + break; // (probably) not needed + } +#endif // TMC2130 } } @@ -4139,27 +4133,6 @@ void SETTINGS_FANS_CHECK() { MENU_ITEM_TOGGLE_P(_T(MSG_FANS_CHECK), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check); } -#ifndef MMU_FORCE_STEALTH_MODE -#define SETTINGS_MMU_MODE \ -do\ -{\ - if (MMU2::mmu2.Enabled())\ - {\ - MENU_ITEM_TOGGLE_P(_T(MSG_MMU_MODE), eeprom_read_byte((uint8_t*)EEPROM_MMU_STEALTH) ? _T(MSG_STEALTH) : _T(MSG_NORMAL), lcd_mmu_mode_toggle);\ - }\ -}\ -while (0) -#else //MMU_FORCE_STEALTH_MODE -#define SETTINGS_MMU_MODE -#endif //MMU_FORCE_STEALTH_MODE - -#define SETTINGS_MMU_LOADING_TEST \ -do\ -{\ - MENU_ITEM_SUBMENU_P(_T(MSG_LOADING_TEST), mmu_loading_test_menu); \ -}\ -while (0) - #define SETTINGS_SOUND \ do\ {\ @@ -4446,18 +4419,15 @@ static void lcd_settings_menu() #endif //FILAMENT_SENSOR MENU_ITEM_TOGGLE_P(PSTR("MMU"), eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED) ? _T(MSG_ON) : _T(MSG_OFF), mmu_enable_switch); + if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) + { // Communication with MMU not required to reset MMU + MENU_ITEM_FUNCTION_P(PSTR("Reset MMU"), []() { MMU2::mmu2.Reset(MMU2::MMU2::ResetForm::Software); }); + } if (MMU2::mmu2.Enabled()) { // Only show menus when communicating with MMU - SETTINGS_SPOOLJOIN; - SETTINGS_CUTTER; - SETTINGS_MMU_MODE; - SETTINGS_MMU_LOADING_TEST; - } - - if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) - { // Communication with MMU not required to reset MMU - MENU_ITEM_FUNCTION_P(PSTR("Reset MMU"), mmu_reset); + menuitems_MMU_settings_common(); + MENU_ITEM_SUBMENU_P(_T(MSG_LOADING_TEST), mmu_loading_test_menu); } SETTINGS_FANS_CHECK(); @@ -5412,13 +5382,11 @@ static void lcd_tune_menu() if (MMU2::mmu2.Enabled()) { - SETTINGS_SPOOLJOIN; - SETTINGS_CUTTER; + menuitems_MMU_settings_common(); } SETTINGS_FANS_CHECK(); SETTINGS_SILENT_MODE(); - SETTINGS_MMU_MODE; SETTINGS_SOUND; #ifdef LCD_BL_PIN if (backlightSupport) From e662ef276e71a6e7ea4e6492bf8be5ed14350174 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 23 Apr 2023 23:51:29 +0200 Subject: [PATCH 9/9] Deduplicate temperature settings Flash: -52B SRAM: 0B --- Firmware/ultralcd.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 455f8b817..6060302fa 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4129,6 +4129,16 @@ static void SETTINGS_SILENT_MODE() } } +static void menuitems_temperature_common() { +#if TEMP_SENSOR_0 != 0 + MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); +#endif +#if TEMP_SENSOR_BED != 0 + MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 5); +#endif + MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255); +} + void SETTINGS_FANS_CHECK() { MENU_ITEM_TOGGLE_P(_T(MSG_FANS_CHECK), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check); } @@ -5363,10 +5373,8 @@ static void lcd_tune_menu() MENU_ITEM_BACK_P(_T(MSG_MAIN)); MENU_ITEM_EDIT_int3_P(_i("Speed"), &feedmultiply, 10, 999);////MSG_SPEED c=15 - MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); - MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 10); + menuitems_temperature_common(); - MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255); MENU_ITEM_EDIT_int3_P(_i("Flow"), &extrudemultiply, 10, 999);////MSG_FLOW c=15 #ifdef LA_LIVE_K MENU_ITEM_EDIT_advance_K(); @@ -5476,13 +5484,8 @@ static void lcd_control_temperature_menu() { MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_SETTINGS)); -#if TEMP_SENSOR_0 != 0 - MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10); -#endif -#if TEMP_SENSOR_BED != 0 - MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 3); -#endif - MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255); + + menuitems_temperature_common(); MENU_END(); }