summaryrefslogtreecommitdiffstatshomepage
path: root/py/modmicropython.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-04-10 17:19:36 +1000
committerDamien George <damien.p.george@gmail.com>2017-04-18 17:24:30 +1000
commitbbb4b9822f094825d7e7fd1f7df716adc2598685 (patch)
tree7f024eeedd154dcb82b0691f76638547e1e707d4 /py/modmicropython.c
parent29b26f392283edbdd18808d450ab7dd649dbc200 (diff)
downloadmicropython-bbb4b9822f094825d7e7fd1f7df716adc2598685.tar.gz
micropython-bbb4b9822f094825d7e7fd1f7df716adc2598685.zip
py/modmicropython: Add micropython.kbd_intr() function.
It controls the character that's used to (asynchronously) raise a KeyboardInterrupt exception. Passing "-1" allows to disable the interception of the interrupt character (as long as a port allows such a behaviour).
Diffstat (limited to 'py/modmicropython.c')
-rw-r--r--py/modmicropython.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/py/modmicropython.c b/py/modmicropython.c
index a74e6aa3cb..d767062301 100644
--- a/py/modmicropython.c
+++ b/py/modmicropython.c
@@ -31,6 +31,7 @@
#include "py/stackctrl.h"
#include "py/runtime.h"
#include "py/gc.h"
+#include "py/mphal.h"
// Various builtins specific to MicroPython runtime,
// living in micropython module
@@ -129,6 +130,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
+
#if MICROPY_ENABLE_SCHEDULER
STATIC mp_obj_t mp_micropython_schedule(mp_obj_t function, mp_obj_t arg) {
if (!mp_sched_schedule(function, arg)) {
@@ -162,6 +171,9 @@ STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_heap_lock), MP_ROM_PTR(&mp_micropython_heap_lock_obj) },
{ MP_ROM_QSTR(MP_QSTR_heap_unlock), MP_ROM_PTR(&mp_micropython_heap_unlock_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_SCHEDULER
{ MP_ROM_QSTR(MP_QSTR_schedule), MP_ROM_PTR(&mp_micropython_schedule_obj) },
#endif