From d2373b847a5093d45c9a61ca194df296e0dd8a08 Mon Sep 17 00:00:00 2001 From: InsanityAutomation Date: Mon, 11 Mar 2024 16:35:33 -0400 Subject: [PATCH] ExtUI calls, gcode edit, edit menus etc --- Marlin/src/gcode/lcd/M145.cpp | 5 +++++ Marlin/src/gcode/temp/M141_M191.cpp | 9 ++++++++- Marlin/src/lcd/extui/ui_api.cpp | 3 +++ Marlin/src/lcd/extui/ui_api.h | 3 +++ Marlin/src/lcd/language/language_en.h | 1 + Marlin/src/lcd/menu/menu_configuration.cpp | 3 +++ Marlin/src/lcd/menu/menu_temperature.cpp | 12 ++++++++++-- 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Marlin/src/gcode/lcd/M145.cpp b/Marlin/src/gcode/lcd/M145.cpp index 3cc6130dfd..a0aa340d0d 100644 --- a/Marlin/src/gcode/lcd/M145.cpp +++ b/Marlin/src/gcode/lcd/M145.cpp @@ -37,6 +37,7 @@ * S * H * B + * C * F */ void GcodeSuite::M145() { @@ -53,6 +54,10 @@ void GcodeSuite::M145() { if (parser.seenval('B')) mat.bed_temp = constrain(parser.value_int(), BED_MINTEMP, BED_MAX_TARGET); #endif + #if HAS_HEATED_CHAMBER + if (parser.seenval('C')) + mat.chamber_temp = constrain(parser.value_int(), CHAMBER_MINTEMP, CHAMBER_MAX_TARGET); + #endif #if HAS_FAN if (parser.seenval('F')) mat.fan_speed = constrain(parser.value_int(), 0, 255); diff --git a/Marlin/src/gcode/temp/M141_M191.cpp b/Marlin/src/gcode/temp/M141_M191.cpp index 81a078318a..3364fbc22e 100644 --- a/Marlin/src/gcode/temp/M141_M191.cpp +++ b/Marlin/src/gcode/temp/M141_M191.cpp @@ -39,9 +39,16 @@ */ void GcodeSuite::M141() { if (DEBUGGING(DRYRUN)) return; + // Accept 'I' if temperature presets are defined + #if HAS_PREHEAT + if (parser.seenval('I')) { + const uint8_t index = parser.value_byte(); + thermalManager.setTargetChamber(ui.material_preset[_MIN(index, PREHEAT_COUNT - 1)].chamber_temp); + return; + } + #endif if (parser.seenval('S')) { thermalManager.setTargetChamber(parser.value_celsius()); - #if ENABLED(PRINTJOB_TIMER_AUTOSTART) /** * Stop the timer at the end of print. Hotend, bed target, and chamber diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 2ba01a694d..c87c02a46d 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -790,6 +790,9 @@ namespace ExtUI { #if HAS_HEATED_BED uint16_t getMaterial_preset_B(const uint16_t index) { return ui.material_preset[index].bed_temp; } #endif + #if HAS_HEATED_CHAMBER + uint16_t getMaterial_preset_C(const uint16_t index) { return ui.material_preset[index].chamber_temp; } + #endif #endif feedRate_t getFeedrate_mm_s() { return feedrate_mm_s; } diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index 50ecd13d75..fae6f7d23a 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -188,6 +188,9 @@ namespace ExtUI { #if HAS_HEATED_BED uint16_t getMaterial_preset_B(const uint16_t); #endif + #if HAS_HEATED_CHAMBER + uint16_t getMaterial_preset_C(const uint16_t); + #endif #endif // IDEX Machine Mode diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 82fd637aa1..f0b7928854 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -132,6 +132,7 @@ namespace LanguageNarrow_en { LSTR MSG_PREHEAT_M_END_E = _UxGT("Preheat $ End ~"); LSTR MSG_PREHEAT_M_ALL = _UxGT("Preheat $ All"); LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preheat $ Bed"); + LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preheat $ Chmb"); LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preheat $ Conf"); LSTR MSG_PREHEAT_HOTEND = _UxGT("Preheat Hotend"); diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index bd5ed492a1..d44034cacd 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -418,6 +418,9 @@ void menu_advanced_settings(); #if HAS_HEATED_BED EDIT_ITEM(int3, MSG_BED, &ui.material_preset[m].bed_temp, BED_MINTEMP, BED_MAX_TARGET); #endif + #if HAS_HEATED_CHAMBER + EDIT_ITEM(int3, MSG_CHAMBER, &ui.material_preset[m].chamber_temp, CHAMBER_MINTEMP, CHAMBER_MAX_TARGET); + #endif #if ENABLED(EEPROM_SETTINGS) ACTION_ITEM(MSG_STORE_EEPROM, ui.store_settings); #endif diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp index db01032bbd..ed43d29905 100644 --- a/Marlin/src/lcd/menu/menu_temperature.cpp +++ b/Marlin/src/lcd/menu/menu_temperature.cpp @@ -55,7 +55,8 @@ if (indb >= 0 && ui.material_preset[indb].bed_temp > 0) setTargetBed(ui.material_preset[indb].bed_temp); #endif #if HAS_HEATED_CHAMBER - if (indb >= 0 && ui.material_preset[indb].chamber_temp > 0) setTargetChamber(ui.material_preset[indb].chamber_temp); + if ((indb >= 0 && ui.material_preset[indb].chamber_temp > 0) && (indh >= 0 && ui.material_preset[indh].hotend_temp > 0)) // Preheat all selected + setTargetChamber(ui.material_preset[indb].chamber_temp); #endif #if HAS_FAN if (indh >= 0) { @@ -77,6 +78,9 @@ #if HAS_HEATED_BED inline void _preheat_bed(const uint8_t m) { thermalManager.lcd_preheat(0, -1, m); } #endif + #if HAS_HEATED_CHAMBER + inline void _preheat_chamber(const uint8_t m) { thermalManager.setTargetChamber(ui.material_preset[m].chamber_temp); } + #endif #if HAS_COOLER inline void _precool_laser(const uint8_t m, const uint8_t e) { thermalManager.lcd_preheat(e, m, -1); } void do_precool_laser_m() { _precool_laser(editable.int8, thermalManager.temp_cooler.target); } @@ -110,7 +114,7 @@ #if HOTENDS == 1 - #if HAS_HEATED_BED + #if HAS_HEATED_BED || HAS_HEATED_CHAMBER ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M, []{ _preheat_both(editable.int8, 0); }); ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M_END, do_preheat_end_m); #else @@ -132,6 +136,10 @@ ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M_BEDONLY, []{ _preheat_bed(editable.int8); }); #endif + #if HAS_HEATED_CHAMBER + ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M_CHAMBER, []{ _preheat_chamber(editable.int8); }); + #endif + END_MENU(); }