cmd: move gpio status to a function print_gpio_status()

This commit is contained in:
René van Dorst
2025-09-06 17:05:16 +02:00
parent 74b8280d80
commit e0864f811f
+31 -24
View File
@@ -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();
}
}
}