Skip to content

Commit be13220

Browse files
InsanityAutomationthinkyhead
authored andcommitted
📺 ExtUI pause state response (#22164)
1 parent 78c2eb6 commit be13220

File tree

6 files changed

+73
-19
lines changed

6 files changed

+73
-19
lines changed

Marlin/src/gcode/gcode.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ class GcodeSuite {
424424
static uint8_t host_keepalive_interval;
425425

426426
static void host_keepalive();
427+
static inline bool host_keepalive_is_paused() { return busy_state >= PAUSED_FOR_USER; }
427428

428429
#define KEEPALIVE_STATE(N) REMEMBER(_KA_, gcode.busy_state, gcode.N)
429430
#else

Marlin/src/inc/Conditionals_post.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3167,7 +3167,7 @@
31673167
* Advanced Pause - Filament Change
31683168
*/
31693169
#if ENABLED(ADVANCED_PAUSE_FEATURE)
3170-
#if HAS_LCD_MENU || BOTH(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT)
3170+
#if EITHER(HAS_LCD_MENU, EXTENSIBLE_UI) || BOTH(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT)
31713171
#define M600_PURGE_MORE_RESUMABLE 1
31723172
#endif
31733173
#ifndef FILAMENT_CHANGE_SLOW_LOAD_LENGTH

Marlin/src/lcd/extui/ui_api.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@
102102
#include "../../feature/host_actions.h"
103103
#endif
104104

105+
#if M600_PURGE_MORE_RESUMABLE
106+
#include "../../feature/pause.h"
107+
#endif
108+
105109
namespace ExtUI {
106110
static struct {
107111
uint8_t printer_killed : 1;
@@ -381,7 +385,8 @@ namespace ExtUI {
381385
return !thermalManager.tooColdToExtrude(extruder - E0);
382386
}
383387

384-
GcodeSuite::MarlinBusyState getMachineBusyState() { return TERN0(HOST_KEEPALIVE_FEATURE, GcodeSuite::busy_state); }
388+
GcodeSuite::MarlinBusyState getHostKeepaliveState() { return TERN0(HOST_KEEPALIVE_FEATURE, gcode.busy_state); }
389+
bool getHostKeepaliveIsPaused() { return TERN0(HOST_KEEPALIVE_FEATURE, gcode.host_keepalive_is_paused()); }
385390

386391
#if HAS_SOFTWARE_ENDSTOPS
387392
bool getSoftEndstopState() { return soft_endstop._enabled; }
@@ -1025,9 +1030,15 @@ namespace ExtUI {
10251030
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
10261031
}
10271032

1028-
bool awaitingUserConfirm() { return TERN0(HAS_RESUME_CONTINUE, wait_for_user); }
1033+
bool awaitingUserConfirm() {
1034+
return TERN0(HAS_RESUME_CONTINUE, wait_for_user) || getHostKeepaliveIsPaused();
1035+
}
10291036
void setUserConfirmed() { TERN_(HAS_RESUME_CONTINUE, wait_for_user = false); }
10301037

1038+
#if M600_PURGE_MORE_RESUMABLE
1039+
void setPauseMenuResponse(PauseMenuResponse response) { pause_menu_response = response; }
1040+
#endif
1041+
10311042
void printFile(const char *filename) {
10321043
TERN(SDSUPPORT, card.openAndPrintFile(filename), UNUSED(filename));
10331044
}

Marlin/src/lcd/extui/ui_api.h

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
#include "../../inc/MarlinConfig.h"
4646
#include "../marlinui.h"
4747
#include "../../gcode/gcode.h"
48+
#if M600_PURGE_MORE_RESUMABLE
49+
#include "../../feature/pause.h"
50+
#endif
4851

4952
namespace ExtUI {
5053

@@ -79,7 +82,8 @@ namespace ExtUI {
7982
void injectCommands(char * const);
8083
bool commandsInQueue();
8184

82-
GcodeSuite::MarlinBusyState getMachineBusyState();
85+
GcodeSuite::MarlinBusyState getHostKeepaliveState();
86+
bool getHostKeepaliveIsPaused();
8387

8488
bool isHeaterIdle(const heater_t);
8589
bool isHeaterIdle(const extruder_t);
@@ -220,22 +224,26 @@ namespace ExtUI {
220224
void setFeedrate_mm_s(const feedRate_t);
221225
void setMinFeedrate_mm_s(const feedRate_t);
222226
void setMinTravelFeedrate_mm_s(const feedRate_t);
223-
void setPrintingAcceleration_mm_s2(const_float_t );
224-
void setRetractAcceleration_mm_s2(const_float_t );
225-
void setTravelAcceleration_mm_s2(const_float_t );
226-
void setFeedrate_percent(const_float_t );
227+
void setPrintingAcceleration_mm_s2(const_float_t);
228+
void setRetractAcceleration_mm_s2(const_float_t);
229+
void setTravelAcceleration_mm_s2(const_float_t);
230+
void setFeedrate_percent(const_float_t);
227231
void setFlow_percent(const int16_t, const extruder_t);
228232
bool awaitingUserConfirm();
229233
void setUserConfirmed();
230234

235+
#if M600_PURGE_MORE_RESUMABLE
236+
void setPauseMenuResponse(PauseMenuResponse);
237+
#endif
238+
231239
#if ENABLED(LIN_ADVANCE)
232240
float getLinearAdvance_mm_mm_s(const extruder_t);
233241
void setLinearAdvance_mm_mm_s(const_float_t, const extruder_t);
234242
#endif
235243

236244
#if HAS_JUNCTION_DEVIATION
237245
float getJunctionDeviation_mm();
238-
void setJunctionDeviation_mm(const_float_t );
246+
void setJunctionDeviation_mm(const_float_t);
239247
#else
240248
float getAxisMaxJerk_mm_s(const axis_t);
241249
float getAxisMaxJerk_mm_s(const extruder_t);
@@ -262,7 +270,7 @@ namespace ExtUI {
262270
#endif
263271

264272
float getZOffset_mm();
265-
void setZOffset_mm(const_float_t );
273+
void setZOffset_mm(const_float_t);
266274

267275
#if HAS_BED_PROBE
268276
float getProbeOffset_mm(const axis_t);
@@ -274,11 +282,11 @@ namespace ExtUI {
274282
void setAxisBacklash_mm(const_float_t, const axis_t);
275283

276284
float getBacklashCorrection_percent();
277-
void setBacklashCorrection_percent(const_float_t );
285+
void setBacklashCorrection_percent(const_float_t);
278286

279287
#ifdef BACKLASH_SMOOTHING_MM
280288
float getBacklashSmoothing_mm();
281-
void setBacklashSmoothing_mm(const_float_t );
289+
void setBacklashSmoothing_mm(const_float_t);
282290
#endif
283291
#endif
284292

@@ -290,7 +298,7 @@ namespace ExtUI {
290298

291299
#if HAS_FILAMENT_RUNOUT_DISTANCE
292300
float getFilamentRunoutDistance_mm();
293-
void setFilamentRunoutDistance_mm(const_float_t );
301+
void setFilamentRunoutDistance_mm(const_float_t);
294302
#endif
295303
#endif
296304

@@ -300,7 +308,7 @@ namespace ExtUI {
300308

301309
#if DISABLED(CASE_LIGHT_NO_BRIGHTNESS)
302310
float getCaseLightBrightness_percent();
303-
void setCaseLightBrightness_percent(const_float_t );
311+
void setCaseLightBrightness_percent(const_float_t);
304312
#endif
305313
#endif
306314

@@ -309,15 +317,15 @@ namespace ExtUI {
309317
float getPIDValues_Ki(const extruder_t);
310318
float getPIDValues_Kd(const extruder_t);
311319
void setPIDValues(const_float_t, const_float_t , const_float_t , extruder_t);
312-
void startPIDTune(const_float_t, extruder_t);
320+
void startPIDTune(const celsius_t, extruder_t);
313321
#endif
314322

315323
#if ENABLED(PIDTEMPBED)
316324
float getBedPIDValues_Kp();
317325
float getBedPIDValues_Ki();
318326
float getBedPIDValues_Kd();
319-
void setBedPIDValues(const_float_t, const_float_t , const_float_t );
320-
void startBedPIDTune(const_float_t );
327+
void setBedPIDValues(const_float_t, const_float_t , const_float_t);
328+
void startBedPIDTune(const celsius_t);
321329
#endif
322330

323331
/**

Marlin/src/lcd/marlinui.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1654,6 +1654,40 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
16541654
}
16551655
#endif
16561656

1657+
#if BOTH(EXTENSIBLE_UI, ADVANCED_PAUSE_FEATURE)
1658+
1659+
void MarlinUI::pause_show_message(
1660+
const PauseMessage message,
1661+
const PauseMode mode/*=PAUSE_MODE_SAME*/,
1662+
const uint8_t extruder/*=active_extruder*/
1663+
) {
1664+
if (mode == PAUSE_MODE_SAME)
1665+
return;
1666+
pause_mode = mode;
1667+
switch (message) {
1668+
case PAUSE_MESSAGE_PARKING: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_PAUSE_PRINT_PARKING));
1669+
case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_INIT));
1670+
case PAUSE_MESSAGE_UNLOAD: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_UNLOAD));
1671+
case PAUSE_MESSAGE_WAITING: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_ADVANCED_PAUSE_WAITING));
1672+
case PAUSE_MESSAGE_INSERT: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_INSERT));
1673+
case PAUSE_MESSAGE_LOAD: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_LOAD));
1674+
case PAUSE_MESSAGE_PURGE:
1675+
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
1676+
ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_CONT_PURGE));
1677+
#else
1678+
ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_PURGE));
1679+
#endif
1680+
case PAUSE_MESSAGE_RESUME: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_RESUME));
1681+
case PAUSE_MESSAGE_HEAT: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_HEAT));
1682+
case PAUSE_MESSAGE_HEATING: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_HEATING));
1683+
case PAUSE_MESSAGE_OPTION: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_OPTION_HEADER));
1684+
case PAUSE_MESSAGE_STATUS:
1685+
default: break;
1686+
}
1687+
}
1688+
1689+
#endif
1690+
16571691
#if ENABLED(EEPROM_SETTINGS)
16581692

16591693
#if HAS_LCD_MENU

Marlin/src/lcd/marlinui.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
#include "../module/printcounter.h"
5656
#endif
5757

58-
#if BOTH(HAS_LCD_MENU, ADVANCED_PAUSE_FEATURE)
58+
#if ENABLED(ADVANCED_PAUSE_FEATURE) && EITHER(HAS_LCD_MENU, EXTENSIBLE_UI)
5959
#include "../feature/pause.h"
6060
#include "../module/motion.h" // for active_extruder
6161
#endif
@@ -544,7 +544,7 @@ class MarlinUI {
544544
static inline bool use_click() { return false; }
545545
#endif
546546

547-
#if BOTH(HAS_LCD_MENU, ADVANCED_PAUSE_FEATURE)
547+
#if ENABLED(ADVANCED_PAUSE_FEATURE) && EITHER(HAS_LCD_MENU, EXTENSIBLE_UI)
548548
static void pause_show_message(const PauseMessage message, const PauseMode mode=PAUSE_MODE_SAME, const uint8_t extruder=active_extruder);
549549
#else
550550
static inline void _pause_show_message() {}

0 commit comments

Comments
 (0)