Skip to content

Commit 82f37c9

Browse files
committed
canio: fix read(), iterable bindings
1 parent 9fd9cf1 commit 82f37c9

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

shared-bindings/canio/Listener.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ STATIC mp_obj_t canio_listener_read(mp_obj_t self_in) {
5050
common_hal_canio_listener_check_for_deinit(self);
5151

5252
canio_message_obj_t *message = m_new_obj(canio_message_obj_t);
53-
self->base.type = &canio_message_type;
53+
message->base.type = &canio_message_type;
5454

5555
if (common_hal_canio_listener_readinto(self, message)) {
5656
return message;
@@ -92,28 +92,20 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_in_waiting_obj, canio_listener_i
9292
//| """Returns self, unless the object is deinitialized"""
9393
//| ...
9494
//|
95-
STATIC mp_obj_t canio_listener_iter(mp_obj_t self_in) {
96-
canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in);
97-
common_hal_canio_listener_check_for_deinit(self);
98-
return self;
99-
}
100-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_iter_obj, canio_listener_iter);
101-
10295
//| def __next__(self):
10396
//| """Reads a message, after waiting up to self.timeout seconds
10497
//|
10598
//| If no message is received in time, raises StopIteration. Otherwise,
10699
//| a Message is returned."""
107100
//| ...
108101
//|
109-
STATIC mp_obj_t canio_listener_next(mp_obj_t self_in) {
102+
STATIC mp_obj_t canio_iternext(mp_obj_t self_in) {
110103
mp_obj_t result = canio_listener_read(self_in);
111104
if (result == mp_const_none) {
112105
return MP_OBJ_STOP_ITERATION;
113106
}
114107
return result;
115108
}
116-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_next_obj, canio_listener_next);
117109

118110
//| def deinit(self) -> None:
119111
//| """Deinitialize this object, freeing its hardware resources"""
@@ -176,8 +168,6 @@ STATIC const mp_obj_property_t canio_listener_timeout_obj = {
176168
STATIC const mp_rom_map_elem_t canio_listener_locals_dict_table[] = {
177169
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&canio_listener_enter_obj) },
178170
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&canio_listener_exit_obj) },
179-
{ MP_ROM_QSTR(MP_QSTR___iter__), MP_ROM_PTR(&canio_listener_iter_obj) },
180-
{ MP_ROM_QSTR(MP_QSTR___next__), MP_ROM_PTR(&canio_listener_next_obj) },
181171
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&canio_listener_deinit_obj) },
182172
{ MP_ROM_QSTR(MP_QSTR_in_waiting), MP_ROM_PTR(&canio_listener_in_waiting_obj) },
183173
{ MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&canio_listener_read_obj) },
@@ -189,5 +179,7 @@ STATIC MP_DEFINE_CONST_DICT(canio_listener_locals_dict, canio_listener_locals_di
189179
const mp_obj_type_t canio_listener_type = {
190180
{ &mp_type_type },
191181
.name = MP_QSTR_Listener,
182+
.getiter = mp_identity_getiter,
183+
.iternext = canio_iternext,
192184
.locals_dict = (mp_obj_dict_t*)&canio_listener_locals_dict,
193185
};

0 commit comments

Comments
 (0)