3737#include "py/runtime.h"
3838#include "supervisor/shared/translate.h"
3939
40+
4041//| class I2CDevice:
4142//| """Two wire serial protocol"""
4243//|
@@ -59,6 +60,10 @@ STATIC mp_obj_t busdevice_i2cdevice_make_new(const mp_obj_type_t *type, size_t n
5960 busio_i2c_obj_t * i2c = args [ARG_i2c ].u_obj ;
6061
6162 common_hal_busdevice_i2cdevice_construct (self , i2c , args [ARG_device_address ].u_int , args [ARG_probe ].u_bool );
63+ if (args [ARG_probe ].u_bool == true) {
64+ common_hal_busdevice_i2cdevice___probe_for_device (self );
65+ }
66+
6267 return (mp_obj_t )self ;
6368}
6469
@@ -204,28 +209,31 @@ MP_DEFINE_CONST_FUN_OBJ_KW(busdevice_i2cdevice_write_then_readinto_obj, 3, busde
204209
205210
206211STATIC mp_obj_t busdevice_i2cdevice___probe_for_device (mp_obj_t self_in ) {
207- //busdevice_i2cdevice_obj_t *self = self_in;
212+ busdevice_i2cdevice_obj_t * self = self_in ;
213+ common_hal_busdevice_i2cdevice___probe_for_device (self );
208214
209- // common_hal_busdevice_i2cdevice_lock(self_in );
215+ /* common_hal_busdevice_i2cdevice_lock(self );
210216
211- /*
212- uint8_t buffer;
217+
218+ // uint8_t buffer;
213219 mp_buffer_info_t bufinfo;
214- mp_get_buffer_raise(&buffer, &bufinfo, MP_BUFFER_WRITE);
220+ //mp_obj_t bufobj = MP_OBJ_FROM_PTR(&buffer)
221+ mp_obj_t buffer = mp_obj_new_bytearray_of_zeros(1);
222+
223+ mp_get_buffer_raise(buffer, &bufinfo, MP_BUFFER_WRITE);
215224
216225 uint8_t status = common_hal_busdevice_i2cdevice_readinto(self_in, (uint8_t*)bufinfo.buf, 1);
217226 if (status != 0) {
218227 common_hal_busdevice_i2cdevice_unlock(self_in);
219228 mp_raise_ValueError_varg(translate("No I2C device at address: %x"), self->device_address);
220229 }
230+
231+ common_hal_busdevice_i2cdevice_unlock(self);
221232*/
222- //common_hal_busdevice_i2cdevice_unlock(self_in);
223-
224233 return mp_const_none ;
225234}
226235MP_DEFINE_CONST_FUN_OBJ_1 (busdevice_i2cdevice___probe_for_device_obj , busdevice_i2cdevice___probe_for_device );
227236
228-
229237STATIC const mp_rom_map_elem_t busdevice_i2cdevice_locals_dict_table [] = {
230238 { MP_ROM_QSTR (MP_QSTR___enter__ ), MP_ROM_PTR (& busdevice_i2cdevice___enter___obj ) },
231239 { MP_ROM_QSTR (MP_QSTR___exit__ ), MP_ROM_PTR (& busdevice_i2cdevice___exit___obj ) },
0 commit comments