|
11 | 11 | #include "py/objstr.h" |
12 | 12 | #include "py/runtime.h" |
13 | 13 | #include "openpie_vfs.h" |
14 | | -#include "openpie_mcu.h" |
15 | 14 | #include "syscall.h" |
16 | 15 | #include "msgpack.h" |
17 | 16 | #include "py/mphal.h" |
@@ -129,15 +128,36 @@ STATIC mp_obj_t usystem_repl_call(mp_obj_t func, mp_obj_t locals_obj) { |
129 | 128 | MP_DEFINE_CONST_FUN_OBJ_2(usystem_repl_call_obj, usystem_repl_call); |
130 | 129 |
|
131 | 130 |
|
132 | | -mp_obj_t print_hook = NULL; |
| 131 | +mp_obj_t interrupt_hook_obj = mp_const_none; |
| 132 | + |
| 133 | +STATIC mp_obj_t usystem_interrupt_hook(mp_obj_t hook) { |
| 134 | + interrupt_hook_obj = hook; |
| 135 | + return mp_const_none; |
| 136 | +} |
| 137 | + |
| 138 | +MP_DEFINE_CONST_FUN_OBJ_1(usystem_interrupt_hook_obj, usystem_interrupt_hook); |
| 139 | + |
| 140 | + |
| 141 | +mp_obj_t print_hook_obj = mp_const_none; |
133 | 142 |
|
134 | 143 | STATIC mp_obj_t usystem_print_hook(mp_obj_t hook) { |
135 | | - print_hook = hook; |
| 144 | + print_hook_obj = hook; |
136 | 145 | return mp_const_none; |
137 | 146 | } |
138 | 147 |
|
139 | 148 | MP_DEFINE_CONST_FUN_OBJ_1(usystem_print_hook_obj, usystem_print_hook); |
140 | 149 |
|
| 150 | + |
| 151 | +mp_obj_t input_hook_obj = mp_const_none; |
| 152 | + |
| 153 | +STATIC mp_obj_t usystem_input_hook(mp_obj_t hook) { |
| 154 | + input_hook_obj = hook; |
| 155 | + return mp_const_none; |
| 156 | +} |
| 157 | + |
| 158 | +MP_DEFINE_CONST_FUN_OBJ_1(usystem_input_hook_obj, usystem_input_hook); |
| 159 | + |
| 160 | + |
141 | 161 | STATIC mp_obj_t usystem_invoke(size_t n_args, const mp_obj_t *args) { |
142 | 162 | byte *data = NULL; |
143 | 163 | size_t size = 0; |
@@ -186,12 +206,13 @@ STATIC mp_obj_t usystem_invoke(size_t n_args, const mp_obj_t *args) { |
186 | 206 | MP_DEFINE_CONST_FUN_OBJ_VAR(usystem_invoke_obj, 2, usystem_invoke); |
187 | 207 |
|
188 | 208 |
|
189 | | -STATIC mp_obj_t usystem_signal() { |
190 | | - void *result = (void *) __syscall1(SYS_REQUEST, 0); // 0 = signal |
| 209 | +STATIC mp_obj_t usystem_signal(mp_obj_t ticks_obj) { |
| 210 | + mp_int_t ticks = mp_obj_get_int(ticks_obj); |
| 211 | + void *result = (void *) __syscall2(SYS_SIGNAL, SYS_SIGNAL_REQUEST, (int) ticks); // sleep with ticks |
191 | 212 | return parse_2(result); |
192 | 213 | } |
193 | 214 |
|
194 | | -MP_DEFINE_CONST_FUN_OBJ_0(usystem_signal_obj, usystem_signal); |
| 215 | +MP_DEFINE_CONST_FUN_OBJ_1(usystem_signal_obj, usystem_signal); |
195 | 216 |
|
196 | 217 |
|
197 | 218 | STATIC mp_obj_t usystem_components() { |
@@ -237,28 +258,6 @@ STATIC mp_obj_t usystem_annotations(mp_obj_t address_obj, mp_obj_t method_obj) { |
237 | 258 | MP_DEFINE_CONST_FUN_OBJ_2(usystem_annotations_obj, usystem_annotations); |
238 | 259 |
|
239 | 260 |
|
240 | | -mp_obj_t usystem_set_stdin_char(mp_obj_t obj) { |
241 | | - if (MP_OBJ_IS_INT(obj)) { |
242 | | - mp_int_t value = mp_obj_get_int(obj); |
243 | | - OPENPIE_IO->RXR = value; |
244 | | - return mp_const_true; |
245 | | - } |
246 | | - |
247 | | - return mp_const_false; |
248 | | -} |
249 | | - |
250 | | -MP_DEFINE_CONST_FUN_OBJ_1(usystem_set_stdin_char_obj, usystem_set_stdin_char); |
251 | | - |
252 | | - |
253 | | -mp_obj_t usystem_get_stdout_str() { |
254 | | - void *result = (void *) __syscall1(SYS_LEGACY, SYS_LEGACY_usystem_get_stdout_str); |
255 | | - return parse_2(result); |
256 | | -} |
257 | | - |
258 | | -MP_DEFINE_CONST_FUN_OBJ_0(usystem_get_stdout_str_obj, usystem_get_stdout_str); |
259 | | - |
260 | | - |
261 | | - |
262 | 261 | mp_obj_t usystem_shutdown() { |
263 | 262 | __syscall1(SYS_CONTROL, SYS_CONTROL_SHUTDOWN); |
264 | 263 | __fatal_error("shutdown failure"); |
@@ -293,23 +292,21 @@ STATIC const mp_rom_map_elem_t machine_module_globals_table[] = { |
293 | 292 | {MP_ROM_QSTR(MP_QSTR_repl_compile), MP_ROM_PTR(&usystem_repl_compile_obj)}, |
294 | 293 | {MP_ROM_QSTR(MP_QSTR_repl_call), MP_ROM_PTR(&usystem_repl_call_obj)}, |
295 | 294 |
|
| 295 | + {MP_ROM_QSTR(MP_QSTR_interrupt_hook), MP_ROM_PTR(&usystem_interrupt_hook_obj)}, |
| 296 | + {MP_ROM_QSTR(MP_QSTR_input_hook), MP_ROM_PTR(&usystem_input_hook_obj)}, |
296 | 297 | {MP_ROM_QSTR(MP_QSTR_print_hook), MP_ROM_PTR(&usystem_print_hook_obj)}, |
297 | 298 | {MP_ROM_QSTR(MP_QSTR_invoke), MP_ROM_PTR(&usystem_invoke_obj)}, |
298 | 299 | {MP_ROM_QSTR(MP_QSTR_signal), MP_ROM_PTR(&usystem_signal_obj)}, |
299 | 300 | {MP_ROM_QSTR(MP_QSTR_components), MP_ROM_PTR(&usystem_components_obj)}, |
300 | 301 | {MP_ROM_QSTR(MP_QSTR_methods), MP_ROM_PTR(&usystem_methods_obj)}, |
301 | 302 | {MP_ROM_QSTR(MP_QSTR_annotations), MP_ROM_PTR(&usystem_annotations_obj)}, |
302 | | - {MP_ROM_QSTR(MP_QSTR_set_stdin_char), MP_ROM_PTR(&usystem_set_stdin_char_obj)}, |
303 | | - {MP_ROM_QSTR(MP_QSTR_get_stdout_str), MP_ROM_PTR(&usystem_get_stdout_str_obj)}, |
304 | 303 | {MP_ROM_QSTR(MP_QSTR_shutdown), MP_ROM_PTR(&usystem_shutdown_obj)}, |
305 | 304 | {MP_ROM_QSTR(MP_QSTR_reboot), MP_ROM_PTR(&usystem_reboot_obj)}, |
306 | 305 | {MP_ROM_QSTR(MP_QSTR_debug), MP_ROM_PTR(&usystem_debug_obj)}, |
307 | 306 |
|
308 | | - /* |
309 | 307 | {MP_ROM_QSTR(MP_QSTR_mem8), MP_ROM_PTR(&machine_mem8_obj)}, |
310 | 308 | {MP_ROM_QSTR(MP_QSTR_mem16), MP_ROM_PTR(&machine_mem16_obj)}, |
311 | 309 | {MP_ROM_QSTR(MP_QSTR_mem32), MP_ROM_PTR(&machine_mem32_obj)}, |
312 | | - */ |
313 | 310 | }; |
314 | 311 | STATIC MP_DEFINE_CONST_DICT(machine_module_globals, machine_module_globals_table); |
315 | 312 |
|
|
0 commit comments