summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>2017-01-24 10:01:05 +0100
committerJukka Rissanen <jukka.rissanen@linux.intel.com>2017-01-27 12:35:53 +0200
commit3e65158936b3acd48c7df58b3ef76247778c9f2b (patch)
treedb1ad7c3a07e19d17aefcfcceeca1dca0399403a
parentfb9810978fb77ac1111098e7078eaa2de630b58d (diff)
drivers/console: Making console input generic
Input line length can be modified via Kconfig. Change-Id: I3423fce9814e04b11d11e5d391f85fe1efbe8d17 Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
-rw-r--r--drivers/console/Kconfig7
-rw-r--r--include/drivers/console/console.h49
2 files changed, 56 insertions, 0 deletions
diff --git a/drivers/console/Kconfig b/drivers/console/Kconfig
index 405fb607c..173f5149d 100644
--- a/drivers/console/Kconfig
+++ b/drivers/console/Kconfig
@@ -12,6 +12,13 @@ menuconfig CONSOLE
if CONSOLE
+config CONSOLE_INPUT_MAX_LINE_LEN
+ int "Console maximum input line length"
+ default 128
+ help
+ This option can be used to modify the maximum length a console input
+ can be.
+
config CONSOLE_HAS_DRIVER
bool
default n
diff --git a/include/drivers/console/console.h b/include/drivers/console/console.h
new file mode 100644
index 000000000..21d90e94a
--- /dev/null
+++ b/include/drivers/console/console.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef __CONSOLE_H__
+#define __CONSOLE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CONSOLE_MAX_LINE_LEN CONFIG_CONSOLE_INPUT_MAX_LINE_LEN
+
+/** @brief Console input representation
+ *
+ * This struct is used to represent an input line from a console.
+ * Recorded line must be NULL terminated.
+ */
+struct console_input {
+ /** FIFO uses first 4 bytes itself, reserve space */
+ int _unused;
+ /** Buffer where the input line is recorded */
+ char line[CONSOLE_MAX_LINE_LEN];
+};
+
+/** @brief Console input processing handler signature
+ *
+ * Input processing is started when string is typed in the console.
+ * Carriage return is translated to NULL making string always NULL
+ * terminated. Application before calling register function need to
+ * initialize two fifo queues mentioned below.
+ *
+ * @param avail k_fifo queue keeping available input slots
+ * @param lines k_fifo queue of entered lines which to be processed
+ * in the application code.
+ * @param completion callback for tab completion of entered commands
+ *
+ * @return N/A
+ */
+typedef void (*console_input_fn)(struct k_fifo *avail, struct k_fifo *lines,
+ uint8_t (*completion)(char *str, uint8_t len));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CONSOLE_H__ */