Skip to content

Commit

Permalink
🚸 Clear "heating/cooling" message on temp reached
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkyhead authored and LCh-77 committed Jul 19, 2022
1 parent 00065ff commit 40a6953
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Marlin/src/gcode/temp/M104_M109.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ void GcodeSuite::M104_M109(const bool isM109) {
#endif

if (thermalManager.isHeatingHotend(target_extruder) || !no_wait_for_cooling)
thermalManager.set_heating_message(target_extruder);
thermalManager.set_heating_message(target_extruder, !isM109 && got_temp);
}

TERN_(AUTOTEMP, planner.autotemp_M104_M109());
Expand Down
5 changes: 5 additions & 0 deletions Marlin/src/gcode/temp/M140_M190.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ void GcodeSuite::M140_M190(const bool isM190) {

if (isM190)
thermalManager.wait_for_bed(no_wait_for_cooling);
else
ui.set_status_reset_fn([]{
const celsius_t c = thermalManager.degTargetBed();
return c < 30 || thermalManager.degBedNear(c);
});
}

#endif // HAS_HEATED_BED
6 changes: 6 additions & 0 deletions Marlin/src/lcd/marlinui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
#endif
char MarlinUI::status_message[MAX_MESSAGE_LENGTH + 1];
uint8_t MarlinUI::alert_level; // = 0
statusResetFunc_t MarlinUI::status_reset_callback; // = nullptr
#endif

#if ENABLED(LCD_SET_PROGRESS_MANUALLY)
Expand Down Expand Up @@ -627,6 +628,9 @@ void MarlinUI::init() {

#endif // BASIC_PROGRESS_BAR

if (status_reset_callback && (*status_reset_callback)())
reset_status();

#if HAS_MARLINUI_MENU
if (use_click()) {
#if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
Expand Down Expand Up @@ -1515,6 +1519,8 @@ void MarlinUI::init() {

UNUSED(persist);

set_status_reset_fn();

#if HAS_WIRED_LCD

#if BASIC_PROGRESS_BAR || BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
Expand Down
6 changes: 6 additions & 0 deletions Marlin/src/lcd/marlinui.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@

#define START_OF_UTF8_CHAR(C) (((C) & 0xC0u) != 0x80U)

typedef bool (*statusResetFunc_t)();

#if HAS_WIRED_LCD

enum LCDViewAction : uint8_t {
Expand Down Expand Up @@ -352,11 +354,15 @@ class MarlinUI {
static void reset_status(const bool no_welcome=false);
static void set_alert_status(FSTR_P const fstr);
static void reset_alert_level() { alert_level = 0; }

static statusResetFunc_t status_reset_callback;
static void set_status_reset_fn(const statusResetFunc_t fn=nullptr) { status_reset_callback = fn; }
#else
static constexpr bool has_status() { return false; }
static void reset_status(const bool=false) {}
static void set_alert_status(FSTR_P const) {}
static void reset_alert_level() {}
static void set_status_reset_fn(const statusResetFunc_t=nullptr) {}
#endif

static void set_status(const char * const cstr, const bool persist=false);
Expand Down
10 changes: 9 additions & 1 deletion Marlin/src/module/temperature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3631,7 +3631,7 @@ void Temperature::isr() {
#endif

#if HAS_HOTEND && HAS_STATUS_MESSAGE
void Temperature::set_heating_message(const uint8_t e) {
void Temperature::set_heating_message(const uint8_t e, const bool isM104/*=false*/) {
const bool heating = isHeatingHotend(e);
ui.status_printf(0,
#if HAS_MULTI_HOTEND
Expand All @@ -3641,6 +3641,14 @@ void Temperature::isr() {
#endif
, heating ? GET_TEXT(MSG_HEATING) : GET_TEXT(MSG_COOLING)
);

if (isM104) {
static uint8_t wait_e; wait_e = e;
ui.set_status_reset_fn([]{
const celsius_t c = degTargetHotend(wait_e);
return c < 30 || degHotendNear(wait_e, c);
});
}
}
#endif

Expand Down
4 changes: 2 additions & 2 deletions Marlin/src/module/temperature.h
Original file line number Diff line number Diff line change
Expand Up @@ -961,9 +961,9 @@ class Temperature {
#endif

#if HAS_HOTEND && HAS_STATUS_MESSAGE
static void set_heating_message(const uint8_t e);
static void set_heating_message(const uint8_t e, const bool isM104=false);
#else
static void set_heating_message(const uint8_t) {}
static void set_heating_message(const uint8_t, const bool=false) {}
#endif

#if HAS_MARLINUI_MENU && HAS_TEMPERATURE
Expand Down

0 comments on commit 40a6953

Please sign in to comment.