@@ -146,12 +146,11 @@ static void machine_hw_i2c_print(const mp_print_t *print, mp_obj_t self_in, mp_p
146146}
147147
148148mp_obj_t  machine_hw_i2c_make_new (const  mp_obj_type_t  * type , size_t  n_args , size_t  n_kw , const  mp_obj_t  * all_args ) {
149-     MP_MACHINE_I2C_CHECK_FOR_LEGACY_SOFTI2C_CONSTRUCTION (n_args , n_kw , all_args );
150149
151150    // Parse args 
152151    enum  { ARG_id , ARG_scl , ARG_sda , ARG_freq , ARG_timeout  };
153152    static  const  mp_arg_t  allowed_args [] =  {
154-         { MP_QSTR_id , MP_ARG_REQUIRED  |  MP_ARG_OBJ , {.u_obj  =  MP_OBJ_NULL } },
153+         { MP_QSTR_id , MP_ARG_OBJ , {.u_obj  =  MP_OBJ_NULL } },
155154        { MP_QSTR_scl , MP_ARG_KW_ONLY  | MP_ARG_OBJ , {.u_obj  =  MP_OBJ_NULL } },
156155        { MP_QSTR_sda , MP_ARG_KW_ONLY  | MP_ARG_OBJ , {.u_obj  =  MP_OBJ_NULL } },
157156        { MP_QSTR_freq , MP_ARG_KW_ONLY  | MP_ARG_INT , {.u_int  =  400000 } },
@@ -161,7 +160,15 @@ mp_obj_t machine_hw_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_
161160    mp_arg_parse_all_kw_array (n_args , n_kw , all_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
162161
163162    // Get I2C bus 
164-     mp_int_t  i2c_id  =  mp_obj_get_int (args [ARG_id ].u_obj );
163+     // Bus ID - use I2C bus 0 as default 
164+     mp_int_t  i2c_id  =  I2C_NUM_0 ;
165+ 
166+     // User provided a value? 
167+     if  (args [ARG_id ].u_obj  !=  MP_OBJ_NULL ) {
168+         i2c_id  =  mp_obj_get_int (args [ARG_id ].u_obj );
169+     }
170+ 
171+     // Check if the I2C bus is valid 
165172    if  (!(I2C_NUM_0  <= i2c_id  &&  i2c_id  <  I2C_NUM_MAX )) {
166173        mp_raise_msg_varg (& mp_type_ValueError , MP_ERROR_TEXT ("I2C(%d) doesn't exist" ), i2c_id );
167174    }
0 commit comments