Skip to content

Commit 174bca7

Browse files
committed
stmhal: Remove ExtiMeta object and clean up class constants.
1 parent c3f1126 commit 174bca7

File tree

3 files changed

+49
-73
lines changed

3 files changed

+49
-73
lines changed

stmhal/exti.c

Lines changed: 31 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
321283
const 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

stmhal/help.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,19 @@ STATIC mp_obj_t pyb_help(uint n_args, const mp_obj_t *args) {
5858
mp_obj_print(args[0], PRINT_STR);
5959
printf(" is of type %s\n", mp_obj_get_type_str(args[0]));
6060

61-
mp_obj_type_t *type = mp_obj_get_type(args[0]);
6261
mp_map_t *map = NULL;
63-
if (type == &mp_type_module) {
62+
if (MP_OBJ_IS_TYPE(args[0], &mp_type_module)) {
6463
map = mp_obj_module_get_globals(args[0]);
65-
} else if (type->locals_dict != MP_OBJ_NULL && MP_OBJ_IS_TYPE(type->locals_dict, &dict_type)) {
66-
map = mp_obj_dict_get_map(type->locals_dict);
64+
} else {
65+
mp_obj_type_t *type;
66+
if (MP_OBJ_IS_TYPE(args[0], &mp_type_type)) {
67+
type = args[0];
68+
} else {
69+
type = mp_obj_get_type(args[0]);
70+
}
71+
if (type->locals_dict != MP_OBJ_NULL && MP_OBJ_IS_TYPE(type->locals_dict, &dict_type)) {
72+
map = mp_obj_dict_get_map(type->locals_dict);
73+
}
6774
}
6875
if (map != NULL) {
6976
for (uint i = 0; i < map->alloc; i++) {

stmhal/qstrdefsport.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ Q(Pin)
4040
Q(PinMap)
4141
Q(PinAF)
4242
Q(PinNamed)
43-
Q(ExtiMeta)
4443
Q(rtc_info)
4544
Q(millis)
4645
Q(PULL_NONE)
@@ -69,6 +68,13 @@ Q(line)
6968
Q(enable)
7069
Q(disable)
7170
Q(swint)
71+
Q(regs)
72+
Q(MODE_IRQ_RISING)
73+
Q(MODE_IRQ_FALLING)
74+
Q(MODE_IRQ_RISING_FALLING)
75+
Q(MODE_EVT_RISING)
76+
Q(MODE_EVT_FALLING)
77+
Q(MODE_EVT_RISING_FALLING)
7278

7379
// for I2C object
7480
Q(I2C)

0 commit comments

Comments
 (0)