BV: move version and bootloader command to HiZ mode to reduce menu size in other modes
This commit is contained in:
parent
6391674bb7
commit
af666455bd
|
@ -120,11 +120,6 @@ static void command_reset(void* argument);
|
||||||
/** command to reboot into bootloader
|
/** command to reboot into bootloader
|
||||||
* @param[in] argument no argument required
|
* @param[in] argument no argument required
|
||||||
*/
|
*/
|
||||||
static void command_bootloader(void* argument);
|
|
||||||
/** command to show version
|
|
||||||
* @param[in] argument no argument required
|
|
||||||
*/
|
|
||||||
static void command_version(void* argument);
|
|
||||||
|
|
||||||
/** list of all supported commands */
|
/** list of all supported commands */
|
||||||
static const struct menu_command_t menu_commands[] = {
|
static const struct menu_command_t menu_commands[] = {
|
||||||
|
@ -152,22 +147,6 @@ static const struct menu_command_t menu_commands[] = {
|
||||||
NULL,
|
NULL,
|
||||||
&command_reset,
|
&command_reset,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
'b',
|
|
||||||
"bootloader",
|
|
||||||
"reboot into DFU bootloader",
|
|
||||||
MENU_ARGUMENT_NONE,
|
|
||||||
NULL,
|
|
||||||
&command_bootloader,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'v',
|
|
||||||
"version",
|
|
||||||
"show hardware and firmware version",
|
|
||||||
MENU_ARGUMENT_NONE,
|
|
||||||
NULL,
|
|
||||||
&command_version,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
'h',
|
'h',
|
||||||
"help",
|
"help",
|
||||||
|
@ -183,7 +162,7 @@ static void command_help(void* argument)
|
||||||
(void)argument; // we won't use the argument
|
(void)argument; // we won't use the argument
|
||||||
printf("available commands:\n");
|
printf("available commands:\n");
|
||||||
menu_print_commands(menu_commands, LENGTH(menu_commands)); // print global commands
|
menu_print_commands(menu_commands, LENGTH(menu_commands)); // print global commands
|
||||||
menu_print_commands(busvoodoo_global_commands, LENGTH(busvoodoo_global_commands)); // print BusVoodoo global commands
|
menu_print_commands(busvoodoo_global_commands, busvoodoo_global_commands_nb); // print BusVoodoo global commands
|
||||||
menu_print_commands(busvoodoo_mode->commands, busvoodoo_mode->commands_nb); // print BusVoodoo mode commands
|
menu_print_commands(busvoodoo_mode->commands, busvoodoo_mode->commands_nb); // print BusVoodoo mode commands
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,23 +201,6 @@ static void command_reset(void* argument)
|
||||||
while (true); // wait for the reset to happen
|
while (true); // wait for the reset to happen
|
||||||
}
|
}
|
||||||
|
|
||||||
static void command_bootloader(void* argument)
|
|
||||||
{
|
|
||||||
(void)argument; // we won't use the argument
|
|
||||||
RCC_CSR |= RCC_CSR_RMVF; // clear reset flags
|
|
||||||
scb_reset_core(); // reset core (the bootloader will interpret it as starting into DFU)
|
|
||||||
while (true); // wait for the reset to happen
|
|
||||||
}
|
|
||||||
|
|
||||||
static void command_version(void* argument)
|
|
||||||
{
|
|
||||||
(void)argument; // we won't use the argument
|
|
||||||
printf("hardware flavor: %s\n", busvoodoo_full ? "full" : "light");
|
|
||||||
printf("board version: %c\n", busvoodoo_version);
|
|
||||||
printf("firmware date: %04u-%02u-%02u\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY);
|
|
||||||
printf("device ID: %08x%08x%08x\n", DESIG_UNIQUE_ID0, DESIG_UNIQUE_ID1, DESIG_UNIQUE_ID2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** process user command
|
/** process user command
|
||||||
* @param[in] str user command string (\0 ended)
|
* @param[in] str user command string (\0 ended)
|
||||||
*/
|
*/
|
||||||
|
@ -261,7 +223,7 @@ static void process_command(char* str)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!menu_handle_command(str, busvoodoo_mode->commands, busvoodoo_mode->commands_nb)) {
|
if (!menu_handle_command(str, busvoodoo_mode->commands, busvoodoo_mode->commands_nb)) {
|
||||||
if (!menu_handle_command(str, busvoodoo_global_commands, LENGTH(busvoodoo_global_commands))) {
|
if (!menu_handle_command(str, busvoodoo_global_commands, busvoodoo_global_commands_nb)) {
|
||||||
if (!menu_handle_command(str, menu_commands, LENGTH(menu_commands))) {
|
if (!menu_handle_command(str, menu_commands, LENGTH(menu_commands))) {
|
||||||
printf("command not recognized. enter help to list commands\n");
|
printf("command not recognized. enter help to list commands\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -698,6 +698,8 @@ const struct menu_command_t busvoodoo_global_commands[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const uint8_t busvoodoo_global_commands_nb = LENGTH(busvoodoo_global_commands);
|
||||||
|
|
||||||
/** interrupt service routine called on LED timeout */
|
/** interrupt service routine called on LED timeout */
|
||||||
void TIM_ISR(BUSVOODOO_LED_TIMER)(void)
|
void TIM_ISR(BUSVOODOO_LED_TIMER)(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -128,7 +128,9 @@ extern bool busvoodoo_full;
|
||||||
/** version of the hardware board */
|
/** version of the hardware board */
|
||||||
extern char busvoodoo_version;
|
extern char busvoodoo_version;
|
||||||
/** list of supported commands */
|
/** list of supported commands */
|
||||||
extern const struct menu_command_t busvoodoo_global_commands[4];
|
extern const struct menu_command_t busvoodoo_global_commands[];
|
||||||
|
/** number supported commands */
|
||||||
|
extern const uint8_t busvoodoo_global_commands_nb;
|
||||||
|
|
||||||
/** I/O connector pinout */
|
/** I/O connector pinout */
|
||||||
extern const char* busvoodoo_global_pinout_io[10];
|
extern const char* busvoodoo_global_pinout_io[10];
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <math.h> // math utilities
|
#include <math.h> // math utilities
|
||||||
|
|
||||||
/* STM32 (including CM3) libraries */
|
/* STM32 (including CM3) libraries */
|
||||||
|
#include <libopencmsis/core_cm3.h> // Cortex M3 utilities
|
||||||
#include <libopencm3/stm32/gpio.h> // general purpose input output library
|
#include <libopencm3/stm32/gpio.h> // general purpose input output library
|
||||||
#include <libopencm3/stm32/rcc.h> // real-time control clock library
|
#include <libopencm3/stm32/rcc.h> // real-time control clock library
|
||||||
#include <libopencm3/stm32/dbgmcu.h> // debug utilities
|
#include <libopencm3/stm32/dbgmcu.h> // debug utilities
|
||||||
|
@ -934,6 +935,33 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
// command handlers
|
// command handlers
|
||||||
|
|
||||||
|
/** switch to DFU bootloader
|
||||||
|
* @param[in] argument not used
|
||||||
|
* @note this handler is in HiZ mode only to save shortcut space and reduce menu size
|
||||||
|
*/
|
||||||
|
static void busvoodoo_hiz_bootloader(void* argument)
|
||||||
|
{
|
||||||
|
(void)argument; // we won't use the argument
|
||||||
|
RCC_CSR |= RCC_CSR_RMVF; // clear reset flags
|
||||||
|
scb_reset_core(); // reset core (the bootloader will interpret it as starting into DFU)
|
||||||
|
while (true); // wait for the reset to happen
|
||||||
|
}
|
||||||
|
|
||||||
|
/** show BusVoodoo version
|
||||||
|
* @param[in] argument not used
|
||||||
|
* @note this handler is in HiZ mode only to save shortcut space and reduce menu size
|
||||||
|
*/
|
||||||
|
static void busvoodoo_hiz_version(void* argument)
|
||||||
|
{
|
||||||
|
(void)argument; // we won't use the argument
|
||||||
|
printf("BusVoodoo flavor: %s\n", busvoodoo_full ? "full" : "light");
|
||||||
|
printf("hardware version: %c\n", busvoodoo_version);
|
||||||
|
printf("firmware date: %04u-%02u-%02u\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY);
|
||||||
|
printf("device ID: %08x%08x%08x\n", DESIG_UNIQUE_ID0, DESIG_UNIQUE_ID1, DESIG_UNIQUE_ID2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** command to perform board self-test
|
/** command to perform board self-test
|
||||||
* @param[in] argument no argument required
|
* @param[in] argument no argument required
|
||||||
*/
|
*/
|
||||||
|
@ -979,6 +1007,22 @@ static void busvoodoo_hiz_command_test_pins(void* argument)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct menu_command_t busvoodoo_hiz_commands[] = {
|
static const struct menu_command_t busvoodoo_hiz_commands[] = {
|
||||||
|
{
|
||||||
|
'v',
|
||||||
|
"version",
|
||||||
|
"show hardware and firmware version",
|
||||||
|
MENU_ARGUMENT_NONE,
|
||||||
|
NULL,
|
||||||
|
&busvoodoo_hiz_version,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'b',
|
||||||
|
"bootloader",
|
||||||
|
"reboot into DFU bootloader",
|
||||||
|
MENU_ARGUMENT_NONE,
|
||||||
|
NULL,
|
||||||
|
&busvoodoo_hiz_bootloader,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
's',
|
's',
|
||||||
"self-test",
|
"self-test",
|
||||||
|
|
Loading…
Reference in New Issue