@@ -140,11 +140,33 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_
140140#endif
141141
142142#if MICROPY_KBD_EXCEPTION
143- STATIC mp_obj_t mp_micropython_kbd_intr (mp_obj_t int_chr_in ) {
144- mp_hal_set_interrupt_char (mp_obj_get_int (int_chr_in ));
143+ STATIC mp_obj_t mp_micropython_kbd_intr (size_t n_args , const mp_obj_t * args ) {
144+ int c = mp_obj_get_int (args [0 ]);
145+ mp_hal_set_persistent_interrupt_char (c );
146+ if (n_args == 1 ) {
147+ if (c == -1 ) {
148+ mp_hal_set_persistent_reset_char (-1 );
149+ }
150+ } else {
151+ mp_hal_set_persistent_reset_char (mp_obj_get_int (args [1 ]));
152+ }
145153 return mp_const_none ;
146154}
147- STATIC MP_DEFINE_CONST_FUN_OBJ_1 (mp_micropython_kbd_intr_obj , mp_micropython_kbd_intr );
155+ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mp_micropython_kbd_intr_obj , 1 , 2 , mp_micropython_kbd_intr );
156+
157+ STATIC mp_obj_t mp_micropython_get_kbd_intr (void ) {
158+
159+ STATIC const qstr kbd_intr_fields [] = {
160+ MP_QSTR_interrupt , MP_QSTR_reset
161+ };
162+
163+ mp_obj_t tuple [2 ];
164+ tuple [0 ] = mp_obj_new_int (mp_hal_get_persistent_interrupt_char ());
165+ tuple [1 ] = mp_obj_new_int (mp_hal_get_persistent_reset_char ());
166+
167+ return mp_obj_new_attrtuple (kbd_intr_fields , 2 , tuple );
168+ }
169+ STATIC MP_DEFINE_CONST_FUN_OBJ_0 (mp_micropython_get_kbd_intr_obj , mp_micropython_get_kbd_intr );
148170#endif
149171
150172#if MICROPY_ENABLE_SCHEDULER
@@ -187,6 +209,7 @@ STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = {
187209 #endif
188210 #if MICROPY_KBD_EXCEPTION
189211 { MP_ROM_QSTR (MP_QSTR_kbd_intr ), MP_ROM_PTR (& mp_micropython_kbd_intr_obj ) },
212+ { MP_ROM_QSTR (MP_QSTR_get_kbd_intr ), MP_ROM_PTR (& mp_micropython_get_kbd_intr_obj ) },
190213 #endif
191214 #if MICROPY_ENABLE_SCHEDULER
192215 { MP_ROM_QSTR (MP_QSTR_schedule ), MP_ROM_PTR (& mp_micropython_schedule_obj ) },
0 commit comments