diff options
author | Vic Yang <victoryang@chromium.org> | 2014-12-25 01:24:00 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-01-07 17:48:15 +0000 |
commit | 140aa369049a616a4d07de1a0f3f4c946b11ac40 (patch) | |
tree | 03fdd58987ae4ada9984694fd0c109a6b0aa3cb1 /util | |
parent | 35ea0a968caacc73e6ece2bd68db465cc21f07c2 (diff) | |
download | chrome-ec-140aa369049a616a4d07de1a0f3f4c946b11ac40.tar.gz |
pd: Show literal PD state name for 'ectool usbpd'
Currently, 'ectool usbpd' shows PD task state in numerical format. Every
time we add/remove a state, the number changes, and this makes the
command difficult to use. Modify the command to print the name of the PD
task state.
BRANCH=Samus,Ryu
BUG=chrome-os-partner:34296
TEST=Run 'ectool usbpd 0' with different combination of new/old PD
firmware and new/old ectool.
Change-Id: Ic0daa03e9f7565c1322166713c2cce3b7cb93a30
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/237623
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Commit-Queue: Alec Berg <alecaberg@chromium.org>
Tested-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'util')
-rw-r--r-- | util/ectool.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/util/ectool.c b/util/ectool.c index 4e03a90f62..8a5e63a9f4 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -2841,17 +2841,23 @@ int cmd_usb_pd(int argc, char *argv[]) const char *role_str[] = {"", "toggle", "toggle-off", "sink", "source"}; const char *mux_str[] = {"", "none", "usb", "dp", "dock", "auto"}; struct ec_params_usb_pd_control p; + struct ec_response_usb_pd_control_v1 *r_v1 = + (struct ec_response_usb_pd_control_v1 *)ec_inbuf; struct ec_response_usb_pd_control *r = (struct ec_response_usb_pd_control *)ec_inbuf; int rv, i, j; int option_ok; char *e; + int cmdver = 1; BUILD_ASSERT(ARRAY_SIZE(role_str) == USB_PD_CTRL_ROLE_COUNT); BUILD_ASSERT(ARRAY_SIZE(mux_str) == USB_PD_CTRL_MUX_COUNT); p.role = USB_PD_CTRL_ROLE_NO_CHANGE; p.mux = USB_PD_CTRL_MUX_NO_CHANGE; + if (!ec_cmd_version_supported(EC_CMD_USB_PD_CONTROL, cmdver)) + cmdver = 0; + if (argc < 2) { fprintf(stderr, "No port specified.\n"); return -1; @@ -2910,14 +2916,23 @@ int cmd_usb_pd(int argc, char *argv[]) } } - rv = ec_command(EC_CMD_USB_PD_CONTROL, 0, &p, sizeof(p), + rv = ec_command(EC_CMD_USB_PD_CONTROL, cmdver, &p, sizeof(p), ec_inbuf, ec_max_insize); - if ((rv >= 0) && (argc == 2)) + if (rv < 0 || argc != 2) + return (rv < 0) ? rv : 0; + + if (cmdver == 0) { printf("Port C%d is %sabled, Role:%s Polarity:CC%d State:%d\n", p.port, (r->enabled) ? "en" : "dis", r->role == PD_ROLE_SOURCE ? "SRC" : "SNK", r->polarity + 1, r->state); + } else { + printf("Port C%d is %sabled, Role:%s Polarity:CC%d State:%s\n", + p.port, (r_v1->enabled) ? "en" : "dis", + r_v1->role == PD_ROLE_SOURCE ? "SRC" : "SNK", + r_v1->polarity + 1, r_v1->state); + } return (rv < 0 ? rv : 0); } |