|
@ -191,7 +191,6 @@ bool GCodeQueue::process_injected_command() { |
|
|
// Execute command if non-blank
|
|
|
// Execute command if non-blank
|
|
|
if (i) { |
|
|
if (i) { |
|
|
parser.parse(cmd); |
|
|
parser.parse(cmd); |
|
|
PORT_REDIRECT(SERIAL_PORT); |
|
|
|
|
|
gcode.process_parsed_command(); |
|
|
gcode.process_parsed_command(); |
|
|
} |
|
|
} |
|
|
return true; |
|
|
return true; |
|
@ -243,7 +242,7 @@ void GCodeQueue::ok_to_send() { |
|
|
#if NUM_SERIAL > 1 |
|
|
#if NUM_SERIAL > 1 |
|
|
const int16_t pn = port[index_r]; |
|
|
const int16_t pn = port[index_r]; |
|
|
if (pn < 0) return; |
|
|
if (pn < 0) return; |
|
|
PORT_REDIRECT(pn); |
|
|
PORT_REDIRECT(pn); // Reply to the serial port that sent the command
|
|
|
#endif |
|
|
#endif |
|
|
if (!send_ok[index_r]) return; |
|
|
if (!send_ok[index_r]) return; |
|
|
SERIAL_ECHOPGM(MSG_OK); |
|
|
SERIAL_ECHOPGM(MSG_OK); |
|
@ -267,9 +266,9 @@ void GCodeQueue::ok_to_send() { |
|
|
*/ |
|
|
*/ |
|
|
void GCodeQueue::flush_and_request_resend() { |
|
|
void GCodeQueue::flush_and_request_resend() { |
|
|
#if NUM_SERIAL > 1 |
|
|
#if NUM_SERIAL > 1 |
|
|
const int16_t p = port[index_r]; |
|
|
const int16_t pn = port[index_r]; |
|
|
if (p < 0) return; |
|
|
if (pn < 0) return; |
|
|
PORT_REDIRECT(p); |
|
|
PORT_REDIRECT(pn); // Reply to the serial port that sent the command
|
|
|
#endif |
|
|
#endif |
|
|
SERIAL_FLUSH(); |
|
|
SERIAL_FLUSH(); |
|
|
SERIAL_ECHOPGM(MSG_RESEND); |
|
|
SERIAL_ECHOPGM(MSG_RESEND); |
|
@ -296,14 +295,14 @@ inline int read_serial(const uint8_t index) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void GCodeQueue::gcode_line_error(PGM_P const err, const int8_t port) { |
|
|
void GCodeQueue::gcode_line_error(PGM_P const err, const int8_t pn) { |
|
|
PORT_REDIRECT(port); |
|
|
PORT_REDIRECT(pn); // Reply to the serial port that sent the command
|
|
|
SERIAL_ERROR_START(); |
|
|
SERIAL_ERROR_START(); |
|
|
serialprintPGM(err); |
|
|
serialprintPGM(err); |
|
|
SERIAL_ECHOLN(last_N); |
|
|
SERIAL_ECHOLN(last_N); |
|
|
while (read_serial(port) != -1); // clear out the RX buffer
|
|
|
while (read_serial(pn) != -1); // Clear out the RX buffer
|
|
|
flush_and_request_resend(); |
|
|
flush_and_request_resend(); |
|
|
serial_count[port] = 0; |
|
|
serial_count[pn] = 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
FORCE_INLINE bool is_M29(const char * const cmd) { // matches "M29" & "M29 ", but not "M290", etc
|
|
|
FORCE_INLINE bool is_M29(const char * const cmd) { // matches "M29" & "M29 ", but not "M290", etc
|
|
|