diff options
author | Randall Spangler <rspangler@chromium.org> | 2013-03-29 12:40:07 -0700 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-03-29 15:39:34 -0700 |
commit | 97bf36c9d3ad3d96ad6dea7cd6e6f3e164297c43 (patch) | |
tree | 5d4ba65334beb071e4cc09d8a404e859bca398ac /common/keyboard_8042.c | |
parent | c317992194ea089a97c4d54ef77ff4b1e283c248 (diff) | |
download | chrome-ec-97bf36c9d3ad3d96ad6dea7cd6e6f3e164297c43.tar.gz |
Add parse_bool() to centralize parsing boolean options
This way debug commands which previously took only yes/no or on/off or
enable/disable can take any of those options.
BUG=chrome-os-partner:18467
BRANCH=none
TEST=Try "on", "off", "yes", "no", "true", "false", "ena", "disable", for
each of the following commands:
- ilim (spring)
- pll (link)
- power (spring/snow)
- hcdebug (all)
- kblog (link)
- ksscan (all)
- lp5562 (spring)
Change-Id: Ie8e0fae3775b1da711864bcba6682ba5e68a06f1
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/46900
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Diffstat (limited to 'common/keyboard_8042.c')
-rw-r--r-- | common/keyboard_8042.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/common/keyboard_8042.c b/common/keyboard_8042.c index 248a51e2b8..4a058a4f58 100644 --- a/common/keyboard_8042.c +++ b/common/keyboard_8042.c @@ -992,6 +992,7 @@ static int command_keyboard_log(int argc, char **argv) { int i; + /* If no args, print log */ if (argc == 1) { ccprintf("KBC log (len=%d):\n", kblog_len); for (i = 0; kblog_buf && i < kblog_len; ++i) { @@ -1003,7 +1004,14 @@ static int command_keyboard_log(int argc, char **argv) } } ccputs("\n"); - } else if (argc == 2 && !strcasecmp("on", argv[1])) { + return EC_SUCCESS; + } + + /* Otherwise, enable/disable */ + if (!parse_bool(argv[1], &i)) + return EC_ERROR_PARAM1; + + if (i) { if (!kblog_buf) { int rv = shared_mem_acquire( sizeof(*kblog_buf) * MAX_KBLOG, @@ -1013,13 +1021,11 @@ static int command_keyboard_log(int argc, char **argv) kblog_len = 0; return rv; } - } else if (argc == 2 && !strcasecmp("off", argv[1])) { + } else { kblog_len = 0; if (kblog_buf) shared_mem_release(kblog_buf); kblog_buf = NULL; - } else { - return EC_ERROR_PARAM1; } return EC_SUCCESS; @@ -1032,20 +1038,20 @@ DECLARE_CONSOLE_COMMAND(kblog, command_keyboard_log, static int command_keyboard(int argc, char **argv) { + int ena; + if (argc > 1) { - if (!strcasecmp(argv[1], "enable")) - keyboard_enable(1); - else if (!strcasecmp(argv[1], "disable")) - keyboard_enable(0); - else + if (!parse_bool(argv[1], &ena)) return EC_ERROR_PARAM1; + + keyboard_enable(ena); } ccprintf("Enabled: %d\n", keyboard_enabled); return EC_SUCCESS; } DECLARE_CONSOLE_COMMAND(kbd, command_keyboard, - "[enable | disable]", + "[0 | 1]", "Print or toggle keyboard info", NULL); |