diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-22 23:53:50 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-22 23:53:50 +0000 |
commit | 02fa0358005fed02e989e7b1ad9b31f7a9ae8637 (patch) | |
tree | 5da32f082d00a1db50881bc2f83cb11e28d0a970 /stmhal/input.c | |
parent | c91097223d0dced28b874002e759e1907e56e054 (diff) | |
download | micropython-02fa0358005fed02e989e7b1ad9b31f7a9ae8637.tar.gz micropython-02fa0358005fed02e989e7b1ad9b31f7a9ae8637.zip |
stmhal: Add input() and pyb.input() functions.
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); |