@@ -147,7 +147,7 @@ STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t
147
147
// TODO: this handles all possible types of wakeup, which is redundant with main.
148
148
// revise to extract all parts essential to enabling sleep wakeup, but leave the
149
149
// alarm/non-alarm sorting to the existing main loop.
150
- void system_on_idle_until_alarm (int64_t timediff_ms , uint32_t prescaler ) {
150
+ void system_on_idle_until_alarm (int64_t timediff_ms , bool wake_from_serial , uint32_t prescaler ) {
151
151
bool have_timeout = false;
152
152
uint64_t start_tick = 0 , end_tick = 0 ;
153
153
int64_t tickdiff ;
@@ -179,7 +179,7 @@ void system_on_idle_until_alarm(int64_t timediff_ms, uint32_t prescaler) {
179
179
if (mp_hal_is_interrupted ()) {
180
180
break ;
181
181
}
182
- if (serial_connected () && serial_bytes_available ()) {
182
+ if (wake_from_serial && serial_connected () && serial_bytes_available ()) {
183
183
break ;
184
184
}
185
185
RUN_BACKGROUND_TASKS ;
@@ -220,7 +220,7 @@ mp_obj_t common_hal_alarm_light_sleep_until_alarms(size_t n_alarms, const mp_obj
220
220
#endif
221
221
222
222
int64_t timediff_ms = alarm_time_timealarm_get_wakeup_timediff_ms ();
223
- system_on_idle_until_alarm (timediff_ms , 0 );
223
+ system_on_idle_until_alarm (timediff_ms , false, 0 );
224
224
225
225
if (mp_hal_is_interrupted ()) {
226
226
wake_alarm = mp_const_none ;
@@ -262,7 +262,7 @@ void NORETURN common_hal_alarm_enter_deep_sleep(void) {
262
262
#endif
263
263
int64_t timediff_ms = alarm_time_timealarm_get_wakeup_timediff_ms ();
264
264
tick_set_prescaler (PRESCALER_VALUE_IN_DEEP_SLEEP - 1 );
265
- system_on_idle_until_alarm (timediff_ms , PRESCALER_VALUE_IN_DEEP_SLEEP );
265
+ system_on_idle_until_alarm (timediff_ms , false, PRESCALER_VALUE_IN_DEEP_SLEEP );
266
266
267
267
#ifdef NRF_DEBUG_PRINT
268
268
mp_printf (& mp_plat_print , "RESET...\r\n\r\n" );
@@ -285,7 +285,7 @@ void common_hal_alarm_pretending_deep_sleep(void) {
285
285
#endif
286
286
287
287
int64_t timediff_ms = alarm_time_timealarm_get_wakeup_timediff_ms ();
288
- system_on_idle_until_alarm (timediff_ms , 0 );
288
+ system_on_idle_until_alarm (timediff_ms , true, 0 );
289
289
290
290
alarm_reset ();
291
291
}
0 commit comments