@ -283,6 +283,9 @@ static int read_serial(const int index) {
inline void get_serial_commands ( ) {
static char serial_line_buffer [ NUM_SERIAL ] [ MAX_CMD_SIZE ] ;
static bool serial_comment_mode [ NUM_SERIAL ] = { false } ;
# if ENABLED(PARENTHESE_COMMENTS)
static bool serial_comment_paranthese_mode [ NUM_SERIAL ] = { false } ;
# endif
// If the command buffer is empty for too long,
// send "wait" to indicate Marlin is still waiting.
@ -311,6 +314,9 @@ inline void get_serial_commands() {
if ( serial_char = = ' \n ' | | serial_char = = ' \r ' ) {
serial_comment_mode [ i ] = false ; // end of line == end of comment
# if ENABLED(PARENTHESE_COMMENTS)
serial_comment_paranthese_mode [ i ] = false ; // end of line == end of comment
# endif
// Skip empty lines and comments
if ( ! serial_count [ i ] ) { thermalManager . manage_heater ( ) ; continue ; }
@ -404,12 +410,24 @@ inline void get_serial_commands() {
}
else if ( serial_char = = ' \\ ' ) { // Handle escapes
// if we have one more character, copy it over
if ( ( c = read_serial ( i ) ) > = 0 & & ! serial_comment_mode [ i ] )
if ( ( c = read_serial ( i ) ) > = 0 & & ! serial_comment_mode [ i ]
# if ENABLED(PARENTHESE_COMMENTS)
& & ! serial_comment_paranthese_mode [ i ]
# endif
)
serial_line_buffer [ i ] [ serial_count [ i ] + + ] = ( char ) c ;
}
else { // it's not a newline, carriage return or escape char
if ( serial_char = = ' ; ' ) serial_comment_mode [ i ] = true ;
if ( ! serial_comment_mode [ i ] ) serial_line_buffer [ i ] [ serial_count [ i ] + + ] = serial_char ;
if ( serial_char = = ' ; ' ) serial_comment_mode [ i ] = true ;
# if ENABLED(PARENTHESE_COMMENTS)
else if ( serial_char = = ' ( ' ) serial_comment_paranthese_mode [ i ] = true ;
else if ( serial_char = = ' ) ' ) serial_comment_paranthese_mode [ i ] = false ;
# endif
else if ( ! serial_comment_mode [ i ]
# if ENABLED(PARENTHESE_COMMENTS)
& & ! serial_comment_paranthese_mode [ i ]
# endif
) serial_line_buffer [ i ] [ serial_count [ i ] + + ] = serial_char ;
}
} // for NUM_SERIAL
} // queue has space, serial has data
@ -426,6 +444,9 @@ inline void get_serial_commands() {
static bool stop_buffering = false ,
sd_comment_mode = false ;
# if ENABLED(PARENTHESE_COMMENTS)
static bool sd_comment_parenthese_mode = false ;
# endif
if ( ! IS_SD_PRINTING ) return ;
/**
@ -445,7 +466,11 @@ inline void get_serial_commands() {
card_eof = card . eof ( ) ;
if ( card_eof | | n = = - 1
| | sd_char = = ' \n ' | | sd_char = = ' \r '
| | ( ( sd_char = = ' # ' | | sd_char = = ' : ' ) & & ! sd_comment_mode )
| | ( ( sd_char = = ' # ' | | sd_char = = ' : ' ) & & ! sd_comment_mode
# if ENABLED(PARENTHESE_COMMENTS)
& & ! sd_comment_parenthese_mode
# endif
)
) {
if ( card_eof ) {
@ -481,6 +506,9 @@ inline void get_serial_commands() {
if ( sd_char = = ' # ' ) stop_buffering = true ;
sd_comment_mode = false ; // for new command
# if ENABLED(PARENTHESE_COMMENTS)
sd_comment_parenthese_mode = false ;
# endif
// Skip empty lines and comments
if ( ! sd_count ) { thermalManager . manage_heater ( ) ; continue ; }
@ -497,8 +525,17 @@ inline void get_serial_commands() {
*/
}
else {
if ( sd_char = = ' ; ' ) sd_comment_mode = true ;
if ( ! sd_comment_mode ) command_queue [ cmd_queue_index_w ] [ sd_count + + ] = sd_char ;
if ( sd_char = = ' ; ' ) sd_comment_mode = true ;
# if ENABLED(PARENTHESE_COMMENTS)
else if ( sd_char = = ' ( ' ) sd_comment_parenthese_mode = true ;
else if ( sd_char = = ' ) ' ) sd_comment_parenthese_mode = false ;
# endif
else if ( ! sd_comment_mode
# if ENABLED(PARENTHESE_COMMENTS)
& & ! sd_comment_parenthese_mode
# endif
)
command_queue [ cmd_queue_index_w ] [ sd_count + + ] = sd_char ;
}
}
}