@@ -180,12 +180,12 @@ STATIC void pyb_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_ki
180180 mp_printf (print , "Pin(%u)" , self -> phys_port );
181181}
182182
183- // pin.init(mode, pull=Pin.PULL_NONE, af=-1 )
183+ // pin.init(mode, pull=None, *, value )
184184STATIC mp_obj_t pyb_pin_obj_init_helper (pyb_pin_obj_t * self , mp_uint_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
185185 enum { ARG_mode , ARG_pull , ARG_value };
186186 static const mp_arg_t allowed_args [] = {
187187 { MP_QSTR_mode , MP_ARG_REQUIRED | MP_ARG_INT },
188- { MP_QSTR_pull , MP_ARG_INT , {.u_int = GPIO_PULL_NONE }},
188+ { MP_QSTR_pull , MP_ARG_OBJ , {.u_obj = mp_const_none }},
189189 { MP_QSTR_value , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = MP_OBJ_NULL }},
190190 };
191191
@@ -197,7 +197,10 @@ STATIC mp_obj_t pyb_pin_obj_init_helper(pyb_pin_obj_t *self, mp_uint_t n_args, c
197197 uint mode = args [ARG_mode ].u_int ;
198198
199199 // get pull mode
200- uint pull = args [ARG_pull ].u_int ;
200+ uint pull = GPIO_PULL_NONE ;
201+ if (args [ARG_pull ].u_obj != mp_const_none ) {
202+ pull = mp_obj_get_int (args [ARG_pull ].u_obj );
203+ }
201204
202205 // get initial value
203206 int value ;
@@ -343,7 +346,6 @@ STATIC const mp_map_elem_t pyb_pin_locals_dict_table[] = {
343346 { MP_OBJ_NEW_QSTR (MP_QSTR_IN ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_INPUT ) },
344347 { MP_OBJ_NEW_QSTR (MP_QSTR_OUT ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_OUTPUT ) },
345348 { MP_OBJ_NEW_QSTR (MP_QSTR_OPEN_DRAIN ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_OPEN_DRAIN ) },
346- { MP_OBJ_NEW_QSTR (MP_QSTR_PULL_NONE ), MP_OBJ_NEW_SMALL_INT (GPIO_PULL_NONE ) },
347349 { MP_OBJ_NEW_QSTR (MP_QSTR_PULL_UP ), MP_OBJ_NEW_SMALL_INT (GPIO_PULL_UP ) },
348350 //{ MP_OBJ_NEW_QSTR(MP_QSTR_PULL_DOWN), MP_OBJ_NEW_SMALL_INT(GPIO_PULL_DOWN) },
349351
0 commit comments