diff options
| author | Scott Shawcroft <scott@tannewt.org> | 2020-12-08 11:03:24 -0800 |
|---|---|---|
| committer | Scott Shawcroft <scott@tannewt.org> | 2020-12-08 11:03:24 -0800 |
| commit | d0a806d7975ecc2c653d23ee48e463f38b4f1194 (patch) | |
| tree | d2af46bcbdd5483ca22353152adbf93b7b4398d8 /ports | |
| parent | 1df033465a366724fbbab5ff48082593722f7c41 (diff) | |
Enter safe mode after panic or brownout
Uses the IDF's reset reason. Does nothing before reset.
Fixes #3389
Diffstat (limited to 'ports')
| -rw-r--r-- | ports/esp32s2/supervisor/port.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ports/esp32s2/supervisor/port.c b/ports/esp32s2/supervisor/port.c index 6222cd290..5a50bda69 100644 --- a/ports/esp32s2/supervisor/port.c +++ b/ports/esp32s2/supervisor/port.c @@ -102,6 +102,14 @@ safe_mode_t port_init(void) { return NO_HEAP; } + esp_reset_reason_t reason = esp_reset_reason(); + if (reason == ESP_RST_BROWNOUT) { + return BROWNOUT; + } + if (reason == ESP_RST_PANIC) { + return HARD_CRASH; + } + return NO_SAFE_MODE; } |
