Skip to content

Commit d3995ea

Browse files
committed
Fixes from draft PR
1 parent b609bc0 commit d3995ea

File tree

2 files changed

+18
-32
lines changed

2 files changed

+18
-32
lines changed

shared-bindings/adafruit_bus_device/I2CDevice.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,10 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_readinto(size_t n_args, const mp_o
135135
mp_load_method(self->i2c, MP_QSTR_readfrom_into, dest);
136136
dest[2] = mp_obj_new_int_from_ull(self->device_address);
137137
dest[3] = args[ARG_buffer].u_obj;
138-
dest[4] = mp_obj_new_str("start", 5);
138+
//dest[4] = mp_obj_new_str("start", 5);
139+
dest[4] = MP_OBJ_NEW_QSTR(MP_QSTR_start);
139140
dest[5] = mp_obj_new_int(args[ARG_start].u_int);
140-
dest[6] = mp_obj_new_str("end", 3);
141+
dest[6] = MP_OBJ_NEW_QSTR(MP_QSTR_end);
141142
dest[7] = mp_obj_new_int(args[ARG_end].u_int);
142143
mp_call_method_n_kw(2, 2, dest);
143144

@@ -172,9 +173,9 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_write(size_t n_args, const mp_obj_
172173
mp_load_method(self->i2c, MP_QSTR_writeto, dest);
173174
dest[2] = mp_obj_new_int_from_ull(self->device_address);
174175
dest[3] = args[ARG_buffer].u_obj;
175-
dest[4] = mp_obj_new_str("start", 5);
176+
dest[4] = MP_OBJ_NEW_QSTR(MP_QSTR_start);
176177
dest[5] = mp_obj_new_int(args[ARG_start].u_int);
177-
dest[6] = mp_obj_new_str("end", 3);
178+
dest[6] = MP_OBJ_NEW_QSTR(MP_QSTR_end);
178179
dest[7] = mp_obj_new_int(args[ARG_end].u_int);
179180
mp_call_method_n_kw(2, 2, dest);
180181

@@ -224,13 +225,13 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_write_then_readinto(size_t n_args,
224225
dest[2] = mp_obj_new_int_from_ull(self->device_address);
225226
dest[3] = args[ARG_out_buffer].u_obj;
226227
dest[4] = args[ARG_in_buffer].u_obj;
227-
dest[5] = mp_obj_new_str("out_start", 9);
228+
dest[5] = MP_OBJ_NEW_QSTR(MP_QSTR_out_start);
228229
dest[6] = mp_obj_new_int(args[ARG_out_start].u_int);
229-
dest[7] = mp_obj_new_str("out_end", 7);
230+
dest[7] = MP_OBJ_NEW_QSTR(MP_QSTR_out_end);
230231
dest[8] = mp_obj_new_int(args[ARG_out_end].u_int);
231-
dest[9] = mp_obj_new_str("in_start", 8);
232+
dest[9] = MP_OBJ_NEW_QSTR(MP_QSTR_in_start);
232233
dest[10] = mp_obj_new_int(args[ARG_in_start].u_int);
233-
dest[11] = mp_obj_new_str("in_end", 6);
234+
dest[11] = MP_OBJ_NEW_QSTR(MP_QSTR_in_end);
234235
dest[12] = mp_obj_new_int(args[ARG_in_end].u_int);
235236

236237
mp_call_method_n_kw(3, 4, dest);

shared-module/adafruit_bus_device/I2CDevice.c

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -68,37 +68,22 @@ void common_hal_adafruit_bus_device_i2cdevice_probe_for_device(adafruit_bus_devi
6868
mp_obj_t dest[4];
6969

7070
/* catch exceptions that may be thrown while probing for the device */
71-
nlr_buf_t write_nlr;
72-
if (nlr_push(&write_nlr) == 0) {
71+
nlr_buf_t nlr;
72+
if (nlr_push(&nlr) == 0) {
7373
mp_load_method(self->i2c, MP_QSTR_writeto, dest);
7474
dest[2] = mp_obj_new_int_from_ull(self->device_address);
7575
dest[3] = write_buffer;
7676
mp_call_method_n_kw(2, 0, dest);
7777
nlr_pop();
7878
} else {
79-
/* some OS's don't like writing an empty bytestring... retry by reading a byte */
80-
mp_buffer_info_t read_bufinfo;
81-
mp_obj_t read_buffer = mp_obj_new_bytearray_of_zeros(1);
82-
mp_get_buffer_raise(read_buffer, &read_bufinfo, MP_BUFFER_WRITE);
79+
common_hal_adafruit_bus_device_i2cdevice_unlock(self);
8380

84-
mp_load_method(self->i2c, MP_QSTR_readfrom_into, dest);
85-
dest[2] = mp_obj_new_int_from_ull(self->device_address);
86-
dest[3] = read_buffer;
87-
88-
nlr_buf_t read_nlr;
89-
if (nlr_push(&read_nlr) == 0) {
90-
mp_call_method_n_kw(2, 0, dest);
91-
nlr_pop();
92-
} else {
93-
/* At this point we tried two methods and only got exceptions */
94-
if (mp_obj_is_subclass_fast(MP_OBJ_FROM_PTR(((mp_obj_base_t*)read_nlr.ret_val)->type), MP_OBJ_FROM_PTR(&mp_type_OSError))) {
95-
common_hal_adafruit_bus_device_i2cdevice_unlock(self);
96-
mp_raise_ValueError_varg(translate("No I2C device at address: %x"), self->device_address);
97-
}
98-
else {
99-
/* In case we receive an unrelated exception pass it up */
100-
nlr_raise(MP_OBJ_FROM_PTR(read_nlr.ret_val));
101-
}
81+
if (mp_obj_is_subclass_fast(MP_OBJ_FROM_PTR(((mp_obj_base_t*)nlr.ret_val)->type), MP_OBJ_FROM_PTR(&mp_type_OSError))) {
82+
mp_raise_ValueError_varg(translate("No I2C device at address: %x"), self->device_address);
83+
}
84+
else {
85+
/* In case we receive an unrelated exception pass it up */
86+
nlr_raise(MP_OBJ_FROM_PTR(nlr.ret_val));
10287
}
10388
}
10489

0 commit comments

Comments
 (0)