|
31 | 31 | #include "py/runtime.h" |
32 | 32 |
|
33 | 33 | #include "common-hal/microcontroller/Processor.h" |
| 34 | +#include "shared-bindings/microcontroller/ResetReason.h" |
34 | 35 | #include "supervisor/shared/translate.h" |
35 | 36 |
|
| 37 | +#include "esp_sleep.h" |
| 38 | +#include "esp_system.h" |
| 39 | + |
36 | 40 | #include "soc/efuse_reg.h" |
37 | 41 |
|
38 | 42 | #include "components/driver/esp32s2/include/driver/temp_sensor.h" |
@@ -77,21 +81,42 @@ void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) { |
77 | 81 | } |
78 | 82 |
|
79 | 83 | mcu_reset_reason_t common_hal_mcu_processor_get_reset_reason(void) { |
80 | | - switch (esp_sleep_get_wakeup_cause()) { |
81 | | - case ESP_SLEEP_WAKEUP_TIMER: |
82 | | - return RESET_REASON_DEEP_SLEEP_ALARM; |
83 | | - |
84 | | - case ESP_SLEEP_WAKEUP_EXT0: |
85 | | - return RESET_REASON_DEEP_SLEEP_ALARM; |
86 | | - |
87 | | - case ESP_SLEEP_WAKEUP_TOUCHPAD: |
88 | | - //TODO: implement TouchIO |
89 | | - case ESP_SLEEP_WAKEUP_UNDEFINED: |
| 84 | + switch (esp_reset_reason()) { |
| 85 | + case ESP_RST_POWERON: |
| 86 | + return RESET_REASON_POWER_ON; |
| 87 | + |
| 88 | + case ESP_RST_SW: |
| 89 | + case ESP_RST_PANIC: |
| 90 | + return RESET_REASON_SOFTWARE; |
| 91 | + |
| 92 | + case ESP_RST_INT_WDT: |
| 93 | + case ESP_RST_TASK_WDT: |
| 94 | + case ESP_RST_WDT: |
| 95 | + return RESET_REASON_WATCHDOG; |
| 96 | + |
| 97 | + case ESP_RST_BROWNOUT: |
| 98 | + return RESET_REASON_BROWNOUT; |
| 99 | + |
| 100 | + case ESP_RST_SDIO: |
| 101 | + case ESP_RST_EXT: |
| 102 | + return RESET_REASON_RESET_PIN; |
| 103 | + |
| 104 | + case ESP_RST_DEEPSLEEP: |
| 105 | + switch (esp_sleep_get_wakeup_cause()) { |
| 106 | + case ESP_SLEEP_WAKEUP_TIMER: |
| 107 | + case ESP_SLEEP_WAKEUP_EXT0: |
| 108 | + case ESP_SLEEP_WAKEUP_EXT1: |
| 109 | + case ESP_SLEEP_WAKEUP_TOUCHPAD: |
| 110 | + return RESET_REASON_DEEP_SLEEP_ALARM; |
| 111 | + |
| 112 | + case ESP_SLEEP_WAKEUP_UNDEFINED: |
| 113 | + default: |
| 114 | + return RESET_REASON_UNKNOWN; |
| 115 | + } |
| 116 | + |
| 117 | + case ESP_RST_UNKNOWN: |
90 | 118 | default: |
91 | | - return RESET_REASON_POWER_APPLIED; |
92 | | - } |
93 | | -} |
| 119 | + return RESET_REASON_UNKNOWN; |
94 | 120 |
|
95 | | -mcu_reset_reason_t common_hal_mcu_processor_get_reset_reason(void) { |
96 | | - return RESET_REASON_POWER_ON; |
| 121 | + } |
97 | 122 | } |
0 commit comments