diff --git a/Marlin/src/gcode/control/M999.cpp b/Marlin/src/gcode/control/M999.cpp index 7487b4cf6e..b7219673a3 100644 --- a/Marlin/src/gcode/control/M999.cpp +++ b/Marlin/src/gcode/control/M999.cpp @@ -41,5 +41,5 @@ void GcodeSuite::M999() { if (parser.boolval('S')) return; - queue.flush_and_request_resend(); + queue.flush_and_request_resend(queue.ring_buffer.command_port()); } diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index ebf95f86c6..93deac0566 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -262,8 +262,7 @@ void GCodeQueue::RingBuffer::ok_to_send() { * Send a "Resend: nnn" message to the host to * indicate that a command needs to be re-sent. */ -void GCodeQueue::flush_and_request_resend() { - const serial_index_t serial_ind = ring_buffer.command_port(); +void GCodeQueue::flush_and_request_resend(const serial_index_t serial_ind) { #if HAS_MULTI_SERIAL if (serial_ind < 0) return; // Never mind. Command came from SD or Flash Drive PORT_REDIRECT(SERIAL_PORTMASK(serial_ind)); // Reply to the serial port that sent the command @@ -306,7 +305,7 @@ void GCodeQueue::gcode_line_error(PGM_P const err, const serial_index_t serial_i SERIAL_ERROR_START(); SERIAL_ECHOLNPAIR_P(err, serial_state[serial_ind].last_N); while (read_serial(serial_ind) != -1) { /* nada */ } // Clear out the RX buffer. Why don't use flush here ? - flush_and_request_resend(); + flush_and_request_resend(serial_ind); serial_state[serial_ind].count = 0; } diff --git a/Marlin/src/gcode/queue.h b/Marlin/src/gcode/queue.h index 778f9a7f67..7bc3bfdbe5 100644 --- a/Marlin/src/gcode/queue.h +++ b/Marlin/src/gcode/queue.h @@ -185,7 +185,7 @@ public: * Clear the serial line and request a resend of * the next expected line number. */ - static void flush_and_request_resend(); + static void flush_and_request_resend(const serial_index_t serial_ind); /** * (Re)Set the current line number for the last received command