More advanced pause tweaks (#12356)
* Followup to LCD_TIMEOUT_TO_STATUS=0 * Make continuous purge screen fit 20x4 * Unify purge message modes * Preserve last-set pause header mode
This commit is contained in:
parent
5a470d4a49
commit
e574f01568
18 changed files with 108 additions and 98 deletions
|
@ -369,7 +369,10 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
|
||||||
disable_e_steppers();
|
disable_e_steppers();
|
||||||
#endif
|
#endif
|
||||||
#if HAS_LCD_MENU && ENABLED(AUTO_BED_LEVELING_UBL)
|
#if HAS_LCD_MENU && ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
if (ubl.lcd_map_control) ubl.lcd_map_control = defer_return_to_status = false;
|
if (ubl.lcd_map_control) {
|
||||||
|
ubl.lcd_map_control = false;
|
||||||
|
set_defer_return_to_status(false);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ fil_change_settings_t fc_settings[EXTRUDERS];
|
||||||
*
|
*
|
||||||
* Returns 'true' if heating was completed, 'false' for abort
|
* Returns 'true' if heating was completed, 'false' for abort
|
||||||
*/
|
*/
|
||||||
static bool ensure_safe_temperature(const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT) {
|
static bool ensure_safe_temperature(const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_SAME) {
|
||||||
|
|
||||||
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||||
if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) {
|
if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) {
|
||||||
|
@ -134,23 +134,16 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
|
||||||
const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/
|
const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/
|
||||||
DXC_ARGS
|
DXC_ARGS
|
||||||
) {
|
) {
|
||||||
#if DISABLED(ULTIPANEL)
|
|
||||||
UNUSED(show_lcd);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!ensure_safe_temperature(mode)) {
|
if (!ensure_safe_temperature(mode)) {
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
if (show_lcd) // Show status screen
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS, mode);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pause_for_user) {
|
if (pause_for_user) {
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
if (show_lcd) // Show "insert filament"
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT, mode);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT, mode);
|
|
||||||
#endif
|
#endif
|
||||||
SERIAL_ECHO_START();
|
SERIAL_ECHO_START();
|
||||||
SERIAL_ECHOLNPGM(MSG_FILAMENT_CHANGE_INSERT);
|
SERIAL_ECHOLNPGM(MSG_FILAMENT_CHANGE_INSERT);
|
||||||
|
@ -173,8 +166,9 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
if (show_lcd) // Show "wait for load" message
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_LOAD, mode);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_LOAD, mode);
|
#else
|
||||||
|
UNUSED(show_lcd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DUAL_X_CARRIAGE)
|
#if ENABLED(DUAL_X_CARRIAGE)
|
||||||
|
@ -210,8 +204,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
|
||||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||||
|
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
if (show_lcd)
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_PURGE);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wait_for_user = true;
|
wait_for_user = true;
|
||||||
|
@ -225,8 +218,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
|
||||||
if (purge_length > 0) {
|
if (purge_length > 0) {
|
||||||
// "Wait for filament purge"
|
// "Wait for filament purge"
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
if (show_lcd)
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_PURGE);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_PURGE, mode);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Extrude filament to get into hotend
|
// Extrude filament to get into hotend
|
||||||
|
@ -238,7 +230,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
|
||||||
if (show_lcd) {
|
if (show_lcd) {
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
wait_for_user = false;
|
wait_for_user = false;
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_OPTION, mode);
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_OPTION);
|
||||||
while (advanced_pause_menu_response == ADVANCED_PAUSE_RESPONSE_WAIT_FOR) idle(true);
|
while (advanced_pause_menu_response == ADVANCED_PAUSE_RESPONSE_WAIT_FOR) idle(true);
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
}
|
}
|
||||||
|
@ -273,18 +265,16 @@ bool unload_filament(const float &unload_length, const bool show_lcd/*=false*/,
|
||||||
) {
|
) {
|
||||||
if (!ensure_safe_temperature(mode)) {
|
if (!ensure_safe_temperature(mode)) {
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
if (show_lcd) // Show status screen
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DISABLED(ULTIPANEL)
|
#if HAS_LCD_MENU
|
||||||
UNUSED(show_lcd);
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_UNLOAD, mode);
|
||||||
#else
|
#else
|
||||||
if (show_lcd)
|
UNUSED(show_lcd);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_UNLOAD, mode);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Retract filament
|
// Retract filament
|
||||||
|
@ -343,8 +333,9 @@ bool pause_print(const float &retract, const point_t &park_point, const float &u
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
if (show_lcd) // Show initial message
|
if (show_lcd) lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT, ADVANCED_PAUSE_MODE_PAUSE_PRINT);
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
|
#else
|
||||||
|
UNUSED(show_lcd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!DEBUGGING(DRYRUN) && unload_length && thermalManager.targetTooColdToExtrude(active_extruder)) {
|
if (!DEBUGGING(DRYRUN) && unload_length && thermalManager.targetTooColdToExtrude(active_extruder)) {
|
||||||
|
@ -549,7 +540,7 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
|
||||||
load_filament(slow_load_length, fast_load_length, purge_length, max_beep_count, true, nozzle_timed_out, ADVANCED_PAUSE_MODE_PAUSE_PRINT DXC_PASS);
|
load_filament(slow_load_length, fast_load_length, purge_length, max_beep_count, true, nozzle_timed_out, ADVANCED_PAUSE_MODE_PAUSE_PRINT DXC_PASS);
|
||||||
|
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_RESUME); // "Wait for print to resume"
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_RESUME);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Intelligent resuming
|
// Intelligent resuming
|
||||||
|
@ -577,7 +568,6 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_LCD_MENU
|
#if HAS_LCD_MENU
|
||||||
// Show status screen
|
|
||||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ typedef struct {
|
||||||
#include "../libs/nozzle.h"
|
#include "../libs/nozzle.h"
|
||||||
|
|
||||||
enum AdvancedPauseMode : char {
|
enum AdvancedPauseMode : char {
|
||||||
|
ADVANCED_PAUSE_MODE_SAME,
|
||||||
ADVANCED_PAUSE_MODE_PAUSE_PRINT,
|
ADVANCED_PAUSE_MODE_PAUSE_PRINT,
|
||||||
ADVANCED_PAUSE_MODE_LOAD_FILAMENT,
|
ADVANCED_PAUSE_MODE_LOAD_FILAMENT,
|
||||||
ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT
|
ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT
|
||||||
|
@ -48,11 +49,7 @@ enum AdvancedPauseMessage : char {
|
||||||
ADVANCED_PAUSE_MESSAGE_UNLOAD,
|
ADVANCED_PAUSE_MESSAGE_UNLOAD,
|
||||||
ADVANCED_PAUSE_MESSAGE_INSERT,
|
ADVANCED_PAUSE_MESSAGE_INSERT,
|
||||||
ADVANCED_PAUSE_MESSAGE_LOAD,
|
ADVANCED_PAUSE_MESSAGE_LOAD,
|
||||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
ADVANCED_PAUSE_MESSAGE_PURGE,
|
||||||
ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE,
|
|
||||||
#else
|
|
||||||
ADVANCED_PAUSE_MESSAGE_PURGE,
|
|
||||||
#endif
|
|
||||||
ADVANCED_PAUSE_MESSAGE_OPTION,
|
ADVANCED_PAUSE_MESSAGE_OPTION,
|
||||||
ADVANCED_PAUSE_MESSAGE_RESUME,
|
ADVANCED_PAUSE_MESSAGE_RESUME,
|
||||||
ADVANCED_PAUSE_MESSAGE_STATUS,
|
ADVANCED_PAUSE_MESSAGE_STATUS,
|
||||||
|
|
|
@ -61,7 +61,10 @@ void GcodeSuite::M18_M84() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_LCD_MENU && ENABLED(AUTO_BED_LEVELING_UBL)
|
#if HAS_LCD_MENU && ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
if (ubl.lcd_map_control) ubl.lcd_map_control = defer_return_to_status = false;
|
if (ubl.lcd_map_control) {
|
||||||
|
ubl.lcd_map_control = false;
|
||||||
|
set_defer_return_to_status(false);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1115,8 +1115,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
|
||||||
* LCD_BED_LEVELING requirements
|
* LCD_BED_LEVELING requirements
|
||||||
*/
|
*/
|
||||||
#if ENABLED(LCD_BED_LEVELING)
|
#if ENABLED(LCD_BED_LEVELING)
|
||||||
#if DISABLED(ULTIPANEL)
|
#if !HAS_LCD_MENU
|
||||||
#error "LCD_BED_LEVELING requires an LCD controller."
|
#error "LCD_BED_LEVELING requires a programmable LCD controller."
|
||||||
#elif !(ENABLED(MESH_BED_LEVELING) || OLDSCHOOL_ABL)
|
#elif !(ENABLED(MESH_BED_LEVELING) || OLDSCHOOL_ABL)
|
||||||
#error "LCD_BED_LEVELING requires MESH_BED_LEVELING or AUTO_BED_LEVELING."
|
#error "LCD_BED_LEVELING requires MESH_BED_LEVELING or AUTO_BED_LEVELING."
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1131,6 +1131,10 @@
|
||||||
#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Wait for")
|
#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Wait for")
|
||||||
#define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("filament purge")
|
#define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("filament purge")
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_FILAMENT_CHANGE_CONT_PURGE_1
|
||||||
|
#define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Click to finish")
|
||||||
|
#define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("filament purge")
|
||||||
|
#endif
|
||||||
#ifndef MSG_FILAMENT_CHANGE_RESUME_1
|
#ifndef MSG_FILAMENT_CHANGE_RESUME_1
|
||||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
|
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
|
||||||
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume...")
|
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume...")
|
||||||
|
@ -1160,6 +1164,9 @@
|
||||||
#ifndef MSG_FILAMENT_CHANGE_PURGE_1
|
#ifndef MSG_FILAMENT_CHANGE_PURGE_1
|
||||||
#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purging...")
|
#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purging...")
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_FILAMENT_CHANGE_CONT_PURGE_1
|
||||||
|
#define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Click to finish")
|
||||||
|
#endif
|
||||||
#ifndef MSG_FILAMENT_CHANGE_RESUME_1
|
#ifndef MSG_FILAMENT_CHANGE_RESUME_1
|
||||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Resuming...")
|
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Resuming...")
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -59,7 +59,11 @@ typedef struct {
|
||||||
} menuPosition;
|
} menuPosition;
|
||||||
menuPosition screen_history[6];
|
menuPosition screen_history[6];
|
||||||
uint8_t screen_history_depth = 0;
|
uint8_t screen_history_depth = 0;
|
||||||
bool screen_changed, defer_return_to_status;
|
bool screen_changed;
|
||||||
|
|
||||||
|
#if LCD_TIMEOUT_TO_STATUS
|
||||||
|
bool defer_return_to_status;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Value Editing
|
// Value Editing
|
||||||
PGM_P editLabel;
|
PGM_P editLabel;
|
||||||
|
@ -97,10 +101,12 @@ void lcd_goto_previous_menu() {
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_goto_previous_menu_no_defer() {
|
#if LCD_TIMEOUT_TO_STATUS
|
||||||
defer_return_to_status = false;
|
void lcd_goto_previous_menu_no_defer() {
|
||||||
lcd_goto_previous_menu();
|
set_defer_return_to_status(false);
|
||||||
}
|
lcd_goto_previous_menu();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
/////////// Common Menu Actions ////////////
|
/////////// Common Menu Actions ////////////
|
||||||
|
@ -234,7 +240,7 @@ void lcd_goto_screen(screenFunc_t screen, const uint32_t encoder/*=0*/) {
|
||||||
currentScreen = screen;
|
currentScreen = screen;
|
||||||
encoderPosition = encoder;
|
encoderPosition = encoder;
|
||||||
if (screen == lcd_status_screen) {
|
if (screen == lcd_status_screen) {
|
||||||
defer_return_to_status = false;
|
set_defer_return_to_status(false);
|
||||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
ubl.lcd_map_control = false;
|
ubl.lcd_map_control = false;
|
||||||
#endif
|
#endif
|
||||||
|
@ -343,7 +349,7 @@ void lcd_completion_feedback(const bool good/*=true*/) {
|
||||||
|
|
||||||
void lcd_babystep_zoffset() {
|
void lcd_babystep_zoffset() {
|
||||||
if (use_click()) { return lcd_goto_previous_menu_no_defer(); }
|
if (use_click()) { return lcd_goto_previous_menu_no_defer(); }
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
||||||
const bool do_probe = (active_extruder == 0);
|
const bool do_probe = (active_extruder == 0);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -35,9 +35,13 @@ void scroll_screen(const uint8_t limit, const bool is_menu);
|
||||||
bool use_click();
|
bool use_click();
|
||||||
bool printer_busy();
|
bool printer_busy();
|
||||||
void lcd_completion_feedback(const bool good=true);
|
void lcd_completion_feedback(const bool good=true);
|
||||||
void lcd_goto_previous_menu();
|
|
||||||
void lcd_goto_previous_menu_no_defer();
|
|
||||||
void lcd_save_previous_screen();
|
void lcd_save_previous_screen();
|
||||||
|
void lcd_goto_previous_menu();
|
||||||
|
#if LCD_TIMEOUT_TO_STATUS
|
||||||
|
void lcd_goto_previous_menu_no_defer();
|
||||||
|
#else
|
||||||
|
#define lcd_goto_previous_menu_no_defer() lcd_goto_previous_menu()
|
||||||
|
#endif
|
||||||
|
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
////////// Menu Item Numeric Types /////////
|
////////// Menu Item Numeric Types /////////
|
||||||
|
|
|
@ -91,7 +91,7 @@ void _lcd_level_bed_corners_homing() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _lcd_level_bed_corners() {
|
void _lcd_level_bed_corners() {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
if (!all_axes_known()) {
|
if (!all_axes_known()) {
|
||||||
set_all_unhomed();
|
set_all_unhomed();
|
||||||
enqueue_and_echo_commands_P(PSTR("G28"));
|
enqueue_and_echo_commands_P(PSTR("G28"));
|
||||||
|
|
|
@ -191,7 +191,7 @@
|
||||||
// Step 2: Continue Bed Leveling...
|
// Step 2: Continue Bed Leveling...
|
||||||
//
|
//
|
||||||
void _lcd_level_bed_continue() {
|
void _lcd_level_bed_continue() {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
set_all_unhomed();
|
set_all_unhomed();
|
||||||
lcd_goto_screen(_lcd_level_bed_homing);
|
lcd_goto_screen(_lcd_level_bed_homing);
|
||||||
enqueue_and_echo_commands_P(PSTR("G28"));
|
enqueue_and_echo_commands_P(PSTR("G28"));
|
||||||
|
|
|
@ -50,7 +50,7 @@ void _man_probe_pt(const float &rx, const float &ry) {
|
||||||
float lcd_probe_pt(const float &rx, const float &ry) {
|
float lcd_probe_pt(const float &rx, const float &ry) {
|
||||||
_man_probe_pt(rx, ry);
|
_man_probe_pt(rx, ry);
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
wait_for_user = true;
|
wait_for_user = true;
|
||||||
while (wait_for_user) idle();
|
while (wait_for_user) idle();
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
|
|
|
@ -458,47 +458,40 @@ void lcd_advanced_pause_resume_message() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_advanced_pause_purge_message() {
|
void lcd_advanced_pause_purge_message() {
|
||||||
START_SCREEN();
|
_lcd_advanced_pause_message(
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_1);
|
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_1)
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_2);
|
#ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_2
|
||||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
, PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_2)
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_3);
|
#ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_3
|
||||||
|
, PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_3)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
PSTR(MSG_FILAMENT_CHANGE_PURGE_1)
|
||||||
|
#ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
||||||
|
, PSTR(MSG_FILAMENT_CHANGE_PURGE_2)
|
||||||
|
#ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
||||||
|
, PSTR(MSG_FILAMENT_CHANGE_PURGE_3)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
);
|
||||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
|
||||||
#define _PURGE_BASE 3
|
|
||||||
#else
|
|
||||||
#define _PURGE_BASE 2
|
|
||||||
#endif
|
|
||||||
#if (_PURGE_BASE + defined(MSG_FILAMENT_CHANGE_PURGE_2) + defined(MSG_FILAMENT_CHANGE_PURGE_3)) < LCD_HEIGHT - 1
|
|
||||||
STATIC_ITEM(" ");
|
|
||||||
#endif
|
|
||||||
HOTEND_STATUS_ITEM();
|
|
||||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
|
||||||
STATIC_ITEM(MSG_USERWAIT);
|
|
||||||
#endif
|
|
||||||
END_SCREEN();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message) {
|
FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message) {
|
||||||
switch (message) {
|
switch (message) {
|
||||||
case ADVANCED_PAUSE_MESSAGE_INIT: return lcd_advanced_pause_init_message;
|
case ADVANCED_PAUSE_MESSAGE_INIT: return lcd_advanced_pause_init_message;
|
||||||
case ADVANCED_PAUSE_MESSAGE_UNLOAD: return lcd_advanced_pause_unload_message;
|
case ADVANCED_PAUSE_MESSAGE_UNLOAD: return lcd_advanced_pause_unload_message;
|
||||||
case ADVANCED_PAUSE_MESSAGE_WAITING: return lcd_advanced_pause_waiting_message;
|
case ADVANCED_PAUSE_MESSAGE_WAITING: return lcd_advanced_pause_waiting_message;
|
||||||
case ADVANCED_PAUSE_MESSAGE_INSERT: return lcd_advanced_pause_insert_message;
|
case ADVANCED_PAUSE_MESSAGE_INSERT: return lcd_advanced_pause_insert_message;
|
||||||
case ADVANCED_PAUSE_MESSAGE_LOAD: return lcd_advanced_pause_load_message;
|
case ADVANCED_PAUSE_MESSAGE_LOAD: return lcd_advanced_pause_load_message;
|
||||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
case ADVANCED_PAUSE_MESSAGE_PURGE: return lcd_advanced_pause_purge_message;
|
||||||
case ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE:
|
case ADVANCED_PAUSE_MESSAGE_RESUME: return lcd_advanced_pause_resume_message;
|
||||||
#else
|
case ADVANCED_PAUSE_MESSAGE_HEAT: return lcd_advanced_pause_heat_message;
|
||||||
case ADVANCED_PAUSE_MESSAGE_PURGE:
|
case ADVANCED_PAUSE_MESSAGE_HEATING: return lcd_advanced_pause_heating_message;
|
||||||
#endif
|
case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
||||||
return lcd_advanced_pause_purge_message;
|
return menu_advanced_pause_option;
|
||||||
case ADVANCED_PAUSE_MESSAGE_RESUME: return lcd_advanced_pause_resume_message;
|
|
||||||
case ADVANCED_PAUSE_MESSAGE_HEAT: return lcd_advanced_pause_heat_message;
|
|
||||||
case ADVANCED_PAUSE_MESSAGE_HEATING: return lcd_advanced_pause_heating_message;
|
|
||||||
case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
|
||||||
return menu_advanced_pause_option;
|
|
||||||
case ADVANCED_PAUSE_MESSAGE_STATUS:
|
case ADVANCED_PAUSE_MESSAGE_STATUS:
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
@ -507,14 +500,14 @@ FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message)
|
||||||
|
|
||||||
void lcd_advanced_pause_show_message(
|
void lcd_advanced_pause_show_message(
|
||||||
const AdvancedPauseMessage message,
|
const AdvancedPauseMessage message,
|
||||||
const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/,
|
const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_SAME*/,
|
||||||
const uint8_t extruder/*=active_extruder*/
|
const uint8_t extruder/*=active_extruder*/
|
||||||
) {
|
) {
|
||||||
advanced_pause_mode = mode;
|
if (mode != ADVANCED_PAUSE_MODE_SAME) advanced_pause_mode = mode;
|
||||||
hotend_status_extruder = extruder;
|
hotend_status_extruder = extruder;
|
||||||
const screenFunc_t next_screen = ap_message_screen(message);
|
const screenFunc_t next_screen = ap_message_screen(message);
|
||||||
if (next_screen) {
|
if (next_screen) {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
lcd_goto_screen(next_screen);
|
lcd_goto_screen(next_screen);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void lcd_power_loss_recovery_cancel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_job_recovery() {
|
void menu_job_recovery() {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
START_MENU();
|
START_MENU();
|
||||||
STATIC_ITEM(MSG_POWER_LOSS_RECOVERY);
|
STATIC_ITEM(MSG_POWER_LOSS_RECOVERY);
|
||||||
MENU_ITEM(function, MSG_RESUME_PRINT, lcd_power_loss_recovery_resume);
|
MENU_ITEM(function, MSG_RESUME_PRINT, lcd_power_loss_recovery_resume);
|
||||||
|
|
|
@ -241,7 +241,7 @@ inline void lcd_move_e() { _lcd_move_e(); }
|
||||||
screenFunc_t _manual_move_func_ptr;
|
screenFunc_t _manual_move_func_ptr;
|
||||||
|
|
||||||
void _goto_manual_move(const float scale) {
|
void _goto_manual_move(const float scale) {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
move_menu_scale = scale;
|
move_menu_scale = scale;
|
||||||
lcd_goto_screen(_manual_move_func_ptr);
|
lcd_goto_screen(_manual_move_func_ptr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ void lcd_sd_updir() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lcd_goto_screen(menu_sdcard, last_sdfile_encoderPosition);
|
lcd_goto_screen(menu_sdcard, last_sdfile_encoderPosition);
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
last_sdfile_encoderPosition = 0xFFFF;
|
last_sdfile_encoderPosition = 0xFFFF;
|
||||||
|
|
||||||
#if HAS_GRAPHICAL_LCD
|
#if HAS_GRAPHICAL_LCD
|
||||||
|
|
|
@ -78,13 +78,13 @@ void _lcd_refresh_e_factor_0() { planner.refresh_e_factor(0); }
|
||||||
#if ENABLED(BABYSTEP_XY)
|
#if ENABLED(BABYSTEP_XY)
|
||||||
void _lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEP_X)); }
|
void _lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEP_X)); }
|
||||||
void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEP_Y)); }
|
void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEP_Y)); }
|
||||||
void lcd_babystep_x() { lcd_goto_screen(_lcd_babystep_x); babysteps_done = 0; defer_return_to_status = true; }
|
void lcd_babystep_x() { lcd_goto_screen(_lcd_babystep_x); babysteps_done = 0; set_defer_return_to_status(true); }
|
||||||
void lcd_babystep_y() { lcd_goto_screen(_lcd_babystep_y); babysteps_done = 0; defer_return_to_status = true; }
|
void lcd_babystep_y() { lcd_goto_screen(_lcd_babystep_y); babysteps_done = 0; set_defer_return_to_status(true); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if DISABLED(BABYSTEP_ZPROBE_OFFSET)
|
#if DISABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||||
void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEP_Z)); }
|
void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEP_Z)); }
|
||||||
void lcd_babystep_z() { lcd_goto_screen(_lcd_babystep_z); babysteps_done = 0; defer_return_to_status = true; }
|
void lcd_babystep_z() { lcd_goto_screen(_lcd_babystep_z); babysteps_done = 0; set_defer_return_to_status(true); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // BABYSTEPPING
|
#endif // BABYSTEPPING
|
||||||
|
|
|
@ -51,7 +51,7 @@ float mesh_edit_value, mesh_edit_accumulator; // We round mesh_edit_value to 2.5
|
||||||
static int16_t ubl_encoderPosition = 0;
|
static int16_t ubl_encoderPosition = 0;
|
||||||
|
|
||||||
static void _lcd_mesh_fine_tune(PGM_P msg) {
|
static void _lcd_mesh_fine_tune(PGM_P msg) {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
if (ubl.encoder_diff) {
|
if (ubl.encoder_diff) {
|
||||||
ubl_encoderPosition = (ubl.encoder_diff > 0) ? 1 : -1;
|
ubl_encoderPosition = (ubl.encoder_diff > 0) ? 1 : -1;
|
||||||
ubl.encoder_diff = 0;
|
ubl.encoder_diff = 0;
|
||||||
|
@ -74,7 +74,7 @@ static void _lcd_mesh_fine_tune(PGM_P msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _lcd_mesh_edit_NOP() {
|
void _lcd_mesh_edit_NOP() {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
float lcd_mesh_edit() {
|
float lcd_mesh_edit() {
|
||||||
|
@ -408,7 +408,7 @@ void _lcd_ubl_storage_mesh() {
|
||||||
void _lcd_ubl_output_map_lcd();
|
void _lcd_ubl_output_map_lcd();
|
||||||
|
|
||||||
void _lcd_ubl_map_homing() {
|
void _lcd_ubl_map_homing() {
|
||||||
defer_return_to_status = true;
|
set_defer_return_to_status(true);
|
||||||
_lcd_draw_homing();
|
_lcd_draw_homing();
|
||||||
if (all_axes_homed()) {
|
if (all_axes_homed()) {
|
||||||
ubl.lcd_map_control = true; // Return to the map screen
|
ubl.lcd_map_control = true; // Return to the map screen
|
||||||
|
|
|
@ -281,7 +281,14 @@
|
||||||
extern screenFunc_t currentScreen;
|
extern screenFunc_t currentScreen;
|
||||||
void lcd_goto_screen(const screenFunc_t screen, const uint32_t encoder=0);
|
void lcd_goto_screen(const screenFunc_t screen, const uint32_t encoder=0);
|
||||||
|
|
||||||
extern bool lcd_clicked, defer_return_to_status;
|
extern bool lcd_clicked;
|
||||||
|
#if LCD_TIMEOUT_TO_STATUS
|
||||||
|
extern bool defer_return_to_status;
|
||||||
|
inline void set_defer_return_to_status(const bool defer) { defer_return_to_status = defer; }
|
||||||
|
#else
|
||||||
|
constexpr bool defer_return_to_status = false;
|
||||||
|
#define set_defer_return_to_status(D) NOOP
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2];
|
extern int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2];
|
||||||
extern uint8_t lcd_preheat_fan_speed[2];
|
extern uint8_t lcd_preheat_fan_speed[2];
|
||||||
|
@ -309,7 +316,7 @@
|
||||||
|
|
||||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
void lcd_advanced_pause_show_message(const AdvancedPauseMessage message,
|
void lcd_advanced_pause_show_message(const AdvancedPauseMessage message,
|
||||||
const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT,
|
const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_SAME,
|
||||||
const uint8_t extruder=active_extruder);
|
const uint8_t extruder=active_extruder);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Reference in a new issue