Merge pull request #5175 from jepler/canio-timeout

canio: Run background tasks while waiting for message reception
This commit is contained in:
microDev 2021-08-20 09:25:46 +05:30 committed by GitHub
commit 7a0f8ae87f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 0 deletions

View File

@ -30,6 +30,8 @@
#include "py/obj.h"
#include "py/runtime.h"
#include "lib/utils/interrupt_char.h"
#include "common-hal/canio/__init__.h"
#include "common-hal/canio/Listener.h"
#include "shared-bindings/canio/Listener.h"
@ -356,6 +358,11 @@ mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self) {
if (supervisor_ticks_ms64() > deadline) {
return NULL;
}
RUN_BACKGROUND_TASKS;
// Allow user to break out of a timeout with a KeyboardInterrupt.
if (mp_hal_is_interrupted()) {
return NULL;
}
} while (!common_hal_canio_listener_in_waiting(self));
}
int index = self->hw->RXFS.bit.F0GI;

View File

@ -151,6 +151,11 @@ mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self) {
if (supervisor_ticks_ms64() > deadline) {
return NULL;
}
RUN_BACKGROUND_TASKS;
// Allow user to break out of a timeout with a KeyboardInterrupt.
if (mp_hal_is_interrupted()) {
return NULL;
}
} while (!common_hal_canio_listener_in_waiting(self));
}

View File

@ -30,6 +30,8 @@
#include "py/obj.h"
#include "py/runtime.h"
#include "lib/utils/interrupt_char.h"
#include "common-hal/canio/__init__.h"
#include "common-hal/canio/Listener.h"
#include "shared-bindings/canio/Listener.h"
@ -272,6 +274,11 @@ mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self) {
if (supervisor_ticks_ms64() > deadline) {
return NULL;
}
RUN_BACKGROUND_TASKS;
// Allow user to break out of a timeout with a KeyboardInterrupt.
if (mp_hal_is_interrupted()) {
return NULL;
}
} while (!common_hal_canio_listener_in_waiting(self));
}