diff --git a/cmd_parser.c b/cmd_parser.c index 8f2893a..1feaaee 100644 --- a/cmd_parser.c +++ b/cmd_parser.c @@ -201,6 +201,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; @@ -1191,6 +1192,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 8baaa21..aba6640 100644 --- a/rtlplayground.c +++ b/rtlplayground.c @@ -27,6 +27,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; @@ -1330,7 +1331,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_cmd_prompt(); }