Skip to content

Commit d7d7754

Browse files
authored
Merge pull request #1083 from pimoroni/patch-vl53l5cx
VL53L5CX: Add change_addr to constructor for #1063.
2 parents 1946e91 + a1b0a40 commit d7d7754

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

micropython/modules/breakout_vl53l5cx/vl53l5cx.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,21 @@ mp_obj_t VL53L5CX_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw
4747
ARG_i2c,
4848
ARG_addr,
4949
ARG_firmware,
50+
ARG_change_addr,
5051
};
5152
static const mp_arg_t allowed_args[] = {
5253
{ MP_QSTR_i2c, MP_ARG_OBJ, {.u_obj = nullptr} },
5354
{ MP_QSTR_addr, MP_ARG_INT, {.u_int = pimoroni::VL53L5CX::DEFAULT_ADDRESS} },
54-
{ MP_QSTR_firmware, MP_ARG_OBJ, {.u_obj = nullptr} }
55+
{ MP_QSTR_firmware, MP_ARG_OBJ, {.u_obj = nullptr} },
56+
{ MP_QSTR_change_addr, MP_ARG_INT, {.u_int = 0} }
5557
};
5658

5759
// Parse args.
5860
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
5961
mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
6062

6163
int addr = args[ARG_addr].u_int;
64+
int change_addr = args[ARG_change_addr].u_int;
6265

6366
self = mp_obj_malloc_with_finaliser(_VL53L5CX_obj_t, &VL53L5CX_type);
6467

@@ -93,6 +96,12 @@ mp_obj_t VL53L5CX_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw
9396

9497
self->breakout = m_new_class(pimoroni::VL53L5CX, (pimoroni::I2C*)self->i2c->i2c, (uint8_t *)bufinfo.buf, addr, self->configuration, self->motion_configuration);
9598

99+
if(change_addr != 0) {
100+
if(!self->breakout->set_i2c_address(change_addr)) {
101+
mp_raise_msg(&mp_type_RuntimeError, MP_ERROR_TEXT("VL53L5CX: set_i2c_address error"));
102+
}
103+
}
104+
96105
if(!self->breakout->init()) {
97106
mp_raise_msg(&mp_type_RuntimeError, MP_ERROR_TEXT("VL53L5CX: init error"));
98107
}
@@ -141,12 +150,9 @@ mp_obj_t VL53L5CX_set_motion_distance(mp_obj_t self_in, mp_obj_t distance_min, m
141150
}
142151

143152
mp_obj_t VL53L5CX_set_i2c_address(mp_obj_t self_in, mp_obj_t value) {
144-
_VL53L5CX_obj_t *self = MP_OBJ_TO_PTR2(self_in, _VL53L5CX_obj_t);
145-
bool status = self->breakout->set_i2c_address(mp_obj_get_int(value));
146-
if(!status) {
147-
mp_raise_msg(&mp_type_RuntimeError, MP_ERROR_TEXT("VL53L5CX: set_i2c_address error"));
148-
}
149-
return mp_const_none;
153+
(void)self_in;
154+
(void)value;
155+
mp_raise_NotImplementedError(MP_ERROR_TEXT("set_i2c_address: use VL53L5CX(..., \"change_addr=N\", ...) instead."));
150156
}
151157

152158
mp_obj_t VL53L5CX_set_ranging_mode(mp_obj_t self_in, mp_obj_t value) {

0 commit comments

Comments
 (0)