Fix M118 parameter handling

Fix #10388
This commit is contained in:
Scott Lahteine 2018-04-12 19:10:04 -05:00
parent 3bc179a16f
commit 4c8751727a
2 changed files with 13 additions and 4 deletions

View file

@ -29,7 +29,16 @@
* E1 Have the host 'echo:' the text
*/
void GcodeSuite::M118() {
if (parser.seenval('E') && parser.value_bool()) SERIAL_ECHO_START();
if (parser.seenval('A') && parser.value_bool()) SERIAL_ECHOPGM("// ");
SERIAL_ECHOLN(parser.string_arg);
bool hasE = false, hasA = false;
char *p = parser.string_arg;
for (uint8_t i = 2; i--;)
if ((p[0] == 'A' || p[0] == 'E') && p[1] == '1') {
if (p[0] == 'A') hasA = true;
if (p[0] == 'E') hasE = true;
p += 2;
while (*p == ' ') ++p;
}
if (hasE) SERIAL_ECHO_START();
if (hasA) SERIAL_ECHOPGM("// ");
SERIAL_ECHOLN(p);
}

View file

@ -155,7 +155,7 @@ void GCodeParser::parse(char *p) {
#endif
// Only use string_arg for these M codes
if (letter == 'M') switch (codenum) { case 23: case 28: case 30: case 117: case 928: string_arg = p; return; default: break; }
if (letter == 'M') switch (codenum) { case 23: case 28: case 30: case 117: case 118: case 928: string_arg = p; return; default: break; }
#if ENABLED(DEBUG_GCODE_PARSER)
const bool debug = codenum == 800;