@@ -140,11 +140,33 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_
140
140
#endif
141
141
142
142
#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
+ }
145
153
return mp_const_none ;
146
154
}
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 );
148
170
#endif
149
171
150
172
#if MICROPY_ENABLE_SCHEDULER
@@ -187,6 +209,7 @@ STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = {
187
209
#endif
188
210
#if MICROPY_KBD_EXCEPTION
189
211
{ 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 ) },
190
213
#endif
191
214
#if MICROPY_ENABLE_SCHEDULER
192
215
{ MP_ROM_QSTR (MP_QSTR_schedule ), MP_ROM_PTR (& mp_micropython_schedule_obj ) },
0 commit comments