From e0864f811fdd151e140407547c4132dbf04a492f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20van=20Dorst?= Date: Sat, 6 Sep 2025 17:05:16 +0200 Subject: [PATCH] cmd: move gpio status to a function print_gpio_status() --- cmd_parser.c | 55 +++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/cmd_parser.c b/cmd_parser.c index a7d03d7..c6bdbbd 100644 --- a/cmd_parser.c +++ b/cmd_parser.c @@ -32,7 +32,7 @@ extern __code uint8_t * __code hex; extern __xdata uint8_t flash_buf[256]; __xdata uint8_t vlan_names[VLAN_NAMES_SIZE]; __xdata uint16_t vlan_ptr; -__xdata uint8_t gpio_last_value[12] = { 0 }; +__xdata uint8_t gpio_last_value[8] = { 0 }; // Buffer for writing to flash 0x1fd000, copy to 0x1fe000 @@ -284,6 +284,34 @@ uint8_t cmd_tokenize(void) __banked return 0; } +// Print GPIO status +void print_gpio_status(void) { + for (uint8_t idx = 0; idx < 2; idx++) { + reg_read(RTL837X_REG_GPIO_00_31_INPUT + (idx * 4)); + print_string("GPIO "); + write_char(idx + '0'); + write_char(':'); + write_char(' '); + + print_byte(SFR_DATA_24); + print_byte(SFR_DATA_16); + print_byte(SFR_DATA_8); + print_byte(SFR_DATA_0); + + write_char(' '); + print_byte( gpio_last_value[(idx *4)] ^ SFR_DATA_24); + gpio_last_value[(idx *4)] = SFR_DATA_24; + print_byte( gpio_last_value[(idx *4) + 1] ^ SFR_DATA_16); + gpio_last_value[(idx *4) + 1] = SFR_DATA_16; + print_byte( gpio_last_value[(idx *4) + 2] ^ SFR_DATA_8); + gpio_last_value[(idx *4) + 2] = SFR_DATA_8; + print_byte( gpio_last_value[(idx *4) + 3] ^ SFR_DATA_0); + gpio_last_value[(idx *4) + 3] = SFR_DATA_0; + write_char('\n'); + write_char('\n'); + } +} + // Identify command void cmd_parser(void) __banked @@ -426,29 +454,8 @@ void cmd_parser(void) __banked print_reg(RTL837X_REG_SDS_MODES); } - if (cmd_compare(0, "gpio")) { - for (uint8_t idx = 0; idx < 3; idx++) { - reg_read(RTL837X_REG_GPIO_32_63_OUTPUT + (idx * 4)); - print_string("GPIO "); - write_char(idx + 'A'); - write_char(':'); - write_char(' '); - - print_byte(SFR_DATA_24); - print_byte(SFR_DATA_16); - print_byte(SFR_DATA_8); - print_byte(SFR_DATA_0); - write_char(' '); - print_byte( gpio_last_value[(idx *4)] ^ SFR_DATA_24); - gpio_last_value[(idx *4)] = SFR_DATA_24; - print_byte( gpio_last_value[(idx *4) + 1] ^ SFR_DATA_16); - gpio_last_value[(idx *4) + 1] = SFR_DATA_16; - print_byte( gpio_last_value[(idx *4) + 2] ^ SFR_DATA_8); - gpio_last_value[(idx *4) + 2] = SFR_DATA_8; - print_byte( gpio_last_value[(idx *4) + 3] ^ SFR_DATA_0); - gpio_last_value[(idx *4) + 3] = SFR_DATA_0; - write_char('\n'); - } + if (cmd_compare(0, "gpio stat")) { + print_gpio_status(); } } }