@@ -97,7 +97,7 @@ static void machine_i2c_print(const mp_print_t *print, mp_obj_t self_in, mp_prin
97
97
mp_obj_t machine_i2c_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * all_args ) {
98
98
enum { ARG_id , ARG_freq , ARG_scl , ARG_sda , ARG_timeout };
99
99
static const mp_arg_t allowed_args [] = {
100
- { MP_QSTR_id , MP_ARG_REQUIRED | MP_ARG_OBJ },
100
+ { MP_QSTR_id , MP_ARG_OBJ , {. u_rom_obj = MP_ROM_NONE } },
101
101
{ MP_QSTR_freq , MP_ARG_INT , {.u_int = DEFAULT_I2C_FREQ } },
102
102
{ MP_QSTR_scl , MICROPY_I2C_PINS_ARG_OPTS | MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_rom_obj = MP_ROM_NONE } },
103
103
{ MP_QSTR_sda , MICROPY_I2C_PINS_ARG_OPTS | MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_rom_obj = MP_ROM_NONE } },
@@ -108,8 +108,20 @@ mp_obj_t machine_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n
108
108
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
109
109
mp_arg_parse_all_kw_array (n_args , n_kw , all_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
110
110
111
- // Get I2C bus.
112
- int i2c_id = mp_obj_get_int (args [ARG_id ].u_obj );
111
+ // Bus ID - use the default I2C bus as default
112
+ #ifdef PICO_DEFAULT_I2C
113
+ int i2c_id = PICO_DEFAULT_I2C ;
114
+ #else
115
+ // invalid value
116
+ int i2c_id = -1 ;
117
+ #endif
118
+
119
+ // User provide a value?
120
+ if (args [ARG_id ].u_obj != mp_const_none ){
121
+ i2c_id = mp_obj_get_int (args [ARG_id ].u_obj );
122
+ }
123
+
124
+ // Check if the I2C bus is valid
113
125
if (i2c_id < 0 || i2c_id >= MP_ARRAY_SIZE (machine_i2c_obj )) {
114
126
mp_raise_msg_varg (& mp_type_ValueError , MP_ERROR_TEXT ("I2C(%d) doesn't exist" ), i2c_id );
115
127
}
0 commit comments