diff options
| author | Jeff Epler <jepler@gmail.com> | 2020-09-21 16:06:17 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2020-09-21 16:44:26 -0500 |
| commit | 493679da3b5b80b446e805966103a4d6703ec90c (patch) | |
| tree | cc34622a7d0144d0f09081640eea9851d30e840b /shared-bindings | |
| parent | 9e8f1820c8b9be728ae0f9e7c197565ac17cc6a8 (diff) | |
CAN.listen: block until a message comes in or timeout is reached
Diffstat (limited to 'shared-bindings')
| -rw-r--r-- | shared-bindings/_canio/Listener.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/shared-bindings/_canio/Listener.c b/shared-bindings/_canio/Listener.c index 84b2aacb9..6186f3bbd 100644 --- a/shared-bindings/_canio/Listener.c +++ b/shared-bindings/_canio/Listener.c @@ -100,20 +100,18 @@ STATIC mp_obj_t canio_listener_iter(mp_obj_t self_in) { STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_iter_obj, canio_listener_iter); //| def __next__(self): -//| """Returns the next waiting message, if one is available -//| -//| If the object is deinitialized, raises ValueError. +//| """Reads a message, after waiting up to self.timeout seconds //| -//| If no message is waiting raises StopIteration""" +//| If no message is received in time, raises StopIteration. Otherwise, +//| a Message is returned.""" //| ... //| STATIC mp_obj_t canio_listener_next(mp_obj_t self_in) { - canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in); - common_hal_canio_listener_check_for_deinit(self); - if (common_hal_canio_listener_in_waiting(self)) { - return canio_listener_read(self_in); + mp_obj_t result = canio_listener_read(self_in); + if (result == mp_const_none) { + return MP_OBJ_STOP_ITERATION; } - return MP_OBJ_STOP_ITERATION; + return result; } STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_next_obj, canio_listener_next); |
