@@ -76,7 +76,7 @@ void alarm_reset(void) {
76
76
esp_sleep_disable_wakeup_source (ESP_SLEEP_WAKEUP_ALL );
77
77
}
78
78
79
- STATIC esp_sleep_wakeup_cause_t _get_wakeup_cause (void ) {
79
+ STATIC esp_sleep_wakeup_cause_t _get_wakeup_cause (bool deep_sleep ) {
80
80
// First check if the modules remember what last woke up
81
81
if (alarm_pin_pinalarm_woke_this_cycle ()) {
82
82
return ESP_SLEEP_WAKEUP_GPIO ;
@@ -94,17 +94,20 @@ STATIC esp_sleep_wakeup_cause_t _get_wakeup_cause(void) {
94
94
#endif
95
95
// If waking from true deep sleep, modules will have lost their state,
96
96
// so check the deep wakeup cause manually
97
- return esp_sleep_get_wakeup_cause ();
97
+ if (deep_sleep ) {
98
+ return esp_sleep_get_wakeup_cause ();
99
+ }
100
+ return ESP_SLEEP_WAKEUP_UNDEFINED ;
98
101
}
99
102
100
103
bool common_hal_alarm_woken_from_sleep (void ) {
101
- return _get_wakeup_cause () != ESP_SLEEP_WAKEUP_UNDEFINED ;
104
+ return _get_wakeup_cause (false ) != ESP_SLEEP_WAKEUP_UNDEFINED ;
102
105
}
103
106
104
107
mp_obj_t common_hal_alarm_record_wake_alarm (void ) {
105
108
// If woken from deep sleep, create a copy alarm similar to what would have
106
109
// been passed in originally. Otherwise, just return none
107
- esp_sleep_wakeup_cause_t cause = _get_wakeup_cause ();
110
+ esp_sleep_wakeup_cause_t cause = _get_wakeup_cause (true );
108
111
switch (cause ) {
109
112
case ESP_SLEEP_WAKEUP_TIMER : {
110
113
return alarm_time_timealarm_record_wake_alarm ();
@@ -154,7 +157,7 @@ mp_obj_t common_hal_alarm_light_sleep_until_alarms(size_t n_alarms, const mp_obj
154
157
RUN_BACKGROUND_TASKS ;
155
158
// Detect if interrupt was alarm or ctrl-C interrupt.
156
159
if (common_hal_alarm_woken_from_sleep ()) {
157
- esp_sleep_wakeup_cause_t cause = _get_wakeup_cause ();
160
+ esp_sleep_wakeup_cause_t cause = _get_wakeup_cause (false );
158
161
switch (cause ) {
159
162
case ESP_SLEEP_WAKEUP_TIMER : {
160
163
wake_alarm = alarm_time_timealarm_find_triggered_alarm (n_alarms ,alarms );
0 commit comments