diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 081d56a9d6..464af184a1 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -723,6 +723,15 @@ void loop() { lcd_update(); } +void gcode_line_error(const char *err, bool doFlush=true) { + SERIAL_ERROR_START; + serialprintPGM(err); + SERIAL_ERRORLN(gcode_LastN); + //Serial.println(gcode_N); + if (doFlush) FlushSerialRequestResend(); + serial_count = 0; +} + /** * Add to the circular command queue the next command from: * - The command-injection queue (queued_commands_P) @@ -768,12 +777,7 @@ void get_command() { strchr_pointer = strchr(command, 'N'); gcode_N = (strtol(strchr_pointer + 1, NULL, 10)); if (gcode_N != gcode_LastN + 1 && strstr_P(command, PSTR("M110")) == NULL) { - SERIAL_ERROR_START; - SERIAL_ERRORPGM(MSG_ERR_LINE_NO); - SERIAL_ERRORLN(gcode_LastN); - //Serial.println(gcode_N); - FlushSerialRequestResend(); - serial_count = 0; + gcode_line_error(PSTR(MSG_ERR_LINE_NO)); return; } @@ -784,33 +788,22 @@ void get_command() { strchr_pointer = strchr(command, '*'); if (strtol(strchr_pointer + 1, NULL, 10) != checksum) { - SERIAL_ERROR_START; - SERIAL_ERRORPGM(MSG_ERR_CHECKSUM_MISMATCH); - SERIAL_ERRORLN(gcode_LastN); - FlushSerialRequestResend(); - serial_count = 0; + gcode_line_error(PSTR(MSG_ERR_CHECKSUM_MISMATCH)); return; } - //if no errors, continue parsing + // if no errors, continue parsing } else { - SERIAL_ERROR_START; - SERIAL_ERRORPGM(MSG_ERR_NO_CHECKSUM); - SERIAL_ERRORLN(gcode_LastN); - FlushSerialRequestResend(); - serial_count = 0; + gcode_line_error(PSTR(MSG_ERR_NO_CHECKSUM)); return; } gcode_LastN = gcode_N; - //if no errors, continue parsing + // if no errors, continue parsing } else { // if we don't receive 'N' but still see '*' if ((strchr(command, '*') != NULL)) { - SERIAL_ERROR_START; - SERIAL_ERRORPGM(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM); - SERIAL_ERRORLN(gcode_LastN); - serial_count = 0; + gcode_line_error(PSTR(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM), false); return; } }