|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|