diff --git a/esp32/mpconfigport.h b/esp32/mpconfigport.h index b93b3744e9..82fdc031c6 100644 --- a/esp32/mpconfigport.h +++ b/esp32/mpconfigport.h @@ -116,6 +116,7 @@ #define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1) #define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (0) +#define MICROPY_KBD_EXCEPTION (1) #ifndef BOOTLOADER_BUILD #include "freertos/FreeRTOS.h" diff --git a/py/modmicropython.c b/py/modmicropython.c index 675d169cc4..ab5954f6ca 100644 --- a/py/modmicropython.c +++ b/py/modmicropython.c @@ -30,6 +30,7 @@ #include "py/builtin.h" #include "py/stackctrl.h" #include "py/gc.h" +#include "py/mphal.h" // Various builtins specific to MicroPython runtime, // living in micropython module @@ -128,6 +129,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_heap_unlock_obj, mp_micropython_ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_emergency_exception_buf); #endif +#if MICROPY_KBD_EXCEPTION +STATIC mp_obj_t mp_micropython_kbd_intr(mp_obj_t int_chr_in) { + mp_hal_set_interrupt_char(mp_obj_get_int(int_chr_in)); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_micropython_kbd_intr_obj, mp_micropython_kbd_intr); +#endif + STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_micropython) }, { MP_ROM_QSTR(MP_QSTR_const), MP_ROM_PTR(&mp_identity_obj) }, @@ -146,6 +155,9 @@ STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = { #endif #if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF && (MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE == 0) { MP_ROM_QSTR(MP_QSTR_alloc_emergency_exception_buf), MP_ROM_PTR(&mp_alloc_emergency_exception_buf_obj) }, +#endif +#if MICROPY_KBD_EXCEPTION + { MP_ROM_QSTR(MP_QSTR_kbd_intr), MP_ROM_PTR(&mp_micropython_kbd_intr_obj) }, #endif #if MICROPY_ENABLE_GC { MP_ROM_QSTR(MP_QSTR_heap_lock), MP_ROM_PTR(&mp_micropython_heap_lock_obj) },