diff options
Diffstat (limited to 'atmel-samd/main.c')
| -rw-r--r-- | atmel-samd/main.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/atmel-samd/main.c b/atmel-samd/main.c index 5eabd7d74..aaffcf90e 100644 --- a/atmel-samd/main.c +++ b/atmel-samd/main.c @@ -24,6 +24,8 @@ #include "asf/sam0/drivers/system/system.h" #include <board.h> +#include "boards/board.h" + #include "common-hal/analogio/AnalogIn.h" #include "common-hal/audioio/AudioOut.h" #include "common-hal/pulseio/PulseIn.h" @@ -51,6 +53,7 @@ typedef enum { NO_SAFE_MODE = 0, BROWNOUT, HARD_CRASH, + USER_SAFE_MODE, } safe_mode_t; void do_str(const char *src, mp_parse_input_kind_t input_kind) { @@ -331,6 +334,16 @@ bool start_mp(safe_mode_t safe_mode) { mp_hal_stdout_tx_str("Auto-reload is off.\r\n"); } } + // Output a user safe mode string if its set. + #ifdef BOARD_USER_SAFE_MODE + if (safe_mode == USER_SAFE_MODE) { + mp_hal_stdout_tx_str("\r\nYou requested starting safe mode by "); + mp_hal_stdout_tx_str(BOARD_USER_SAFE_MODE); + mp_hal_stdout_tx_str(".\r\nTo exit, please reset the board without "); + mp_hal_stdout_tx_str(BOARD_USER_SAFE_MODE); + mp_hal_stdout_tx_str(".\r\n"); + } else + #endif if (safe_mode != NO_SAFE_MODE) { mp_hal_stdout_tx_str("\r\nYou are running in safe mode which means something really bad happened.\r\n"); if (safe_mode == HARD_CRASH) { @@ -555,6 +568,10 @@ safe_mode_t samd21_init(void) { return BROWNOUT; } + if (board_requests_safe_mode()) { + return USER_SAFE_MODE; + } + return NO_SAFE_MODE; } |
