summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-11-02 14:14:23 -0700
committerKeith Packard <keithp@keithp.com>2016-11-17 22:18:39 -0800
commit545206bd44a03bfc7f117957208afe7dc60c416b (patch)
tree4feb6a0dfac40b6d7b49ddf53b308fddf0d62e78
parent338723847e66f7c34a6b5e54d094ed52dc5665c3 (diff)
altos/kernel: Make ao_cmd_readline public. Return char from ao_cmd_lex.
With these two changes, the readline function can be used by other code. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/kernel/ao.h3
-rw-r--r--src/kernel/ao_cmd.c19
2 files changed, 14 insertions, 8 deletions
diff --git a/src/kernel/ao.h b/src/kernel/ao.h
index fb41d7a9..9ab7991b 100644
--- a/src/kernel/ao.h
+++ b/src/kernel/ao.h
@@ -170,6 +170,9 @@ void
ao_put_string(__code char *s);
void
+ao_cmd_readline(void);
+
+char
ao_cmd_lex(void);
void
diff --git a/src/kernel/ao_cmd.c b/src/kernel/ao_cmd.c
index 10716afd..077d7de1 100644
--- a/src/kernel/ao_cmd.c
+++ b/src/kernel/ao_cmd.c
@@ -24,13 +24,15 @@ __pdata uint32_t ao_cmd_lex_u32;
__pdata char ao_cmd_lex_c;
__pdata enum ao_cmd_status ao_cmd_status;
+#ifndef AO_CMD_LEN
#if AO_PYRO_NUM
-#define CMD_LEN 128
+#define AO_CMD_LEN 128
#else
-#define CMD_LEN 48
+#define AO_CMD_LEN 48
+#endif
#endif
-static __xdata char cmd_line[CMD_LEN];
+static __xdata char cmd_line[AO_CMD_LEN];
static __pdata uint8_t cmd_len;
static __pdata uint8_t cmd_i;
@@ -48,8 +50,8 @@ backspace(void)
ao_put_string ("\010 \010");
}
-static void
-readline(void)
+void
+ao_cmd_readline(void)
{
char c;
if (ao_echo())
@@ -88,7 +90,7 @@ readline(void)
break;
}
- if (cmd_len >= CMD_LEN - 2)
+ if (cmd_len >= AO_CMD_LEN - 2)
continue;
cmd_line[cmd_len++] = c;
if (ao_echo())
@@ -99,12 +101,13 @@ readline(void)
cmd_i = 0;
}
-void
+char
ao_cmd_lex(void)
{
ao_cmd_lex_c = '\n';
if (cmd_i < cmd_len)
ao_cmd_lex_c = cmd_line[cmd_i++];
+ return ao_cmd_lex_c;
}
static void
@@ -376,7 +379,7 @@ ao_cmd(void)
void (*__xdata func)(void);
for (;;) {
- readline();
+ ao_cmd_readline();
ao_cmd_lex();
ao_cmd_white();
c = ao_cmd_lex_c;