Browse Source

Flush RX buffer on G-code line errors to prevent hang (#13018)

pull/1/head
jeffstaley 6 years ago
committed by Scott Lahteine
parent
commit
2f176d6fb8
  1. 23
      Marlin/src/gcode/queue.cpp

23
Marlin/src/gcode/queue.cpp

@ -251,15 +251,7 @@ void flush_and_request_resend() {
ok_to_send();
}
void gcode_line_error(PGM_P err, uint8_t port) {
SERIAL_ERROR_START_P(port);
serialprintPGM_P(port, err);
SERIAL_ECHOLN_P(port, gcode_LastN);
flush_and_request_resend();
serial_count[port] = 0;
}
static bool serial_data_available() {
inline bool serial_data_available() {
return false
|| MYSERIAL0.available()
#if NUM_SERIAL > 1
@ -268,7 +260,7 @@ static bool serial_data_available() {
;
}
static int read_serial(const uint8_t index) {
inline int read_serial(const uint8_t index) {
switch (index) {
case 0: return MYSERIAL0.read();
#if NUM_SERIAL > 1
@ -278,6 +270,15 @@ static int read_serial(const uint8_t index) {
}
}
void gcode_line_error(PGM_P err, uint8_t port) {
SERIAL_ERROR_START_P(port);
serialprintPGM_P(port, err);
SERIAL_ECHOLN_P(port, gcode_LastN);
while (read_serial(port) != -1); // clear out the RX buffer
flush_and_request_resend();
serial_count[port] = 0;
}
#if ENABLED(FAST_FILE_TRANSFER)
#if ENABLED(SDSUPPORT)
@ -286,7 +287,7 @@ static int read_serial(const uint8_t index) {
#define CARD_ECHOLN_P(V) SERIAL_ECHOLN_P(card.transfer_port, V)
#endif
static bool serial_data_available(const uint8_t index) {
inline bool serial_data_available(const uint8_t index) {
switch (index) {
case 0: return MYSERIAL0.available();
#if NUM_SERIAL > 1

Loading…
Cancel
Save