From 4b4a4ba16357c8ad38e478fe9364cb404c5c33d4 Mon Sep 17 00:00:00 2001 From: InsanityAutomation Date: Sat, 21 Aug 2021 14:17:19 -0400 Subject: [PATCH] AdvancedPauseExtUIMessaging --- Marlin/Configuration_adv.h | 2 ++ Marlin/src/feature/pause.cpp | 7 ++++++- Marlin/src/lcd/extui/Creality/Creality_DWIN.h | 2 +- Marlin/src/lcd/extui/ui_api.cpp | 2 ++ Marlin/src/lcd/extui/ui_api.h | 2 ++ Marlin/src/lcd/marlinui.cpp | 6 ++++-- 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index e0361baf29..da6ec68fe2 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2550,6 +2550,8 @@ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety. #define FILAMENT_CHANGE_ALERT_BEEPS 2 // Number of alert beeps to play when a response is needed. #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. + #define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is made again + #define FILAMENT_CHANGE_FAST_RESUME // Reduce number of waits by not prompting again post timeout before continuing #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. //#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 37f46edcf1..c606241e70 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -200,6 +200,9 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load while (wait_for_user) { impatient_beep(max_beep_count); + #if BOTH(FILAMENT_CHANGE_RESUME_ON_INSERT, FILAMENT_RUNOUT_SENSOR) + if (READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE) wait_for_user = false; + #endif idle_no_sleep(); } } @@ -537,7 +540,9 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep HOTEND_LOOP() thermalManager.heater_idle[e].start(nozzle_timeout); TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Reheat Done"), CONTINUE_STR)); TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(PSTR("Reheat finished."))); - wait_for_user = true; + #if DISABLED(FILAMENT_CHANGE_FAST_RESUME) + wait_for_user = true; + #endif nozzle_timed_out = false; first_impatient_beep(max_beep_count); diff --git a/Marlin/src/lcd/extui/Creality/Creality_DWIN.h b/Marlin/src/lcd/extui/Creality/Creality_DWIN.h index 2872177ea5..ba1352b90b 100644 --- a/Marlin/src/lcd/extui/Creality/Creality_DWIN.h +++ b/Marlin/src/lcd/extui/Creality/Creality_DWIN.h @@ -47,7 +47,7 @@ namespace ExtUI { #define FileNum MaxFileNumber #define FileNameLen TEXTBYTELEN -#define SizeofDatabuf 26 +#define SizeofDatabuf 46 /*************Register and Variable addr*****************/ #define RegAddr_W 0x80 diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index c6ae40803c..17980b1e3a 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -1037,6 +1037,8 @@ namespace ExtUI { #if M600_PURGE_MORE_RESUMABLE void setPauseMenuResponse(PauseMenuResponse response) { pause_menu_response = response; } + PauseMessage pauseModeStatus = PAUSE_MESSAGE_STATUS; + PauseMode getPauseMode() { return pause_mode;} #endif void printFile(const char *filename) { diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index faa6c8f41a..a57186747e 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -234,6 +234,8 @@ namespace ExtUI { #if M600_PURGE_MORE_RESUMABLE void setPauseMenuResponse(PauseMenuResponse); + extern PauseMessage pauseModeStatus; + PauseMode getPauseMode(); #endif #if ENABLED(LIN_ADVANCE) diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 3ced165dad..e4fb45e2a1 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -1679,9 +1679,11 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/ ) { - if (mode == PAUSE_MODE_SAME) - return; + //if (mode == PAUSE_MODE_SAME) + //return; + SERIAL_ECHOPAIR("PauseMsg=", message); pause_mode = mode; + ExtUI::pauseModeStatus = message; switch (message) { case PAUSE_MESSAGE_PARKING: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_PAUSE_PRINT_PARKING)); case PAUSE_MESSAGE_CHANGING: ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_FILAMENT_CHANGE_INIT));