diff options
| author | Thorsten von Eicken | 2020-05-02 01:36:53 -0700 |
|---|---|---|
| committer | Damien George | 2020-05-29 22:27:53 +1000 |
| commit | 50a7ba234850183693d2b236e48ec0b76399123d (patch) | |
| tree | 08a8a9e1e08fd3e6faa9f6cb18a8507c4c844fbf | |
| parent | 1662a0b06f2ad58aa4a632a88d0b3836c08bded2 (diff) | |
esp32/modmachine: Fix machine.reset_cause to use IDF's esp_reset_reason.
The code previously called rtc_get_reset_reason which is a "raw" reset
cause. The ESP-IDF massages that for the proper reset cause available from
esp_reset_reason.
Fixes issue #5134.
| -rw-r--r-- | ports/esp32/modmachine.c | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/ports/esp32/modmachine.c b/ports/esp32/modmachine.c index 8d8df995c..82a02522f 100644 --- a/ports/esp32/modmachine.c +++ b/ports/esp32/modmachine.c @@ -146,36 +146,30 @@ STATIC mp_obj_t machine_deepsleep(size_t n_args, const mp_obj_t *pos_args, mp_ma STATIC MP_DEFINE_CONST_FUN_OBJ_KW(machine_deepsleep_obj, 0, machine_deepsleep); STATIC mp_obj_t machine_reset_cause(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - switch (rtc_get_reset_reason(0)) { - case POWERON_RESET: + switch (esp_reset_reason()) { + case ESP_RST_POWERON: + case ESP_RST_BROWNOUT: return MP_OBJ_NEW_SMALL_INT(MP_PWRON_RESET); break; - case SW_RESET: - case SW_CPU_RESET: - return MP_OBJ_NEW_SMALL_INT(MP_SOFT_RESET); - break; - case OWDT_RESET: - case TG0WDT_SYS_RESET: - case TG1WDT_SYS_RESET: - case RTCWDT_SYS_RESET: - case RTCWDT_BROWN_OUT_RESET: - case RTCWDT_CPU_RESET: - case RTCWDT_RTC_RESET: - case TGWDT_CPU_RESET: + + case ESP_RST_INT_WDT: + case ESP_RST_TASK_WDT: + case ESP_RST_WDT: return MP_OBJ_NEW_SMALL_INT(MP_WDT_RESET); break; - case DEEPSLEEP_RESET: + case ESP_RST_DEEPSLEEP: return MP_OBJ_NEW_SMALL_INT(MP_DEEPSLEEP_RESET); break; - case EXT_CPU_RESET: + case ESP_RST_SW: + case ESP_RST_PANIC: + case ESP_RST_EXT: // Comment in ESP-IDF: "For ESP32, ESP_RST_EXT is never returned" return MP_OBJ_NEW_SMALL_INT(MP_HARD_RESET); break; - case NO_MEAN: - case SDIO_RESET: - case INTRUSION_RESET: + case ESP_RST_SDIO: + case ESP_RST_UNKNOWN: default: return MP_OBJ_NEW_SMALL_INT(0); break; |
