|
|
@ -254,7 +254,7 @@ void GCodeQueue::ok_to_send() { |
|
|
|
SERIAL_ECHO(*p++); |
|
|
|
} |
|
|
|
SERIAL_ECHOPAIR_P(SP_P_STR, int(BLOCK_BUFFER_SIZE - planner.movesplanned() - 1)); |
|
|
|
SERIAL_ECHOPAIR(" B", BUFSIZE - length); |
|
|
|
SERIAL_ECHOPAIR(" B", int(BUFSIZE - length)); |
|
|
|
#endif |
|
|
|
SERIAL_EOL(); |
|
|
|
} |
|
|
@ -364,9 +364,9 @@ inline void process_stream_char(const char c, uint8_t &sis, char (&buff)[MAX_CMD |
|
|
|
inline bool process_line_done(uint8_t &sis, char (&buff)[MAX_CMD_SIZE], int &ind) { |
|
|
|
sis = PS_NORMAL; |
|
|
|
buff[ind] = 0; |
|
|
|
if (!ind) { thermalManager.manage_heater(); return true; } |
|
|
|
ind = 0; |
|
|
|
return false; |
|
|
|
if (ind) { ind = 0; return false; } |
|
|
|
thermalManager.manage_heater(); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/**
|
|
|
@ -415,11 +415,13 @@ void GCodeQueue::get_serial_commands() { |
|
|
|
|
|
|
|
if (serial_char == '\n' || serial_char == '\r') { |
|
|
|
|
|
|
|
if (process_line_done(serial_input_state[i], serial_line_buffer[i], serial_count[i])) continue; |
|
|
|
// Reset our state, continue if the line was empty
|
|
|
|
if (process_line_done(serial_input_state[i], serial_line_buffer[i], serial_count[i])) |
|
|
|
continue; |
|
|
|
|
|
|
|
char* command = serial_line_buffer[i]; |
|
|
|
|
|
|
|
while (*command == ' ') command++; // Skip leading spaces
|
|
|
|
while (*command == ' ') command++; // Skip leading spaces
|
|
|
|
char *npos = (*command == 'N') ? command : nullptr; // Require the N parameter to start the line
|
|
|
|
|
|
|
|
if (npos) { |
|
|
@ -551,7 +553,9 @@ void GCodeQueue::get_serial_commands() { |
|
|
|
else if (n < 0) |
|
|
|
SERIAL_ERROR_MSG(MSG_SD_ERR_READ); |
|
|
|
|
|
|
|
if (process_line_done(sd_input_state, command_buffer[index_w], sd_count)) continue; |
|
|
|
// Terminate the buffer, reset the input state, continue for empty line
|
|
|
|
if (process_line_done(sd_input_state, command_buffer[index_w], sd_count)) |
|
|
|
continue; |
|
|
|
|
|
|
|
_commit_command(false); |
|
|
|
|
|
|
|