summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVic Yang <victoryang@chromium.org>2013-07-04 16:34:50 +0800
committerChromeBot <chrome-bot@google.com>2013-07-11 04:26:09 -0700
commitb3f1d0d0593a430a5fb7605e5fc4337ae0a8833c (patch)
tree51962e353c36e1233f0b81021381a6f3d0922742
parent6b46a0cfc5f26fef296feb3ded61762f1760fc49 (diff)
downloadchrome-ec-b3f1d0d0593a430a5fb7605e5fc4337ae0a8833c.tar.gz
Add function to inject console input from test
This can be used to test console command. BUG=chrome-os-partner:19236 TEST=Build success BRANCH=None Change-Id: I7ce002f9e66fd7786492bacb453f126b9766d741 Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/60978 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--chip/host/uart.c21
-rw-r--r--include/test_util.h4
2 files changed, 23 insertions, 2 deletions
diff --git a/chip/host/uart.c b/chip/host/uart.c
index 9add50d4d2..dc237c53b1 100644
--- a/chip/host/uart.c
+++ b/chip/host/uart.c
@@ -15,6 +15,7 @@
#include "queue.h"
#include "task.h"
#include "uart.h"
+#include "util.h"
static int stopped;
static int int_disabled;
@@ -102,6 +103,21 @@ void uart_enable_interrupt(void)
int_disabled = 0;
}
+void uart_inject_char(char *s, int sz)
+{
+ int i;
+ int num_char;
+
+ for (i = 0; i < sz; i += INPUT_BUFFER_SIZE - 1) {
+ num_char = MIN(INPUT_BUFFER_SIZE - 1, sz - i);
+ if (!queue_has_space(&cached_char, num_char))
+ return;
+ queue_add_units(&cached_char, s + i, num_char);
+ char_available = num_char;
+ trigger_interrupt();
+ }
+}
+
void *uart_monitor_stdin(void *d)
{
struct termios org_settings, new_settings;
@@ -118,9 +134,10 @@ void *uart_monitor_stdin(void *d)
while (1) {
tcsetattr(0, TCSANOW, &new_settings);
rv = read(0, buf, INPUT_BUFFER_SIZE);
- if (queue_has_space(&cached_char, rv))
+ if (queue_has_space(&cached_char, rv)) {
queue_add_units(&cached_char, buf, rv);
- char_available = rv;
+ char_available = rv;
+ }
tcsetattr(0, TCSANOW, &org_settings);
/*
* TODO: Trigger emulated interrupt when we have
diff --git a/include/test_util.h b/include/test_util.h
index d63acfa741..fe7ede5f9b 100644
--- a/include/test_util.h
+++ b/include/test_util.h
@@ -81,4 +81,8 @@ int test_send_host_command(int command, int version, const void *params,
extern int __test_error_count;
+void uart_inject_char(char *s, int sz);
+
+#define UART_INJECT(s) uart_inject_char(s, strlen(s));
+
#endif /* __CROS_EC_TEST_UTIL_H */