From d063ffb1413960004060c8b52229edec4bf67675 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 10 Feb 2021 08:13:40 +0100 Subject: [PATCH] Add parameter `D` to gcode `M73` for silent/stealth mode --- Firmware/Marlin.h | 3 ++- Firmware/Marlin_main.cpp | 16 +++++++++----- Firmware/ultralcd.cpp | 48 +++++++++++++++++++++++++++++----------- 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 49201c3a1..a1b6fe4eb 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -366,7 +366,8 @@ extern uint8_t print_percent_done_normal; extern uint16_t print_time_remaining_normal; extern uint8_t print_percent_done_silent; extern uint16_t print_time_remaining_silent; -extern uint16_t print_time_to_change; +extern uint16_t print_time_to_change_normal; +extern uint16_t print_time_to_change_silent; #define PRINT_TIME_REMAINING_INIT 0xffff diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 426a32170..95acdf8fc 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -316,7 +316,8 @@ uint8_t print_percent_done_normal = PRINT_PERCENT_DONE_INIT; uint16_t print_time_remaining_normal = PRINT_TIME_REMAINING_INIT; //estimated remaining print time in minutes uint8_t print_percent_done_silent = PRINT_PERCENT_DONE_INIT; uint16_t print_time_remaining_silent = PRINT_TIME_REMAINING_INIT; //estimated remaining print time in minutes -uint16_t print_time_to_change = PRINT_TIME_REMAINING_INIT; //estimated remaining time to next change in minutes +uint16_t print_time_to_change_normal = PRINT_TIME_REMAINING_INIT; //estimated remaining time to next change in minutes +uint16_t print_time_to_change_silent = PRINT_TIME_REMAINING_INIT; //estimated remaining time to next change in minutes uint32_t IP_address = 0; @@ -6419,11 +6420,13 @@ Sigma_Exit: printf_P(_msg_mode_done_remain, _N("SILENT"), int(print_percent_done_silent), print_time_remaining_silent); } - print_time_to_change = PRINT_TIME_REMAINING_INIT; - if(code_seen('C')) + if(code_seen('C')) print_time_to_change_normal = code_value(); + if(code_seen('D')) print_time_to_change_silent = code_value(); + { - print_time_to_change = code_value(); - printf_P(_N("Change in mins: %d\n"), print_time_to_change); + const char* _msg_mode_done_remain = _N("%S MODE: Change in mins: %d\n"); + printf_P(_msg_mode_done_remain, _N("NORMAL"), print_time_to_change_normal); + printf_P(_msg_mode_done_remain, _N("SILENT"), print_time_to_change_silent); } break; } @@ -11696,7 +11699,8 @@ static void print_time_remaining_init() print_percent_done_normal = PRINT_PERCENT_DONE_INIT; print_time_remaining_silent = PRINT_TIME_REMAINING_INIT; print_percent_done_silent = PRINT_PERCENT_DONE_INIT; - print_time_to_change = PRINT_TIME_REMAINING_INIT; + print_time_to_change_normal = PRINT_TIME_REMAINING_INIT; + print_time_to_change_silent = PRINT_TIME_REMAINING_INIT; } void load_filament_final_feed() diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 43d80799e..5041f2036 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -676,33 +676,55 @@ void lcdui_print_time(void) if ((PRINTER_ACTIVE) && (starttime != 0)) { uint16_t print_t = 0; + uint16_t print_tr = 0; + uint16_t print_tc = 0; char suff = ' '; char suff_doubt = ' '; - if (print_time_to_change != PRINT_TIME_REMAINING_INIT) + #ifdef TMC2130 + if (SilentModeMenu != SILENT_MODE_OFF) { - print_t = print_time_to_change; + if (print_time_remaining_silent != PRINT_TIME_REMAINING_INIT) + { + print_tr = print_time_remaining_silent; + } + if (print_time_to_change_silent != PRINT_TIME_REMAINING_INIT) + { + print_tc = print_time_to_change_silent; + } + } + else + { + #endif //TMC2130 + if (print_time_remaining_normal != PRINT_TIME_REMAINING_INIT) + { + print_tr = print_time_remaining_normal; + } + if (print_time_to_change_normal != PRINT_TIME_REMAINING_INIT) + { + print_tc = print_time_to_change_normal; + } + #ifdef TMC2130 + } + #endif //TMC2130 + + if (print_tc != 0) + { + print_t = print_tc; suff = 'C'; } - else + else if (print_tr != 0) { + print_t = print_tr; suff = 'R'; - #ifdef TMC2130 - if (print_time_remaining_silent != PRINT_TIME_REMAINING_INIT && (SilentModeMenu != SILENT_MODE_OFF)) - { - print_t = print_time_remaining_silent; } - else - #endif //TMC2130 - print_t = print_time_remaining_normal; - } - + if (feedmultiply != 100) { suff_doubt = '?'; print_t = 100ul * print_t / feedmultiply; } - + if (print_t < 6000) //time<100h chars = lcd_printf_P(_N("%c%02u:%02u%c%c"), LCD_STR_CLOCK[0], print_t / 60, print_t % 60, suff, suff_doubt); else //time>=100h