@@ -180,12 +180,12 @@ STATIC void pyb_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_ki
180
180
mp_printf (print , "Pin(%u)" , self -> phys_port );
181
181
}
182
182
183
- // pin.init(mode, pull=Pin.PULL_NONE, af=-1 )
183
+ // pin.init(mode, pull=None, *, value )
184
184
STATIC 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 ) {
185
185
enum { ARG_mode , ARG_pull , ARG_value };
186
186
static const mp_arg_t allowed_args [] = {
187
187
{ 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 }},
189
189
{ MP_QSTR_value , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = MP_OBJ_NULL }},
190
190
};
191
191
@@ -197,7 +197,10 @@ STATIC mp_obj_t pyb_pin_obj_init_helper(pyb_pin_obj_t *self, mp_uint_t n_args, c
197
197
uint mode = args [ARG_mode ].u_int ;
198
198
199
199
// 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
+ }
201
204
202
205
// get initial value
203
206
int value ;
@@ -343,7 +346,6 @@ STATIC const mp_map_elem_t pyb_pin_locals_dict_table[] = {
343
346
{ MP_OBJ_NEW_QSTR (MP_QSTR_IN ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_INPUT ) },
344
347
{ MP_OBJ_NEW_QSTR (MP_QSTR_OUT ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_OUTPUT ) },
345
348
{ 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 ) },
347
349
{ MP_OBJ_NEW_QSTR (MP_QSTR_PULL_UP ), MP_OBJ_NEW_SMALL_INT (GPIO_PULL_UP ) },
348
350
//{ MP_OBJ_NEW_QSTR(MP_QSTR_PULL_DOWN), MP_OBJ_NEW_SMALL_INT(GPIO_PULL_DOWN) },
349
351
0 commit comments