diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index ddd72d11a0..d0a49aade3 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -721,9 +721,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 1499dff326..aa3d54de77 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -327,6 +327,10 @@ extern bool axis_homed[3]; // axis[n].is_homed extern float zprobe_zoffset; #endif +#if ENABLED(HOST_KEEPALIVE_FEATURE) + extern uint8_t host_keepalive_interval; +#endif + #if ENABLED(PREVENT_DANGEROUS_EXTRUDE) extern float extrude_min_temp; #endif diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 49bea61024..c8b9090786 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -155,6 +155,7 @@ * M110 - Set the current line number * M111 - Set debug flags with S. See flag bits defined in Marlin.h. * M112 - Emergency stop + * M113 - Get or set the timeout interval for Host Keepalive "busy" messages * M114 - Output current position to serial port * M115 - Capabilities string * M117 - Display a message on the controller screen @@ -456,6 +457,7 @@ static bool send_ok[BUFSIZE]; static MarlinBusyState busy_state = NOT_BUSY; static millis_t next_busy_signal_ms = -1; + uint8_t host_keepalive_interval = DEFAULT_KEEPALIVE_INTERVAL; #define KEEPALIVE_STATE(n) do{ busy_state = n; }while(0) #else #define host_keepalive() ; @@ -2297,7 +2299,7 @@ void unknown_command_error() { break; } } - next_busy_signal_ms = ms + 10000UL; // "busy: ..." message every 10s + next_busy_signal_ms = host_keepalive_interval ? ms + 1000UL * host_keepalive_interval : -1; } #endif //HOST_KEEPALIVE_FEATURE @@ -4427,6 +4429,27 @@ inline void gcode_M111() { */ inline void gcode_M112() { kill(PSTR(MSG_KILLED)); } +#if ENABLED(HOST_KEEPALIVE_FEATURE) + + /** + * M113: Get or set Host Keepalive interval (0 to disable) + * + * S Optional. Set the keepalive interval. + */ + inline void gcode_M113() { + if (code_seen('S')) { + host_keepalive_interval = (uint8_t)code_value_short(); + NOMORE(host_keepalive_interval, 60); + } + else { + SERIAL_ECHO_START; + SERIAL_ECHOPAIR("M113 S", (unsigned long)host_keepalive_interval); + SERIAL_EOL; + } + } + +#endif + #if ENABLED(BARICUDA) #if HAS_HEATER_1 diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index e91e927c8a..2da7f04f6d 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -704,9 +704,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 29507abaad..60697ed0e8 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -701,9 +701,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index cac62233ff..9e0af0a329 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -713,9 +713,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h index 9be4a5cef8..a1a89e3715 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration.h @@ -715,9 +715,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 3bb350ddd4..74c5531772 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -738,9 +738,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index 487e8d8764..553c07afa5 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -721,9 +721,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index e5c98d4791..733b377cd4 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -716,9 +716,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index c09a7ae820..436bf22909 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -729,9 +729,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index 7dd94b7ae5..38e7e20cf2 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -742,9 +742,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 6f96bbf422..fd3fa38d09 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -713,9 +713,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 9620b49ffa..052008aa58 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -721,9 +721,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index 9c91da9d71..ce1bbf5cc3 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -843,9 +843,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 5beb3f4b54..bc323fd5a5 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -843,9 +843,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index d88d12dc6e..fbaa538e96 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -847,9 +847,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 6d769fb329..aedcf72af2 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -840,9 +840,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index e21b350e1e..cba52bf4af 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -757,9 +757,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 6ccd700aa6..301c7d9b6f 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -724,9 +724,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 85f2258f4d..f162ff7b60 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -715,9 +715,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Host Keepalive // // By default Marlin will send a busy status message to the host -// every 10 seconds when it can't accept commands. +// every couple of seconds when it can't accept commands. // //#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages. +#if DISABLED(DISABLE_HOST_KEEPALIVE) + #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#endif // // M100 Free Memory Watcher