summaryrefslogtreecommitdiffstats
path: root/lib/readline.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-11-26 09:47:23 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2016-01-18 09:25:09 +0100
commit266057337402f45adf707ef59beebd2a6821a749 (patch)
tree522ebf43324c9af913035e3044c2397d747c8d2b /lib/readline.c
parentbbdbda0a7442545ab9022f2ec78e45f1d6750f38 (diff)
downloadbarebox-266057337402f45adf707ef59beebd2a6821a749.tar.gz
barebox-266057337402f45adf707ef59beebd2a6821a749.tar.xz
barebox remote control
This adds the ability to control barebox over serial lines. The regular console is designed for human input and is unsuitable for controlling barebox from scripts since characters can be lost on both ends, the data stream contains escape sequences and the prompt cannot be easily matched upon. This approach is based on the RATP protocol. RATP packages start with a binary 0x01 which does not occur in normal console data. Whenever a 0x01 character is detected in the console barebox goes into RATP mode. The RATP packets contain a simple structure with a command/respone type and data for that type. Currently defined types are: BB_RATP_TYPE_COMMAND (host->barebox): Execute a command in the shell BB_RATP_TYPE_COMMAND_RETURN (barebox->host) Sends return value of the command back to the host, also means barebox is ready for the next command BB_RATP_TYPE_CONSOLEMSG (barebox->host) Console message from barebox Planned but not yet implemented are: BB_RATP_TYPE_PING (host->barebox) BB_RATP_TYPE_PONG (barebox->host) For testing purposes BB_RATP_TYPE_GETENV (host->barebox) BB_RATP_TYPE_GETENV_RETURN (barebox->host) Get values of environment variables Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Tested-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Diffstat (limited to 'lib/readline.c')
-rw-r--r--lib/readline.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/readline.c b/lib/readline.c
index c007e10f50..a5dac08af1 100644
--- a/lib/readline.c
+++ b/lib/readline.c
@@ -1,6 +1,8 @@
#include <common.h>
#include <readkey.h>
#include <init.h>
+#include <poller.h>
+#include <ratp.h>
#include <xfuncs.h>
#include <complete.h>
#include <linux/ctype.h>
@@ -197,6 +199,12 @@ int readline(const char *prompt, char *buf, int len)
puts (prompt);
while (1) {
+ while (!tstc()) {
+ poller_call();
+ if (IS_ENABLED(CONFIG_RATP))
+ ratp_run_command();
+ }
+
ichar = read_key();
if ((ichar == '\n') || (ichar == '\r')) {