summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Adolfsson <sadolfsson@google.com>2018-05-08 06:35:59 +0200
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-06-19 20:06:21 +0000
commit1f9477800509c570473cbe4416d4baeb386d0f4f (patch)
treec94c6462d10aecbb6b25fd1999fe551b9340a071
parent391a1763d02e6e672b1a1511e8dc01dc59148990 (diff)
downloadchrome-ec-1f9477800509c570473cbe4416d4baeb386d0f4f.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 Signed-off-by: Stefan Adolfsson <sadolfsson@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1046185 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> (cherry picked from commit 6415c19415738cea4d0df1b827e573954be12d8a) Change-Id: Id515782f5a5ff0861fb95ab63c45dc8ab153f0bb Reviewed-on: https://chromium-review.googlesource.com/1063878
-rw-r--r--util/ectool.c100
1 files changed, 67 insertions, 33 deletions
diff --git a/util/ectool.c b/util/ectool.c
index f0fde6e058..50e5a3a2c8 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -73,14 +73,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"
@@ -7294,7 +7288,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;
@@ -7302,14 +7314,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)
@@ -7343,7 +7356,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;
@@ -7356,10 +7369,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;
}
}
@@ -7393,27 +7406,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;
@@ -7424,21 +7438,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;
@@ -7453,6 +7468,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},
@@ -7468,10 +7505,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},