@@ -89,13 +89,13 @@ typedef struct {
8989 uint32_t mode ;
9090} exti_vector_t ;
9191
92- static exti_vector_t exti_vector [EXTI_NUM_VECTORS ];
92+ STATIC exti_vector_t exti_vector [EXTI_NUM_VECTORS ];
9393
9494#if !defined(ETH )
9595#define ETH_WKUP_IRQn 62 // The 405 doesn't have ETH, but we want a value to put in our table
9696#endif
9797
98- static const uint8_t nvic_irq_channel [EXTI_NUM_VECTORS ] = {
98+ STATIC const uint8_t nvic_irq_channel [EXTI_NUM_VECTORS ] = {
9999 EXTI0_IRQn , EXTI1_IRQn , EXTI2_IRQn , EXTI3_IRQn , EXTI4_IRQn ,
100100 EXTI9_5_IRQn , EXTI9_5_IRQn , EXTI9_5_IRQn , EXTI9_5_IRQn , EXTI9_5_IRQn ,
101101 EXTI15_10_IRQn , EXTI15_10_IRQn , EXTI15_10_IRQn , EXTI15_10_IRQn , EXTI15_10_IRQn ,
@@ -201,44 +201,30 @@ void exti_swint(uint line) {
201201 EXTI -> SWIER = (1 << line );
202202}
203203
204- static mp_obj_t exti_obj_line (mp_obj_t self_in ) {
204+ STATIC mp_obj_t exti_obj_line (mp_obj_t self_in ) {
205205 exti_obj_t * self = self_in ;
206206 return MP_OBJ_NEW_SMALL_INT (self -> line );
207207}
208208
209- static mp_obj_t exti_obj_enable (mp_obj_t self_in ) {
209+ STATIC mp_obj_t exti_obj_enable (mp_obj_t self_in ) {
210210 exti_obj_t * self = self_in ;
211211 exti_enable (self -> line );
212212 return mp_const_none ;
213213}
214214
215- static mp_obj_t exti_obj_disable (mp_obj_t self_in ) {
215+ STATIC mp_obj_t exti_obj_disable (mp_obj_t self_in ) {
216216 exti_obj_t * self = self_in ;
217217 exti_disable (self -> line );
218218 return mp_const_none ;
219219}
220220
221- static mp_obj_t exti_obj_swint (mp_obj_t self_in ) {
221+ STATIC mp_obj_t exti_obj_swint (mp_obj_t self_in ) {
222222 exti_obj_t * self = self_in ;
223223 exti_swint (self -> line );
224224 return mp_const_none ;
225225}
226226
227- static MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_line_obj , exti_obj_line ) ;
228- static MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_enable_obj , exti_obj_enable ) ;
229- static MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_disable_obj , exti_obj_disable ) ;
230- static MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_swint_obj , exti_obj_swint ) ;
231-
232- STATIC const mp_map_elem_t exti_locals_dict_table [] = {
233- { MP_OBJ_NEW_QSTR (MP_QSTR_line ), (mp_obj_t ) & exti_obj_line_obj },
234- { MP_OBJ_NEW_QSTR (MP_QSTR_enable ), (mp_obj_t ) & exti_obj_enable_obj },
235- { MP_OBJ_NEW_QSTR (MP_QSTR_disable ), (mp_obj_t ) & exti_obj_disable_obj },
236- { MP_OBJ_NEW_QSTR (MP_QSTR_swint ), (mp_obj_t ) & exti_obj_swint_obj },
237- };
238-
239- STATIC MP_DEFINE_CONST_DICT (exti_locals_dict , exti_locals_dict_table );
240-
241- static mp_obj_t exti_regs (void ) {
227+ STATIC mp_obj_t exti_regs (void ) {
242228 printf ("EXTI_IMR %08lx\n" , EXTI -> IMR );
243229 printf ("EXTI_EMR %08lx\n" , EXTI -> EMR );
244230 printf ("EXTI_RTSR %08lx\n" , EXTI -> RTSR );
@@ -247,44 +233,33 @@ static mp_obj_t exti_regs(void) {
247233 printf ("EXTI_PR %08lx\n" , EXTI -> PR );
248234 return mp_const_none ;
249235}
250- static MP_DEFINE_CONST_FUN_OBJ_0 (exti_regs_obj , exti_regs ) ;
251236
252- typedef struct {
253- const char * name ;
254- uint val ;
255- } exti_const_t ;
256-
257- static const exti_const_t exti_const [] = {
258- { "MODE_IRQ_RISING" , GPIO_MODE_IT_RISING },
259- { "MODE_IRQ_FALLING" , GPIO_MODE_IT_FALLING },
260- { "MODE_IRQ_RISING_FALLING" , GPIO_MODE_IT_RISING_FALLING },
261- { "MODE_EVT_RISING" , GPIO_MODE_EVT_RISING },
262- { "MODE_EVT_FALLING" , GPIO_MODE_EVT_FALLING },
263- { "MODE_EVT_RISING_FALLING" , GPIO_MODE_EVT_RISING_FALLING },
264- };
265- #define EXTI_NUM_CONST (sizeof(exti_const) / sizeof(exti_const[0]))
237+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_line_obj , exti_obj_line );
238+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_enable_obj , exti_obj_enable );
239+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_disable_obj , exti_obj_disable );
240+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (exti_obj_swint_obj , exti_obj_swint );
241+ STATIC MP_DEFINE_CONST_FUN_OBJ_0 (exti_regs_fun_obj , exti_regs );
242+ STATIC MP_DEFINE_CONST_STATICMETHOD_OBJ (exti_regs_obj , (mp_obj_t )& exti_regs_fun_obj );
266243
267- static void exti_load_attr (mp_obj_t self_in , qstr attr_qstr , mp_obj_t * dest ) {
268- (void )self_in ;
269- const char * attr = qstr_str (attr_qstr );
244+ STATIC const mp_map_elem_t exti_locals_dict_table [] = {
245+ { MP_OBJ_NEW_QSTR (MP_QSTR_line ), (mp_obj_t )& exti_obj_line_obj },
246+ { MP_OBJ_NEW_QSTR (MP_QSTR_enable ), (mp_obj_t )& exti_obj_enable_obj },
247+ { MP_OBJ_NEW_QSTR (MP_QSTR_disable ), (mp_obj_t )& exti_obj_disable_obj },
248+ { MP_OBJ_NEW_QSTR (MP_QSTR_swint ), (mp_obj_t )& exti_obj_swint_obj },
249+ { MP_OBJ_NEW_QSTR (MP_QSTR_regs ), (mp_obj_t )& exti_regs_obj },
250+ { MP_OBJ_NEW_QSTR (MP_QSTR_MODE_IRQ_RISING ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_IT_RISING ) },
251+ { MP_OBJ_NEW_QSTR (MP_QSTR_MODE_IRQ_FALLING ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_IT_FALLING ) },
252+ { MP_OBJ_NEW_QSTR (MP_QSTR_MODE_IRQ_RISING_FALLING ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_IT_RISING_FALLING ) },
253+ { MP_OBJ_NEW_QSTR (MP_QSTR_MODE_EVT_RISING ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_EVT_RISING ) },
254+ { MP_OBJ_NEW_QSTR (MP_QSTR_MODE_EVT_FALLING ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_EVT_FALLING ) },
255+ { MP_OBJ_NEW_QSTR (MP_QSTR_MODE_EVT_RISING_FALLING ), MP_OBJ_NEW_SMALL_INT (GPIO_MODE_EVT_RISING_FALLING ) },
256+ };
270257
271- if (strcmp (attr , "regs" ) == 0 ) {
272- dest [0 ] = (mp_obj_t )& exti_regs_obj ;
273- return ;
274- }
275- const exti_const_t * entry = & exti_const [0 ];
276- for (; entry < & exti_const [EXTI_NUM_CONST ]; entry ++ ) {
277- if (strcmp (attr , entry -> name ) == 0 ) {
278- dest [0 ] = MP_OBJ_NEW_SMALL_INT (entry -> val );
279- dest [1 ] = MP_OBJ_NULL ;
280- return ;
281- }
282- }
283- }
258+ STATIC MP_DEFINE_CONST_DICT (exti_locals_dict , exti_locals_dict_table );
284259
285260// line_obj = pyb.Exti(pin, mode, trigger, callback)
286261
287- static mp_obj_t exti_call (mp_obj_t type_in , uint n_args , uint n_kw , const mp_obj_t * args ) {
262+ STATIC mp_obj_t exti_make_new (mp_obj_t type_in , uint n_args , uint n_kw , const mp_obj_t * args ) {
288263 // type_in == exti_obj_type
289264
290265 rt_check_nargs (n_args , 4 , 4 , n_kw , 0 );
@@ -300,28 +275,16 @@ static mp_obj_t exti_call(mp_obj_t type_in, uint n_args, uint n_kw, const mp_obj
300275 return self ;
301276}
302277
303- static void exti_meta_obj_print (void (* print )(void * env , const char * fmt , ...), void * env , mp_obj_t self_in , mp_print_kind_t kind ) {
304- (void ) self_in ;
305- print (env , "<Exti meta>" );
306- }
307-
308- static void exti_obj_print (void (* print )(void * env , const char * fmt , ...), void * env , mp_obj_t self_in , mp_print_kind_t kind ) {
278+ STATIC void exti_obj_print (void (* print )(void * env , const char * fmt , ...), void * env , mp_obj_t self_in , mp_print_kind_t kind ) {
309279 exti_obj_t * self = self_in ;
310280 print (env , "<Exti line=%u>" , self -> line );
311281}
312282
313- static const mp_obj_type_t exti_meta_obj_type = {
314- { & mp_type_type },
315- .name = MP_QSTR_ExtiMeta ,
316- .print = exti_meta_obj_print ,
317- .call = exti_call ,
318- .load_attr = exti_load_attr ,
319- };
320-
321283const mp_obj_type_t exti_obj_type = {
322- { & exti_meta_obj_type },
284+ { & mp_type_type },
323285 .name = MP_QSTR_Exti ,
324286 .print = exti_obj_print ,
287+ .make_new = exti_make_new ,
325288 .locals_dict = (mp_obj_t )& exti_locals_dict ,
326289};
327290
0 commit comments