Skip to content

Commit 513ca09

Browse files
authored
Merge pull request #5273 from tannewt/fix_nrf_light_sleep_cdc
Fix nrf light_sleep when on usb
2 parents d7a92f7 + fa9c218 commit 513ca09

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

ports/nrf/common-hal/alarm/__init__.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t
147147
// TODO: this handles all possible types of wakeup, which is redundant with main.
148148
// revise to extract all parts essential to enabling sleep wakeup, but leave the
149149
// 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) {
151151
bool have_timeout = false;
152152
uint64_t start_tick = 0, end_tick = 0;
153153
int64_t tickdiff;
@@ -179,7 +179,7 @@ void system_on_idle_until_alarm(int64_t timediff_ms, uint32_t prescaler) {
179179
if (mp_hal_is_interrupted()) {
180180
break;
181181
}
182-
if (serial_connected() && serial_bytes_available()) {
182+
if (wake_from_serial && serial_connected() && serial_bytes_available()) {
183183
break;
184184
}
185185
RUN_BACKGROUND_TASKS;
@@ -220,7 +220,7 @@ mp_obj_t common_hal_alarm_light_sleep_until_alarms(size_t n_alarms, const mp_obj
220220
#endif
221221

222222
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);
224224

225225
if (mp_hal_is_interrupted()) {
226226
wake_alarm = mp_const_none;
@@ -262,7 +262,7 @@ void NORETURN common_hal_alarm_enter_deep_sleep(void) {
262262
#endif
263263
int64_t timediff_ms = alarm_time_timealarm_get_wakeup_timediff_ms();
264264
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);
266266

267267
#ifdef NRF_DEBUG_PRINT
268268
mp_printf(&mp_plat_print, "RESET...\r\n\r\n");
@@ -285,7 +285,7 @@ void common_hal_alarm_pretending_deep_sleep(void) {
285285
#endif
286286

287287
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);
289289

290290
alarm_reset();
291291
}

0 commit comments

Comments
 (0)