Skip to content
Snippets Groups Projects
Commit 402fa11e authored by schneider's avatar schneider
Browse files

fix(api): keep list of python callbacks

parent 85ce625a
No related branches found
No related tags found
No related merge requests found
Pipeline #1309 passed
......@@ -5,23 +5,23 @@
#include "api/common.h"
#include "mphalport.h"
mp_obj_t bhi160_callback = NULL;
mp_obj_t callbacks[API_INT_MAX + 1] = {
0,
};
static void interrupt_set(api_int_id_t id, mp_obj_t func)
{
// TODO: maintain list of interrupts callbacks
if (id == API_INT_BHI160) {
bhi160_callback = func;
if (id <= API_INT_MAX) {
callbacks[id] = func;
}
}
void api_interrupt_handler_catch_all(api_int_id_t id)
{
// TODO: iterate over registered callbacks
if (id == API_INT_BHI160) {
if (bhi160_callback) {
if (id <= API_INT_MAX) {
if (callbacks[id]) {
mp_sched_schedule(
bhi160_callback, MP_OBJ_NEW_SMALL_INT(0)
callbacks[id], MP_OBJ_NEW_SMALL_INT(id)
);
}
}
......@@ -52,8 +52,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(
STATIC const mp_rom_map_elem_t interrupt_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_interrupt) },
{ MP_ROM_QSTR(MP_QSTR_set_callback), MP_ROM_PTR(&interrupt_set_callback_obj) },
{ MP_ROM_QSTR(MP_QSTR_enable_callback), MP_ROM_PTR(&interrupt_enable_callback_obj) },
{ MP_ROM_QSTR(MP_QSTR_set_callback),
MP_ROM_PTR(&interrupt_set_callback_obj) },
{ MP_ROM_QSTR(MP_QSTR_enable_callback),
MP_ROM_PTR(&interrupt_enable_callback_obj) },
{ MP_ROM_QSTR(MP_QSTR_BHI160), MP_OBJ_NEW_SMALL_INT(2) },
};
STATIC MP_DEFINE_CONST_DICT(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment