@@ -110,7 +110,7 @@ STATIC const uint8_t nvic_irq_channel[EXTI_NUM_VECTORS] = {
110110//
111111// NOTE: param is for C callers. Python can use closure to get an object bound
112112// with the function.
113- uint extint_register (mp_obj_t pin_obj , mp_obj_t mode_obj , mp_obj_t pull_obj , mp_obj_t callback_obj , bool override_callback_obj , void * param ) {
113+ uint extint_register (mp_obj_t pin_obj , uint32_t mode , uint32_t pull , mp_obj_t callback_obj , bool override_callback_obj , void * param ) {
114114 const pin_obj_t * pin = NULL ;
115115 uint v_line ;
116116
@@ -129,20 +129,18 @@ uint extint_register(mp_obj_t pin_obj, mp_obj_t mode_obj, mp_obj_t pull_obj, mp_
129129 pin = pin_find (pin_obj );
130130 v_line = pin -> pin ;
131131 }
132- int mode = mp_obj_get_int (mode_obj );
133132 if (mode != GPIO_MODE_IT_RISING &&
134133 mode != GPIO_MODE_IT_FALLING &&
135134 mode != GPIO_MODE_IT_RISING_FALLING &&
136135 mode != GPIO_MODE_EVT_RISING &&
137136 mode != GPIO_MODE_EVT_FALLING &&
138137 mode != GPIO_MODE_EVT_RISING_FALLING ) {
139- nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "Invalid ExtInt Mode: %d" , mode ));
138+ nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "invalid ExtInt Mode: %d" , mode ));
140139 }
141- int pull = mp_obj_get_int (pull_obj );
142140 if (pull != GPIO_NOPULL &&
143141 pull != GPIO_PULLUP &&
144142 pull != GPIO_PULLDOWN ) {
145- nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "Invalid ExtInt Pull: %d" , pull ));
143+ nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "invalid ExtInt Pull: %d" , pull ));
146144 }
147145
148146 extint_vector_t * v = & extint_vector [v_line ];
@@ -239,12 +237,12 @@ STATIC mp_obj_t extint_regs(void) {
239237 return mp_const_none ;
240238}
241239
242- // line_obj = pyb.ExtInt(pin, mode, trigger , callback)
240+ // line_obj = pyb.ExtInt(pin, mode, pull , callback)
243241
244242STATIC const mp_arg_parse_t pyb_extint_make_new_accepted_args [] = {
245243 { MP_QSTR_pin , MP_ARG_PARSE_REQUIRED | MP_ARG_PARSE_OBJ , {.u_obj = MP_OBJ_NULL } },
246- { MP_QSTR_mode , MP_ARG_PARSE_REQUIRED | MP_ARG_PARSE_OBJ , {.u_obj = MP_OBJ_NULL } },
247- { MP_QSTR_trigger , MP_ARG_PARSE_REQUIRED | MP_ARG_PARSE_OBJ , {.u_obj = MP_OBJ_NULL } },
244+ { MP_QSTR_mode , MP_ARG_PARSE_REQUIRED | MP_ARG_PARSE_INT , {.u_int = 0 } },
245+ { MP_QSTR_pull , MP_ARG_PARSE_REQUIRED | MP_ARG_PARSE_INT , {.u_int = 0 } },
248246 { MP_QSTR_callback , MP_ARG_PARSE_REQUIRED | MP_ARG_PARSE_OBJ , {.u_obj = MP_OBJ_NULL } },
249247};
250248#define PYB_EXTINT_MAKE_NEW_NUM_ARGS (sizeof(pyb_extint_make_new_accepted_args) / sizeof(pyb_extint_make_new_accepted_args[0]))
@@ -260,7 +258,7 @@ STATIC mp_obj_t extint_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const
260258
261259 extint_obj_t * self = m_new_obj (extint_obj_t );
262260 self -> base .type = type_in ;
263- self -> line = extint_register (vals [0 ].u_obj , vals [1 ].u_obj , vals [2 ].u_obj , vals [3 ].u_obj , false, NULL );
261+ self -> line = extint_register (vals [0 ].u_obj , vals [1 ].u_int , vals [2 ].u_int , vals [3 ].u_obj , false, NULL );
264262
265263 return self ;
266264}
0 commit comments