diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index d34e0665c6..4f56385473 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -71,7 +71,8 @@ uint8_t GcodeSuite::axis_relative = ( ); #if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE) - bool GcodeSuite::autoreport_paused; // = false + bool GcodeSuite::autoreport_paused; // = false + bool GcodeSuite::autoreport_position; // = false /new/ #endif #if ENABLED(HOST_KEEPALIVE_FEATURE) diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index ab17cc8d7d..2707833dd1 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -354,6 +354,7 @@ public: } #if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE) + static bool autoreport_position; static bool autoreport_paused; static inline bool set_autoreport_paused(const bool p) { const bool was = autoreport_paused; diff --git a/Marlin/src/gcode/temp/M155.cpp b/Marlin/src/gcode/temp/M155.cpp index 8859736f50..74ba66e1cf 100644 --- a/Marlin/src/gcode/temp/M155.cpp +++ b/Marlin/src/gcode/temp/M155.cpp @@ -31,6 +31,12 @@ * M155: Set temperature auto-report interval. M155 S */ void GcodeSuite::M155() { + if (parser.seen('P')) //automatically report_current_position_projected(); + { + gcode.autoreport_position = true; + } + else + gcode.autoreport_position = false; if (parser.seenval('S')) thermalManager.set_auto_report_interval(parser.value_byte()); diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index f909476592..0337dcd12c 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2988,7 +2988,11 @@ void Temperature::tick() { next_temp_report_ms = millis() + 1000UL * auto_report_temp_interval; PORT_REDIRECT(SERIAL_BOTH); print_heater_states(active_extruder); - SERIAL_EOL(); + if(gcode.autoreport_position){ + SERIAL_CHAR(' '); + report_current_position_projected();} + else + SERIAL_EOL(); } }