diff options
author | Stefan Adolfsson <sadolfsson@google.com> | 2018-05-08 06:35:59 +0200 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-05-11 09:30:36 -0700 |
commit | 6415c19415738cea4d0df1b827e573954be12d8a (patch) | |
tree | 5be1a92de3afbe305a7b9935f7c340242c9f678e /util/ectool.c | |
parent | 64cf05b7e8793bc04258bda702b763755d5f15ee (diff) | |
download | chrome-ec-6415c19415738cea4d0df1b827e573954be12d8a.tar.gz |
CEC: Group ectool subcommands under "ectool cec"
Instead of e.g. "ectool cecwrite", use "ectool cec write" to
not clutter the command list.
BUG=b:76467407
BRANCH=none
TEST=Run "cec read/write/get/set" and make sure they still
work.
CQ-DEPEND=CL:1030218
Change-Id: Id515782f5a5ff0861fb95ab63c45dc8ab153f0bb
Signed-off-by: Stefan Adolfsson <sadolfsson@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1046185
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'util/ectool.c')
-rw-r--r-- | util/ectool.c | 100 |
1 files changed, 67 insertions, 33 deletions
diff --git a/util/ectool.c b/util/ectool.c index 806dd58330..76c65d9b8c 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -76,14 +76,8 @@ const char help_str[] = " Prints supported version mask for a command number\n" " console\n" " Prints the last output to the EC debug console\n" - " cecset <address|enable> <val>\n" - " Set the value of a CEC setting\n" - " cecget <address|enable>\n" - " Get the value of a CEC setting\n" - " cecread [timeout]\n" - " Read data from the CEC bus\n" - " cecwrite [write bytes...]\n" - " Write data on the CEC bus\n" + " cec\n" + " Read or write CEC messages and settings\n" " echash [CMDS]\n" " Various EC hash commands\n" " eventclear <mask>\n" @@ -7849,7 +7843,25 @@ int cmd_wait_event(int argc, char *argv[]) return 0; } -int cmd_cec_write(int argc, char *argv[]) +static void cmd_cec_help(const char *cmd) +{ + fprintf(stderr, + " Usage: %s write [write bytes...]\n" + " Write message on the CEC bus\n" + " Usage: %s read [timeout]\n" + " [timeout] in seconds\n" + " Usage: %s get <param>\n" + " Usage: %s set <param> <val>\n" + " <param> is one of:\n" + " address: CEC receive address\n" + " <val> is the new CEC address\n" + " enable: Enable or disable CEC\n" + " <val> is 1 to enable, 0 to disable\n", + cmd, cmd, cmd, cmd); + +} + +static int cmd_cec_write(int argc, char *argv[]) { char *e; long val; @@ -7857,14 +7869,15 @@ int cmd_cec_write(int argc, char *argv[]) struct ec_params_cec_write p; struct ec_response_get_next_event buffer; - if (argc < 2 || argc > 17) { - fprintf(stderr, "%s <MSG[0]> [MSG[1] ... MSG[15]]>\n", argv[0]); + if (argc < 3 || argc > 18) { + fprintf(stderr, "Invalid number of params\n"); + cmd_cec_help(argv[0]); return -1; } - msg_len = argc - 1; + msg_len = argc - 2; for (i = 0; i < msg_len; i++) { - val = strtol(argv[i + 1], &e, 16); + val = strtol(argv[i + 2], &e, 16); if (e && *e) return -1; if (val < 0 || val > 0xff) @@ -7898,7 +7911,7 @@ int cmd_cec_write(int argc, char *argv[]) return -1; } -int cmd_cec_read(int argc, char *argv[]) +static int cmd_cec_read(int argc, char *argv[]) { int msg_len, i, rv; char *e; @@ -7911,10 +7924,10 @@ int cmd_cec_read(int argc, char *argv[]) return -EINVAL; } - if (argc >= 2) { - timeout = strtol(argv[1], &e, 0); + if (argc >= 3) { + timeout = strtol(argv[2], &e, 0); if (e && *e) { - fprintf(stderr, "Bad timeout value '%s'.\n", argv[1]); + fprintf(stderr, "Bad timeout value '%s'.\n", argv[2]); return -1; } } @@ -7948,27 +7961,28 @@ static int cec_cmd_from_str(const char *str) return -1; } -int cmd_cec_set(int argc, char *argv[]) +static int cmd_cec_set(int argc, char *argv[]) { char *e; struct ec_params_cec_set p; uint8_t val; int cmd; - if (argc != 3) { - fprintf(stderr, "Usage: %s [address|enable] param\n", argv[0]); + if (argc != 4) { + fprintf(stderr, "Invalid number of params\n"); + cmd_cec_help(argv[0]); return -1; } - val = (uint8_t)strtol(argv[2], &e, 0); + val = (uint8_t)strtol(argv[3], &e, 0); if (e && *e) { - fprintf(stderr, "Bad parameter '%s'.\n", argv[2]); + fprintf(stderr, "Bad parameter '%s'.\n", argv[3]); return -1; } - cmd = cec_cmd_from_str(argv[1]); + cmd = cec_cmd_from_str(argv[2]); if (cmd < 0) { - fprintf(stderr, "Invalid command '%s'.\n", argv[1]); + fprintf(stderr, "Invalid command '%s'.\n", argv[2]); return -1; } p.cmd = cmd; @@ -7979,21 +7993,22 @@ int cmd_cec_set(int argc, char *argv[]) } -int cmd_cec_get(int argc, char *argv[]) +static int cmd_cec_get(int argc, char *argv[]) { int rv, cmd; struct ec_params_cec_get p; struct ec_response_cec_get r; - if (argc != 2) { - fprintf(stderr, "Usage: %s [address|enable]\n", argv[0]); + if (argc != 3) { + fprintf(stderr, "Invalid number of params\n"); + cmd_cec_help(argv[0]); return -1; } - cmd = cec_cmd_from_str(argv[1]); + cmd = cec_cmd_from_str(argv[2]); if (cmd < 0) { - fprintf(stderr, "Invalid command '%s'.\n", argv[1]); + fprintf(stderr, "Invalid command '%s'.\n", argv[2]); return -1; } p.cmd = cmd; @@ -8008,6 +8023,28 @@ int cmd_cec_get(int argc, char *argv[]) return 0; } +int cmd_cec(int argc, char *argv[]) +{ + if (argc < 2) { + fprintf(stderr, "Invalid number of params\n"); + cmd_cec_help(argv[0]); + return -1; + } + if (!strcmp(argv[1], "write")) + return cmd_cec_write(argc, argv); + if (!strcmp(argv[1], "read")) + return cmd_cec_read(argc, argv); + if (!strcmp(argv[1], "get")) + return cmd_cec_get(argc, argv); + if (!strcmp(argv[1], "set")) + return cmd_cec_set(argc, argv); + + fprintf(stderr, "Invalid sub command: %s\n", argv[1]); + cmd_cec_help(argv[0]); + + return -1; +} + /* NULL-terminated list of commands */ const struct command commands[] = { {"autofanctrl", cmd_thermal_auto_fan_ctrl}, @@ -8024,10 +8061,7 @@ const struct command commands[] = { {"chipinfo", cmd_chipinfo}, {"cmdversions", cmd_cmdversions}, {"console", cmd_console}, - {"cecwrite", cmd_cec_write}, - {"cecread", cmd_cec_read}, - {"cecset", cmd_cec_set}, - {"cecget", cmd_cec_get}, + {"cec", cmd_cec}, {"echash", cmd_ec_hash}, {"eventclear", cmd_host_event_clear}, {"eventclearb", cmd_host_event_clear_b}, |