|
35 | 35 | #include "lib/utils/buffer_helper.h"
|
36 | 36 | #include "lib/utils/context_manager_helpers.h"
|
37 | 37 | #include "py/runtime.h"
|
| 38 | +#include "py/smallint.h" |
38 | 39 | #include "supervisor/shared/translate.h"
|
39 | 40 |
|
40 | 41 |
|
@@ -132,15 +133,20 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_readinto(size_t n_args, const mp_o
|
132 | 133 | mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
133 | 134 |
|
134 | 135 | mp_obj_t dest[8];
|
| 136 | + uint8_t num_kws = 1; |
| 137 | + |
135 | 138 | mp_load_method(self->i2c, MP_QSTR_readfrom_into, dest);
|
136 |
| - dest[2] = mp_obj_new_int_from_ull(self->device_address); |
| 139 | + dest[2] = MP_OBJ_NEW_SMALL_INT(self->device_address); |
137 | 140 | dest[3] = args[ARG_buffer].u_obj;
|
138 | 141 | //dest[4] = mp_obj_new_str("start", 5);
|
139 | 142 | dest[4] = MP_OBJ_NEW_QSTR(MP_QSTR_start);
|
140 |
| - dest[5] = mp_obj_new_int(args[ARG_start].u_int); |
141 |
| - dest[6] = MP_OBJ_NEW_QSTR(MP_QSTR_end); |
142 |
| - dest[7] = mp_obj_new_int(args[ARG_end].u_int); |
143 |
| - mp_call_method_n_kw(2, 2, dest); |
| 143 | + dest[5] = MP_OBJ_NEW_SMALL_INT(args[ARG_start].u_int); |
| 144 | + if (args[ARG_end].u_int != INT_MAX) { |
| 145 | + dest[6] = MP_OBJ_NEW_QSTR(MP_QSTR_end); |
| 146 | + dest[7] = MP_OBJ_NEW_SMALL_INT(args[ARG_end].u_int); |
| 147 | + num_kws++; |
| 148 | + } |
| 149 | + mp_call_method_n_kw(2, num_kws, dest); |
144 | 150 |
|
145 | 151 | return mp_const_none;
|
146 | 152 | }
|
@@ -170,14 +176,20 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_write(size_t n_args, const mp_obj_
|
170 | 176 | mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
171 | 177 |
|
172 | 178 | mp_obj_t dest[8];
|
| 179 | + uint8_t num_kws = 1; |
| 180 | + |
173 | 181 | mp_load_method(self->i2c, MP_QSTR_writeto, dest);
|
174 |
| - dest[2] = mp_obj_new_int_from_ull(self->device_address); |
| 182 | + dest[2] = MP_OBJ_NEW_SMALL_INT(self->device_address); |
175 | 183 | dest[3] = args[ARG_buffer].u_obj;
|
176 | 184 | dest[4] = MP_OBJ_NEW_QSTR(MP_QSTR_start);
|
177 |
| - dest[5] = mp_obj_new_int(args[ARG_start].u_int); |
178 |
| - dest[6] = MP_OBJ_NEW_QSTR(MP_QSTR_end); |
179 |
| - dest[7] = mp_obj_new_int(args[ARG_end].u_int); |
180 |
| - mp_call_method_n_kw(2, 2, dest); |
| 185 | + dest[5] = MP_OBJ_NEW_SMALL_INT(args[ARG_start].u_int); |
| 186 | + if (args[ARG_end].u_int != INT_MAX) { |
| 187 | + dest[6] = MP_OBJ_NEW_QSTR(MP_QSTR_end); |
| 188 | + dest[7] = MP_OBJ_NEW_SMALL_INT(args[ARG_end].u_int); |
| 189 | + num_kws++; |
| 190 | + } |
| 191 | + |
| 192 | + mp_call_method_n_kw(2, num_kws, dest); |
181 | 193 |
|
182 | 194 | return mp_const_none;
|
183 | 195 | }
|
@@ -221,20 +233,28 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_write_then_readinto(size_t n_args,
|
221 | 233 | mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
222 | 234 |
|
223 | 235 | mp_obj_t dest[13];
|
| 236 | + uint8_t num_kws = 2; |
| 237 | + |
224 | 238 | mp_load_method(self->i2c, MP_QSTR_writeto_then_readfrom, dest);
|
225 |
| - dest[2] = mp_obj_new_int_from_ull(self->device_address); |
| 239 | + dest[2] = MP_OBJ_NEW_SMALL_INT(self->device_address); |
226 | 240 | dest[3] = args[ARG_out_buffer].u_obj;
|
227 | 241 | dest[4] = args[ARG_in_buffer].u_obj;
|
228 | 242 | dest[5] = MP_OBJ_NEW_QSTR(MP_QSTR_out_start);
|
229 |
| - dest[6] = mp_obj_new_int(args[ARG_out_start].u_int); |
230 |
| - dest[7] = MP_OBJ_NEW_QSTR(MP_QSTR_out_end); |
231 |
| - dest[8] = mp_obj_new_int(args[ARG_out_end].u_int); |
| 243 | + dest[6] = MP_OBJ_NEW_SMALL_INT(args[ARG_out_start].u_int); |
| 244 | + if (args[ARG_out_end].u_int != INT_MAX) { |
| 245 | + dest[7] = MP_OBJ_NEW_QSTR(MP_QSTR_out_end); |
| 246 | + dest[8] = MP_OBJ_NEW_SMALL_INT(args[ARG_out_end].u_int); |
| 247 | + num_kws++; |
| 248 | + } |
232 | 249 | dest[9] = MP_OBJ_NEW_QSTR(MP_QSTR_in_start);
|
233 |
| - dest[10] = mp_obj_new_int(args[ARG_in_start].u_int); |
234 |
| - dest[11] = MP_OBJ_NEW_QSTR(MP_QSTR_in_end); |
235 |
| - dest[12] = mp_obj_new_int(args[ARG_in_end].u_int); |
| 250 | + dest[10] = MP_OBJ_NEW_SMALL_INT(args[ARG_in_start].u_int); |
| 251 | + if (args[ARG_in_end].u_int != INT_MAX) { |
| 252 | + dest[11] = MP_OBJ_NEW_QSTR(MP_QSTR_in_end); |
| 253 | + dest[12] = MP_OBJ_NEW_SMALL_INT(args[ARG_in_end].u_int); |
| 254 | + num_kws++; |
| 255 | + } |
236 | 256 |
|
237 |
| - mp_call_method_n_kw(3, 4, dest); |
| 257 | + mp_call_method_n_kw(3, num_kws, dest); |
238 | 258 |
|
239 | 259 | return mp_const_none;
|
240 | 260 | }
|
|
0 commit comments