summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-10-23 16:18:32 -0700
committerGerrit <chrome-bot@google.com>2012-10-24 12:55:46 -0700
commitdc53e4db7fb2586ca3429ffb30d223de769e0c57 (patch)
tree8b1aa66aa6b446cd13be06f0b51e1f8e9d771800
parente9dd3ff1ad69fa8780497b6075570acea489ffdd (diff)
downloadchrome-ec-dc53e4db7fb2586ca3429ffb30d223de769e0c57.tar.gz
Clean up console module
Code cleanup and reformatting. No functional changes. BUG=chrome-os-partner:15579 BRANCH=none TEST=compile code; type a debug command like 'help list'. Change-Id: I641215ba3333628f658eec86d9d99718c43b111f Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/36387
-rw-r--r--common/console.c80
-rw-r--r--common/console_output.c4
-rw-r--r--include/console.h45
3 files changed, 77 insertions, 52 deletions
diff --git a/common/console.c b/common/console.c
index 8e580b6a50..cd6c17574e 100644
--- a/common/console.c
+++ b/common/console.c
@@ -17,11 +17,18 @@
static char input_buf[80]; /* Current console command line */
-/* Splits a line of input into words. Stores the count of words in
- * <argc>. Stores pointers to the words in <argv>, which must be at
- * least <max_argc> long. If more than <max_argc> words are found,
- * discards the excess and returns EC_ERROR_OVERFLOW. */
-static int split_words(char *input, int max_argc, int *argc, char **argv)
+/**
+ * Split a line of input into words.
+ *
+ * @param input Input line; modified to add nulls after each word.
+ * @param argc Destination for number of words.
+ * @param argv Destination array for pointers to words; must be at
+ * least MAX_ARGS_PER_COMMAND entries long.
+ *
+ * @return EC_SUCCESS. If more than MAX_ARGS_PER_COMMAND words are found,
+ * discards the excess and returns EC_ERROR_OVERFLOW.
+ */
+static int split_words(char *input, int *argc, char **argv)
{
char *c;
int in_word = 0;
@@ -37,26 +44,31 @@ static int split_words(char *input, int max_argc, int *argc, char **argv)
in_word = 0;
}
} else if (*c == '#') {
- /* After the hash sign is comment, ignored.
- * TODO: Need more logic to suuport escaping. */
+ /* Comments start with hash and go to end of line */
break;
- } else {
- if (!in_word) {
- /* Starting a new word */
- if (*argc >= max_argc)
- return EC_ERROR_OVERFLOW;
-
- argv[*argc] = c;
- in_word = 1;
- }
+ } else if (!in_word) {
+ /* Starting a new word */
+ if (*argc >= MAX_ARGS_PER_COMMAND)
+ return EC_ERROR_OVERFLOW;
+
+ argv[*argc] = c;
+ in_word = 1;
}
}
return EC_SUCCESS;
}
-
-/* Find a command by name. Returns the command structure, or NULL if no match
- * found. */
+/**
+ * Find a command by name.
+ *
+ * Allows partial matches, as long as the partial match is unique to one
+ * command. So "foo" will match "foobar" as long as there isn't also a
+ * command "food".
+ *
+ * @param name Command name to find.
+ *
+ * @return A pointer to the command structure, or NULL if no match found.
+ */
static const struct console_command *find_command(char *name)
{
const struct console_command *cmd, *match = NULL;
@@ -73,9 +85,13 @@ static const struct console_command *find_command(char *name)
return match;
}
-
-/* Handle a line of input containing a single command. Modifies the input
- * string during parsing. */
+/**
+ * Handle a line of input containing a single command.
+ *
+ * @param input Input buffer; modified during parsing.
+ *
+ * @return EC_SUCCESS, or non-zero if error.
+ */
static int handle_command(char *input)
{
const struct console_command *cmd;
@@ -84,7 +100,7 @@ static int handle_command(char *input)
int rv;
/* Split input into words. Ignore words past our limit. */
- split_words(input, MAX_ARGS_PER_COMMAND, &argc, argv);
+ split_words(input, &argc, argv);
/* If no command, nothing to do */
if (!argc)
@@ -119,25 +135,20 @@ static int handle_command(char *input)
return rv;
}
-
-static int console_init(void)
+static void console_init(void)
{
*input_buf = '\0';
uart_set_console_mode(1);
ccprintf("Console is enabled; type HELP for help.\n");
ccputs(PROMPT);
-
- /* TODO: restore channel list from EEPROM */
-
- return EC_SUCCESS;
}
-
-/* handle a console command */
static void console_process(void)
{
- /* Process all the pending commands. Need to do this all at once
- * since our interrupt may have been triggered multiple times. */
+ /*
+ * Process all pending console commands. Need to do this all at once
+ * since our interrupt may have been triggered multiple times.
+ */
while (uart_peek('\n') >= 0) {
uart_gets(input_buf, sizeof(input_buf));
handle_command(input_buf);
@@ -145,14 +156,12 @@ static void console_process(void)
}
}
-
void console_has_input(void)
{
/* Wake up the console task */
task_wake(TASK_ID_CONSOLE);
}
-
void console_task(void)
{
console_init();
@@ -164,7 +173,6 @@ void console_task(void)
}
}
-
/*****************************************************************************/
/* Console commands */
diff --git a/common/console_output.c b/common/console_output.c
index a6a1ec8cce..ea84e6364d 100644
--- a/common/console_output.c
+++ b/common/console_output.c
@@ -11,7 +11,7 @@
/* Default to all channels active */
#ifndef CC_DEFAULT
-#define CC_DEFAULT CC_ALL
+#define CC_DEFAULT CC_ALL
#endif
static uint32_t channel_mask = CC_DEFAULT;
@@ -54,7 +54,6 @@ int cputs(enum console_channel channel, const char *outstr)
return uart_puts(outstr);
}
-
int cprintf(enum console_channel channel, const char *format, ...)
{
int rv;
@@ -70,7 +69,6 @@ int cprintf(enum console_channel channel, const char *format, ...)
return rv;
}
-
void cflush(void)
{
uart_flush_output();
diff --git a/include/console.h b/include/console.h
index 0fb8b48771..f037b252ae 100644
--- a/include/console.h
+++ b/include/console.h
@@ -8,7 +8,6 @@
#ifndef __CROS_EC_CONSOLE_H
#define __CROS_EC_CONSOLE_H
-#include "board.h"
#include "common.h"
/* Console command; used by DECLARE_CONSOLE_COMMAND macro. */
@@ -25,7 +24,6 @@ struct console_command {
#endif
};
-
/* Console channels */
enum console_channel {
CC_COMMAND = 0, /* Console command (interactive I/O). Use this only
@@ -61,16 +59,29 @@ enum console_channel {
/* Mask to use to enable all channels */
#define CC_ALL 0xffffffffUL
-
-/* Put a string to the console channel. */
+/**
+ * Put a string to the console channel.
+ *
+ * @param channel Output chanel
+ * @param outstr String to write
+ *
+ * @return non-zero if output was truncated.
+ */
int cputs(enum console_channel channel, const char *outstr);
-/* Print formatted output to the console channel.
+/**
+ * Print formatted output to the console channel.
+ *
+ * @param channel Output chanel
+ * @param format Format string; see printf.h for valid formatting codes
*
- * See printf.h for valid formatting codes. */
+ * @return non-zero if output was truncated.
+ */
int cprintf(enum console_channel channel, const char *format, ...);
-/* Flush the console output for all channels. */
+/**
+ * Flush the console output for all channels.
+ */
void cflush(void);
/* Convenience macros for printing to the command channel.
@@ -82,14 +93,22 @@ void cflush(void);
* http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html */
#define ccprintf(format, args...) cprintf(CC_COMMAND, format, ## args)
-
-/* Called by UART when a line of input is pending. */
+/**
+ * Called by UART when a line of input is pending.
+ */
void console_has_input(void);
-
-/*
- * Register a console command handler. Note that `name' must never be a
- * beginning of another existing command name.
+/**
+ * Register a console command handler.
+ *
+ * @param name Command name; must not be the beginning of another
+ * existing command name. Note this is NOT in quotes
+ * so it can be concatenated to form a struct name.
+ * @param routine Command handling routine, of the form
+ * int handler(int argc, char **argv)
+ * @param argdesc String describing arguments to command; NULL if none.
+ * @param shorthelp String with one-line description of command.
+ * @param longhelp String with long description of command.
*/
#ifdef CONFIG_CONSOLE_CMDHELP
#define DECLARE_CONSOLE_COMMAND(name, routine, argdesc, shorthelp, longhelp) \