Skip to content

Commit 7306e5e

Browse files
committed
I2CTargetRequest: do close in deinit
1 parent 7d3dd30 commit 7306e5e

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

shared-bindings/i2ctarget/I2CTarget.c

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,15 @@ static mp_obj_t i2ctarget_i2c_target_request_make_new(const mp_obj_type_t *type,
229229
//|
230230
static mp_obj_t i2ctarget_i2c_target_request_deinit(mp_obj_t self_in) {
231231
i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(self_in);
232+
target_request_check_for_deinit(self);
233+
234+
i2ctarget_i2c_target_obj_t *target = self->target;
235+
236+
// Deinit I2CTargetRequest first in case _close() fails.
232237
self->target = NULL;
233238

239+
common_hal_i2ctarget_i2c_target_close(target);
240+
234241
return mp_const_none;
235242
}
236243
MP_DEFINE_CONST_FUN_OBJ_1(i2ctarget_i2c_target_request_deinit_obj, i2ctarget_i2c_target_request_deinit);
@@ -401,22 +408,11 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target_request_ack_obj, 1, 2,
401408
//| """Close and deinit the request."""
402409
//| ...
403410
//|
404-
static mp_obj_t i2ctarget_i2c_target_request__exit__(size_t n_args, const mp_obj_t *args) {
405-
i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(args[0]);
406-
target_request_check_for_deinit(self);
407-
408-
i2ctarget_i2c_target_obj_t *target = self->target;
409-
// Deinit target request first in case _close() fails.
410-
i2ctarget_i2c_target_request_deinit(args[0]);
411-
412-
common_hal_i2ctarget_i2c_target_close(target);
413-
return mp_const_none;
414-
}
415-
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target_request___exit___obj, 4, 4, i2ctarget_i2c_target_request__exit__);
411+
// Provided by context manager helper.
416412

417413
static const mp_rom_map_elem_t i2ctarget_i2c_target_request_locals_dict_table[] = {
418414
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
419-
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&i2ctarget_i2c_target_request___exit___obj) },
415+
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&default___exit___obj) },
420416
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&i2ctarget_i2c_target_request_deinit_obj) },
421417
{ MP_ROM_QSTR(MP_QSTR__del__), MP_ROM_PTR(&i2ctarget_i2c_target_request_deinit_obj) },
422418
{ MP_ROM_QSTR(MP_QSTR_address), MP_ROM_PTR(&i2ctarget_i2c_target_request_address_obj) },

0 commit comments

Comments
 (0)