extmod/machine_i2c: Make SoftI2C configurable via macro option.
The zephyr port doesn't support SoftI2C so it's not enabled, and the legacy I2C constructor check can be removed. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
7c54b64280
commit
122d901ef1
|
@ -33,7 +33,7 @@
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "extmod/machine_i2c.h"
|
#include "extmod/machine_i2c.h"
|
||||||
|
|
||||||
#if MICROPY_PY_MACHINE_I2C
|
#if MICROPY_PY_MACHINE_SOFTI2C
|
||||||
|
|
||||||
typedef mp_machine_soft_i2c_obj_t machine_i2c_obj_t;
|
typedef mp_machine_soft_i2c_obj_t machine_i2c_obj_t;
|
||||||
|
|
||||||
|
@ -240,9 +240,13 @@ int mp_machine_soft_i2c_transfer(mp_obj_base_t *self_in, uint16_t addr, size_t n
|
||||||
return transfer_ret;
|
return transfer_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // MICROPY_PY_MACHINE_SOFTI2C
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
// Generic helper functions
|
// Generic helper functions
|
||||||
|
|
||||||
|
#if MICROPY_PY_MACHINE_I2C || MICROPY_PY_MACHINE_SOFTI2C
|
||||||
|
|
||||||
// For use by ports that require a single buffer of data for a read/write transfer
|
// For use by ports that require a single buffer of data for a read/write transfer
|
||||||
int mp_machine_i2c_transfer_adaptor(mp_obj_base_t *self, uint16_t addr, size_t n, mp_machine_i2c_buf_t *bufs, unsigned int flags) {
|
int mp_machine_i2c_transfer_adaptor(mp_obj_base_t *self, uint16_t addr, size_t n, mp_machine_i2c_buf_t *bufs, unsigned int flags) {
|
||||||
size_t len;
|
size_t len;
|
||||||
|
@ -628,9 +632,13 @@ STATIC const mp_rom_map_elem_t machine_i2c_locals_dict_table[] = {
|
||||||
};
|
};
|
||||||
MP_DEFINE_CONST_DICT(mp_machine_i2c_locals_dict, machine_i2c_locals_dict_table);
|
MP_DEFINE_CONST_DICT(mp_machine_i2c_locals_dict, machine_i2c_locals_dict_table);
|
||||||
|
|
||||||
|
#endif // MICROPY_PY_MACHINE_I2C || MICROPY_PY_MACHINE_SOFTI2C
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
// Implementation of soft I2C
|
// Implementation of soft I2C
|
||||||
|
|
||||||
|
#if MICROPY_PY_MACHINE_SOFTI2C
|
||||||
|
|
||||||
STATIC void mp_machine_soft_i2c_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
STATIC void mp_machine_soft_i2c_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
||||||
mp_machine_soft_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
mp_machine_soft_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||||
mp_printf(print, "SoftI2C(scl=" MP_HAL_PIN_FMT ", sda=" MP_HAL_PIN_FMT ", freq=%u)",
|
mp_printf(print, "SoftI2C(scl=" MP_HAL_PIN_FMT ", sda=" MP_HAL_PIN_FMT ", freq=%u)",
|
||||||
|
@ -711,4 +719,4 @@ const mp_obj_type_t mp_machine_soft_i2c_type = {
|
||||||
.locals_dict = (mp_obj_dict_t *)&mp_machine_i2c_locals_dict,
|
.locals_dict = (mp_obj_dict_t *)&mp_machine_i2c_locals_dict,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MICROPY_PY_MACHINE_I2C
|
#endif // MICROPY_PY_MACHINE_SOFTI2C
|
||||||
|
|
|
@ -159,6 +159,7 @@
|
||||||
#define MICROPY_PY_MACHINE_BITSTREAM (1)
|
#define MICROPY_PY_MACHINE_BITSTREAM (1)
|
||||||
#define MICROPY_PY_MACHINE_PULSE (1)
|
#define MICROPY_PY_MACHINE_PULSE (1)
|
||||||
#define MICROPY_PY_MACHINE_I2C (1)
|
#define MICROPY_PY_MACHINE_I2C (1)
|
||||||
|
#define MICROPY_PY_MACHINE_SOFTI2C (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI (1)
|
#define MICROPY_PY_MACHINE_SPI (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI_MSB (0)
|
#define MICROPY_PY_MACHINE_SPI_MSB (0)
|
||||||
#define MICROPY_PY_MACHINE_SPI_LSB (1)
|
#define MICROPY_PY_MACHINE_SPI_LSB (1)
|
||||||
|
|
|
@ -82,6 +82,7 @@
|
||||||
#define MICROPY_PY_MACHINE_BITSTREAM (1)
|
#define MICROPY_PY_MACHINE_BITSTREAM (1)
|
||||||
#define MICROPY_PY_MACHINE_PULSE (1)
|
#define MICROPY_PY_MACHINE_PULSE (1)
|
||||||
#define MICROPY_PY_MACHINE_I2C (1)
|
#define MICROPY_PY_MACHINE_I2C (1)
|
||||||
|
#define MICROPY_PY_MACHINE_SOFTI2C (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI (1)
|
#define MICROPY_PY_MACHINE_SPI (1)
|
||||||
#define MICROPY_PY_UWEBSOCKET (1)
|
#define MICROPY_PY_UWEBSOCKET (1)
|
||||||
#define MICROPY_PY_WEBREPL (1)
|
#define MICROPY_PY_WEBREPL (1)
|
||||||
|
|
|
@ -126,6 +126,7 @@ uint32_t trng_random_u32(void);
|
||||||
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
|
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
|
||||||
#define MICROPY_PY_MACHINE_PULSE (1)
|
#define MICROPY_PY_MACHINE_PULSE (1)
|
||||||
#define MICROPY_PY_MACHINE_I2C (1)
|
#define MICROPY_PY_MACHINE_I2C (1)
|
||||||
|
#define MICROPY_PY_MACHINE_SOFTI2C (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI (1)
|
#define MICROPY_PY_MACHINE_SPI (1)
|
||||||
#define MICROPY_PY_FRAMEBUF (1)
|
#define MICROPY_PY_FRAMEBUF (1)
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,7 @@
|
||||||
#define MICROPY_PY_UTIME_MP_HAL (1)
|
#define MICROPY_PY_UTIME_MP_HAL (1)
|
||||||
#define MICROPY_PY_MACHINE (1)
|
#define MICROPY_PY_MACHINE (1)
|
||||||
#define MICROPY_PY_MACHINE_PULSE (0)
|
#define MICROPY_PY_MACHINE_PULSE (0)
|
||||||
|
#define MICROPY_PY_MACHINE_SOFTI2C (MICROPY_PY_MACHINE_I2C)
|
||||||
#define MICROPY_PY_MACHINE_SPI (0)
|
#define MICROPY_PY_MACHINE_SPI (0)
|
||||||
#define MICROPY_PY_MACHINE_SPI_MIN_DELAY (0)
|
#define MICROPY_PY_MACHINE_SPI_MIN_DELAY (0)
|
||||||
#define MICROPY_PY_FRAMEBUF (0)
|
#define MICROPY_PY_FRAMEBUF (0)
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
|
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
|
||||||
#define MICROPY_PY_MACHINE_PULSE (1)
|
#define MICROPY_PY_MACHINE_PULSE (1)
|
||||||
#define MICROPY_PY_MACHINE_I2C (1)
|
#define MICROPY_PY_MACHINE_I2C (1)
|
||||||
|
#define MICROPY_PY_MACHINE_SOFTI2C (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI (1)
|
#define MICROPY_PY_MACHINE_SPI (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI_MSB (SPI_MSB_FIRST)
|
#define MICROPY_PY_MACHINE_SPI_MSB (SPI_MSB_FIRST)
|
||||||
#define MICROPY_PY_MACHINE_SPI_LSB (SPI_LSB_FIRST)
|
#define MICROPY_PY_MACHINE_SPI_LSB (SPI_LSB_FIRST)
|
||||||
|
|
|
@ -201,6 +201,7 @@
|
||||||
#define MICROPY_PY_MACHINE_PULSE (1)
|
#define MICROPY_PY_MACHINE_PULSE (1)
|
||||||
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
|
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
|
||||||
#define MICROPY_PY_MACHINE_I2C (1)
|
#define MICROPY_PY_MACHINE_I2C (1)
|
||||||
|
#define MICROPY_PY_MACHINE_SOFTI2C (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI (1)
|
#define MICROPY_PY_MACHINE_SPI (1)
|
||||||
#define MICROPY_PY_MACHINE_SPI_MSB (SPI_FIRSTBIT_MSB)
|
#define MICROPY_PY_MACHINE_SPI_MSB (SPI_FIRSTBIT_MSB)
|
||||||
#define MICROPY_PY_MACHINE_SPI_LSB (SPI_FIRSTBIT_LSB)
|
#define MICROPY_PY_MACHINE_SPI_LSB (SPI_FIRSTBIT_LSB)
|
||||||
|
|
|
@ -53,8 +53,6 @@ STATIC void machine_hard_i2c_print(const mp_print_t *print, mp_obj_t self_in, mp
|
||||||
}
|
}
|
||||||
|
|
||||||
mp_obj_t machine_hard_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
|
mp_obj_t machine_hard_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
|
||||||
MP_MACHINE_I2C_CHECK_FOR_LEGACY_SOFTI2C_CONSTRUCTION(n_args, n_kw, all_args);
|
|
||||||
|
|
||||||
enum { ARG_id, ARG_scl, ARG_sda, ARG_freq, ARG_timeout };
|
enum { ARG_id, ARG_scl, ARG_sda, ARG_freq, ARG_timeout };
|
||||||
static const mp_arg_t allowed_args[] = {
|
static const mp_arg_t allowed_args[] = {
|
||||||
{ MP_QSTR_id, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
{ MP_QSTR_id, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||||
|
|
|
@ -1485,6 +1485,11 @@ typedef double mp_float_t;
|
||||||
#define MICROPY_PY_MACHINE_I2C (0)
|
#define MICROPY_PY_MACHINE_I2C (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Whether to provide the "machine.SoftI2C" class
|
||||||
|
#ifndef MICROPY_PY_MACHINE_SOFTI2C
|
||||||
|
#define MICROPY_PY_MACHINE_SOFTI2C (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MICROPY_PY_MACHINE_SPI
|
#ifndef MICROPY_PY_MACHINE_SPI
|
||||||
#define MICROPY_PY_MACHINE_SPI (0)
|
#define MICROPY_PY_MACHINE_SPI (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue