|
76 | 76 | #define I2C_BUS_LOCK_DELETE(self) vSemaphoreDelete(self->lock.handle)
|
77 | 77 | #define I2C_BUS_LOCK_RELEASE(self) xSemaphoreGive(self->lock.handle)
|
78 | 78 | #define I2C_BUS_LOCK_INIT(self) { \
|
79 |
| - lock->handle = xSemaphoreCreateBinaryStatic(&self->lock.buffer); \ |
| 79 | + self->lock.handle = xSemaphoreCreateBinaryStatic(&self->lock.buffer); \ |
80 | 80 | xSemaphoreGive(self->lock.handle); \
|
81 | 81 | }
|
82 | 82 |
|
|
206 | 206 |
|
207 | 207 | static void i2c_bus_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind)
|
208 | 208 | {
|
209 |
| - machine_hw_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); |
| 209 | + mp_machine_hw_i2c_bus_obj_t *self = MP_OBJ_TO_PTR(self_in); |
210 | 210 | int h, l;
|
211 | 211 | i2c_get_period(self->port, &h, &l);
|
212 | 212 | mp_printf(print, "I2C(%u, scl=%u, sda=%u, freq=%u)",
|
|
232 | 232 | mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
233 | 233 |
|
234 | 234 | // Get I2C bus
|
235 |
| - uint8_t i2c_id = (uint8_t)args[ARG_host].u_int); |
| 235 | + uint8_t i2c_id = (uint8_t)args[ARG_host].u_int; |
236 | 236 | if (!(I2C_NUM_0 <= i2c_id && i2c_id < I2C_NUM_MAX)) {
|
237 | 237 | mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("I2C(%u) doesn't exist"), i2c_id);
|
238 | 238 | }
|
|
244 | 244 | mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("I2C host is already in use (%u)"), i2c_id);
|
245 | 245 | }
|
246 | 246 | // Created for the first time, set default pins
|
247 |
| - self->base.type = &mp_machine_i2c_bus_type; |
| 247 | + self->base.type = &mp_machine_hw_i2c_bus_type; |
248 | 248 | self->port = i2c_id;
|
249 | 249 | self->active = 0;
|
250 | 250 | self->device_count = 0;
|
|
329 | 329 |
|
330 | 330 | // Create buffer with memory address
|
331 | 331 | uint8_t memaddr_buf[4];
|
332 |
| - size_t memaddr_len = fill_memaddr_buf(&memaddr_buf[0], memaddr, addrsize); |
| 332 | + size_t memaddr_len = get_memaddr_buf(&memaddr_buf[0], memaddr, addrsize); |
333 | 333 |
|
334 | 334 | // Create partial write buffers
|
335 | 335 | mp_machine_i2c_buf_t bufs[2] = {
|
|
373 | 373 | {
|
374 | 374 | if (self->bus == NULL) return;
|
375 | 375 |
|
376 |
| - uint8_t i = 0 |
| 376 | + uint8_t i = 0; |
377 | 377 |
|
378 | 378 | for (;i<self->bus->device_count;i++) {
|
379 | 379 | if (self->bus->devices[i] == self) {
|
|
425 | 425 |
|
426 | 426 | uint32_t memaddr = 0;
|
427 | 427 |
|
428 |
| - for (uint8_t i=(self->reg_bits / 8) - 1;i>-1;i--) { |
429 |
| - memaddr |= (uint32_t)(((uint8_t)write_bufinfo.buf[i]) << ((~i + (self.reg_bits / 8)) * 8)); |
| 428 | + for (int i=(int)(self->reg_bits / 8) - 1;i>-1;i--) { |
| 429 | + memaddr |= (uint32_t)(((uint8_t *)write_bufinfo.buf[i]) << ((~i + (self->reg_bits / 8)) * 8)); |
430 | 430 | }
|
431 | 431 |
|
432 | 432 | int ret = device_read(self, self->device_id, memaddr, self->reg_bits, (uint8_t *)read_bufinfo.buf, read_bufinfo.len);
|
|
547 | 547 | vstr_init_len(&vstr, num_bytes);
|
548 | 548 |
|
549 | 549 | // do the transfer
|
550 |
| - ret = device_readfrom(self, self->device_id, (uint8_t *)vstr.buf, vstr.len); |
| 550 | + ret = device_readfrom(self, self->device_id, (uint8_t *)vstr.buf, vstr.len, true); |
551 | 551 | if (ret < 0) {
|
552 | 552 | mp_raise_OSError(-ret);
|
553 | 553 | }
|
|
575 | 575 | mp_buffer_info_t bufinfo;
|
576 | 576 | mp_get_buffer_raise(args[ARG_buf].u_obj, &bufinfo, MP_BUFFER_READ);
|
577 | 577 |
|
578 |
| - ret = device_writeto(self, self->device_id, (uint8_t *)bufinfo.buf, bufinfo.len, true); |
| 578 | + int ret = device_writeto(self, self->device_id, (uint8_t *)bufinfo.buf, bufinfo.len, true); |
579 | 579 | if (ret < 0) {
|
580 | 580 | mp_raise_OSError(-ret);
|
581 | 581 | }
|
|
623 | 623 |
|
624 | 624 |
|
625 | 625 | static const mp_rom_map_elem_t i2c_device_locals_dict_table[] = {
|
626 |
| - { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_i2c_init_obj) }, |
627 | 626 | { MP_ROM_QSTR(MP_QSTR_write_readinto), MP_ROM_PTR(&i2c_device_write_readinto_obj) },
|
628 | 627 | { MP_ROM_QSTR(MP_QSTR_read_mem), MP_ROM_PTR(&i2c_device_read_mem_obj) },
|
629 | 628 | { MP_ROM_QSTR(MP_QSTR_write_mem), MP_ROM_PTR(&i2c_device_write_mem_obj) },
|
|
0 commit comments