|
@@ -283,6 +283,9 @@ static int read_serial(const int index) {
|
283
|
283
|
inline void get_serial_commands() {
|
284
|
284
|
static char serial_line_buffer[NUM_SERIAL][MAX_CMD_SIZE];
|
285
|
285
|
static bool serial_comment_mode[NUM_SERIAL] = { false };
|
|
286
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
287
|
+ static bool serial_comment_paranthese_mode[NUM_SERIAL] = { false };
|
|
288
|
+ #endif
|
286
|
289
|
|
287
|
290
|
// If the command buffer is empty for too long,
|
288
|
291
|
// send "wait" to indicate Marlin is still waiting.
|
|
@@ -311,6 +314,9 @@ inline void get_serial_commands() {
|
311
|
314
|
if (serial_char == '\n' || serial_char == '\r') {
|
312
|
315
|
|
313
|
316
|
serial_comment_mode[i] = false; // end of line == end of comment
|
|
317
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
318
|
+ serial_comment_paranthese_mode[i] = false; // end of line == end of comment
|
|
319
|
+ #endif
|
314
|
320
|
|
315
|
321
|
// Skip empty lines and comments
|
316
|
322
|
if (!serial_count[i]) { thermalManager.manage_heater(); continue; }
|
|
@@ -404,12 +410,24 @@ inline void get_serial_commands() {
|
404
|
410
|
}
|
405
|
411
|
else if (serial_char == '\\') { // Handle escapes
|
406
|
412
|
// if we have one more character, copy it over
|
407
|
|
- if ((c = read_serial(i)) >= 0 && !serial_comment_mode[i])
|
|
413
|
+ if ((c = read_serial(i)) >= 0 && !serial_comment_mode[i]
|
|
414
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
415
|
+ && ! serial_comment_paranthese_mode[i]
|
|
416
|
+ #endif
|
|
417
|
+ )
|
408
|
418
|
serial_line_buffer[i][serial_count[i]++] = (char)c;
|
409
|
419
|
}
|
410
|
420
|
else { // it's not a newline, carriage return or escape char
|
411
|
|
- if (serial_char == ';') serial_comment_mode[i] = true;
|
412
|
|
- if (!serial_comment_mode[i]) serial_line_buffer[i][serial_count[i]++] = serial_char;
|
|
421
|
+ if (serial_char == ';') serial_comment_mode[i] = true;
|
|
422
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
423
|
+ else if (serial_char == '(') serial_comment_paranthese_mode[i] = true;
|
|
424
|
+ else if (serial_char == ')') serial_comment_paranthese_mode[i] = false;
|
|
425
|
+ #endif
|
|
426
|
+ else if (!serial_comment_mode[i]
|
|
427
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
428
|
+ && ! serial_comment_paranthese_mode[i]
|
|
429
|
+ #endif
|
|
430
|
+ ) serial_line_buffer[i][serial_count[i]++] = serial_char;
|
413
|
431
|
}
|
414
|
432
|
} // for NUM_SERIAL
|
415
|
433
|
} // queue has space, serial has data
|
|
@@ -426,6 +444,9 @@ inline void get_serial_commands() {
|
426
|
444
|
static bool stop_buffering = false,
|
427
|
445
|
sd_comment_mode = false;
|
428
|
446
|
|
|
447
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
448
|
+ static bool sd_comment_parenthese_mode = false;
|
|
449
|
+ #endif
|
429
|
450
|
if (!IS_SD_PRINTING) return;
|
430
|
451
|
|
431
|
452
|
/**
|
|
@@ -445,7 +466,11 @@ inline void get_serial_commands() {
|
445
|
466
|
card_eof = card.eof();
|
446
|
467
|
if (card_eof || n == -1
|
447
|
468
|
|| sd_char == '\n' || sd_char == '\r'
|
448
|
|
- || ((sd_char == '#' || sd_char == ':') && !sd_comment_mode)
|
|
469
|
+ || ((sd_char == '#' || sd_char == ':') && !sd_comment_mode
|
|
470
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
471
|
+ && ! sd_comment_parenthese_mode
|
|
472
|
+ #endif
|
|
473
|
+ )
|
449
|
474
|
) {
|
450
|
475
|
if (card_eof) {
|
451
|
476
|
|
|
@@ -481,6 +506,9 @@ inline void get_serial_commands() {
|
481
|
506
|
if (sd_char == '#') stop_buffering = true;
|
482
|
507
|
|
483
|
508
|
sd_comment_mode = false; // for new command
|
|
509
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
510
|
+ sd_comment_parenthese_mode = false;
|
|
511
|
+ #endif
|
484
|
512
|
|
485
|
513
|
// Skip empty lines and comments
|
486
|
514
|
if (!sd_count) { thermalManager.manage_heater(); continue; }
|
|
@@ -497,8 +525,17 @@ inline void get_serial_commands() {
|
497
|
525
|
*/
|
498
|
526
|
}
|
499
|
527
|
else {
|
500
|
|
- if (sd_char == ';') sd_comment_mode = true;
|
501
|
|
- if (!sd_comment_mode) command_queue[cmd_queue_index_w][sd_count++] = sd_char;
|
|
528
|
+ if (sd_char == ';') sd_comment_mode = true;
|
|
529
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
530
|
+ else if (sd_char == '(') sd_comment_parenthese_mode = true;
|
|
531
|
+ else if (sd_char == ')') sd_comment_parenthese_mode = false;
|
|
532
|
+ #endif
|
|
533
|
+ else if (!sd_comment_mode
|
|
534
|
+ #if ENABLED(PARENTHESE_COMMENTS)
|
|
535
|
+ && ! sd_comment_parenthese_mode
|
|
536
|
+ #endif
|
|
537
|
+ )
|
|
538
|
+ command_queue[cmd_queue_index_w][sd_count++] = sd_char;
|
502
|
539
|
}
|
503
|
540
|
}
|
504
|
541
|
}
|