diff --git a/cmd_parser.c b/cmd_parser.c index 4cebc5c..cf66829 100644 --- a/cmd_parser.c +++ b/cmd_parser.c @@ -200,6 +200,7 @@ uint8_t atoi_byte(__xdata uint8_t *out, uint8_t idx) uint8_t atoi_short(__xdata uint16_t *vlan, uint8_t idx) { uint8_t err = 1; + *vlan = 0; while (isnumber(cmd_buffer[idx])) { err = 0; @@ -1190,6 +1191,7 @@ err: // Parse command into words // cmd_words_len contains the number of words found. // cmd_words_b[] contains only start of a word offset. +// Returns the parsing status via `err_status`-variable. void cmd_tokenize(void) __banked { #ifdef DEBUG diff --git a/cmd_parser.h b/cmd_parser.h index dff8cf8..5e65c69 100644 --- a/cmd_parser.h +++ b/cmd_parser.h @@ -8,7 +8,7 @@ extern __xdata uint8_t cmd_buffer[CMD_BUF_SIZE]; extern __xdata uint8_t cmd_available; -uint8_t cmd_tokenize(void) __banked; +void cmd_tokenize(void) __banked; void cmd_parser(void) __banked; void execute_config(void) __banked; void print_sw_version(void) __banked; diff --git a/rtlplayground.c b/rtlplayground.c index 2d90077..9910785 100644 --- a/rtlplayground.c +++ b/rtlplayground.c @@ -26,6 +26,7 @@ extern __code const struct machine machine; extern __xdata uint32_t flash_size; +extern __xdata uint8_t err_status; extern __xdata uint16_t crc_value; __xdata struct machine_runtime machine_detected; @@ -1307,7 +1308,8 @@ void idle(void) // Check whether a command is waiting in the cmd_buffer and execute if (cmd_available) { cmd_available = 0; - if (!cmd_tokenize()) + cmd_tokenize(); + if (err_status == ERR_OK) cmd_parser(); print_string("\n> "); }