Skip to content

Commit 46cd209

Browse files
committed
canio: Run background tasks while waiting for message reception
Closes: adafruit#5004
1 parent 5b0009c commit 46cd209

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

ports/atmel-samd/common-hal/canio/Listener.c

+5
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,11 @@ mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self) {
356356
if (supervisor_ticks_ms64() > deadline) {
357357
return NULL;
358358
}
359+
RUN_BACKGROUND_TASKS;
360+
// Allow user to break out of a timeout with a KeyboardInterrupt.
361+
if ( mp_hal_is_interrupted() ) {
362+
return NULL;
363+
}
359364
} while (!common_hal_canio_listener_in_waiting(self));
360365
}
361366
int index = self->hw->RXFS.bit.F0GI;

ports/stm/common-hal/canio/Listener.c

+7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
#include "py/obj.h"
3131
#include "py/runtime.h"
3232

33+
#include "lib/utils/interrupt_char.h"
34+
3335
#include "common-hal/canio/__init__.h"
3436
#include "common-hal/canio/Listener.h"
3537
#include "shared-bindings/canio/Listener.h"
@@ -272,6 +274,11 @@ mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self) {
272274
if (supervisor_ticks_ms64() > deadline) {
273275
return NULL;
274276
}
277+
RUN_BACKGROUND_TASKS;
278+
// Allow user to break out of a timeout with a KeyboardInterrupt.
279+
if ( mp_hal_is_interrupted() ) {
280+
return NULL;
281+
}
275282
} while (!common_hal_canio_listener_in_waiting(self));
276283
}
277284

0 commit comments

Comments
 (0)