diff --git a/src/drivers/boards/common/board_common.h b/src/drivers/boards/common/board_common.h index d905f1470b..ca3c51ec55 100644 --- a/src/drivers/boards/common/board_common.h +++ b/src/drivers/boards/common/board_common.h @@ -310,6 +310,24 @@ __EXPORT void board_rc_input(bool invert_on); # endif #endif +/************************************************************************************ + * Name: board_on_reset + * + * Description: + * Optionally provided function called on entry to board_system_reset + * It should perform any house keeping prior to the rest. + * + * status - 1 if resetting to boot loader + * 0 if just resetting + * + ************************************************************************************/ + +#if defined(BOARD_HAS_NO_RESET) || !defined(BOARD_HAS_ON_RESET) +# define board_on_reset(status) +#else +__EXPORT void board_on_reset(int status); +#endif + /************************************************************************************ * Name: board_reset * diff --git a/src/drivers/boards/common/stm32/board_reset.c b/src/drivers/boards/common/stm32/board_reset.c index ff8e7df363..efeb1293cc 100644 --- a/src/drivers/boards/common/stm32/board_reset.c +++ b/src/drivers/boards/common/stm32/board_reset.c @@ -69,6 +69,9 @@ int board_set_bootload_mode(board_reset_e mode) void board_system_reset(int status) { +#if defined(BOARD_HAS_ON_RESET) + board_on_reset(status); +#endif board_reset(status); while (1);