aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-05-07 22:49:45 +0200
committerHarald Welte <laforge@gnumonks.org>2017-05-07 23:10:02 +0200
commited1efc50353750b278a61f1f9268c4c6c5eea731 (patch)
tree84fd0c2f7eb67d8b7c300d2aa59ce7d1644caa32
parentf8c83a4d6404bf6b4b7f40d412be91c78bd21f02 (diff)
qmod: debug_cmd: Avoid 'Unknown command' for valid commands
-rw-r--r--firmware/libboard/qmod/source/board_qmod.c103
1 files changed, 53 insertions, 50 deletions
diff --git a/firmware/libboard/qmod/source/board_qmod.c b/firmware/libboard/qmod/source/board_qmod.c
index 88df9a3..cd57725 100644
--- a/firmware/libboard/qmod/source/board_qmod.c
+++ b/firmware/libboard/qmod/source/board_qmod.c
@@ -114,11 +114,59 @@ static int write_hub_eeprom(void)
return 0;
}
-/* returns '1' in case we should break any endless loop */
-void board_exec_dbg_cmd(int ch)
+static void board_exec_dbg_cmd_st12only(int ch)
{
uint32_t addr, val;
+ /* functions below only work on primary (ST12) */
+ if (!qmod_sam3_is_12())
+ return;
+
+ switch (ch) {
+ case 'E':
+ write_hub_eeprom();
+ break;
+ case 'O':
+ printf("Setting PRTPWR_OVERRIDE\n\r");
+ PIO_Set(&pin_hubpwr_override);
+ break;
+ case 'o':
+ printf("Clearing PRTPWR_OVERRIDE\n\r");
+ PIO_Clear(&pin_hubpwr_override);
+ break;
+ case 'H':
+ printf("Clearing _HUB_RESET -> HUB_RESET high (inactive)\n\r");
+ PIO_Clear(&pin_hub_rst);
+ break;
+ case 'h':
+ /* high level drives transistor -> HUB_RESET low */
+ printf("Asserting _HUB_RESET -> HUB_RESET low (active)\n\r");
+ PIO_Set(&pin_hub_rst);
+ break;
+ case 'w':
+ if (PIO_GetOutputDataStatus(&pin_hub_rst) == 0)
+ printf("WARNING: attempting EEPROM access while HUB not in reset\n\r");
+ printf("Please enter EEPROM offset:\n\r");
+ UART_GetIntegerMinMax(&addr, 0, 255);
+ printf("Please enter EEPROM value:\n\r");
+ UART_GetIntegerMinMax(&val, 0, 255);
+ printf("Writing value 0x%02x to EEPROM offset 0x%02x\n\r", val, addr);
+ eeprom_write_byte(0x50, addr, val);
+ break;
+ case 'r':
+ printf("Please enter EEPROM offset:\n\r");
+ UART_GetIntegerMinMax(&addr, 0, 255);
+ printf("EEPROM[0x%02x] = 0x%02x\n\r", addr, eeprom_read_byte(0x50, addr));
+ break;
+ default:
+ printf("Unknown command '%c'\n\r", ch);
+ break;
+ }
+}
+
+/* returns '1' in case we should break any endless loop */
+void board_exec_dbg_cmd(int ch)
+{
switch (ch) {
case '?':
printf("\t?\thelp\n\r");
@@ -176,55 +224,10 @@ void board_exec_dbg_cmd(int ch)
qmod_use_physical_sim(2, 0);
break;
default:
- if (!qmod_sam3_is_12()) {
+ if (!qmod_sam3_is_12())
printf("Unknown command '%c'\n\r", ch);
- return;
- }
- break;
- }
-
- /* functions below only work on primary (ST12) */
- if (!qmod_sam3_is_12())
- return;
-
- switch (ch) {
- case 'E':
- write_hub_eeprom();
- break;
- case 'O':
- printf("Setting PRTPWR_OVERRIDE\n\r");
- PIO_Set(&pin_hubpwr_override);
- break;
- case 'o':
- printf("Clearing PRTPWR_OVERRIDE\n\r");
- PIO_Clear(&pin_hubpwr_override);
- break;
- case 'H':
- printf("Clearing _HUB_RESET -> HUB_RESET high (inactive)\n\r");
- PIO_Clear(&pin_hub_rst);
- break;
- case 'h':
- /* high level drives transistor -> HUB_RESET low */
- printf("Asserting _HUB_RESET -> HUB_RESET low (active)\n\r");
- PIO_Set(&pin_hub_rst);
- break;
- case 'w':
- if (PIO_GetOutputDataStatus(&pin_hub_rst) == 0)
- printf("WARNING: attempting EEPROM access while HUB not in reset\n\r");
- printf("Please enter EEPROM offset:\n\r");
- UART_GetIntegerMinMax(&addr, 0, 255);
- printf("Please enter EEPROM value:\n\r");
- UART_GetIntegerMinMax(&val, 0, 255);
- printf("Writing value 0x%02x to EEPROM offset 0x%02x\n\r", val, addr);
- eeprom_write_byte(0x50, addr, val);
- break;
- case 'r':
- printf("Please enter EEPROM offset:\n\r");
- UART_GetIntegerMinMax(&addr, 0, 255);
- printf("EEPROM[0x%02x] = 0x%02x\n\r", addr, eeprom_read_byte(0x50, addr));
- break;
- default:
- printf("Unknown command '%c'\n\r", ch);
+ else
+ board_exec_dbg_cmd_st12only(ch);
break;
}
}