diff options
Diffstat (limited to 'stmhal/input.c')
-rw-r--r-- | stmhal/input.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/stmhal/input.c b/stmhal/input.c new file mode 100644 index 0000000000..f53018a422 --- /dev/null +++ b/stmhal/input.c @@ -0,0 +1,25 @@ +#include "nlr.h" +#include "misc.h" +#include "mpconfig.h" +#include "qstr.h" +#include "obj.h" +#include "usb.h" + +extern int readline(vstr_t *line, const char *prompt); + +STATIC mp_obj_t mp_builtin_input(uint n_args, const mp_obj_t *args) { + if (n_args == 1) { + mp_obj_print(args[0], PRINT_REPR); + } + vstr_t line; + vstr_init(&line, 16); + int ret = readline(&line, ""); + if (line.len == 0 && ret == VCP_CHAR_CTRL_D) { + nlr_jump(mp_obj_new_exception(&mp_type_EOFError)); + } + mp_obj_t o = mp_obj_new_str((const byte*)line.buf, line.len, false); + vstr_clear(&line); + return o; +} + +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_builtin_input_obj, 0, 1, mp_builtin_input); |