From 4422435d32ce9f09cb3433aec07a6248fd07c226 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 13 Mar 2017 10:33:37 +0100 Subject: led: Add blink/flash to led command The LED framework now supports blinking/flashing LEDs, so add this functionality to the led command. Signed-off-by: Sascha Hauer Signed-off-by: Oleksij Rempel Signed-off-by: Sascha Hauer --- commands/led.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'commands/led.c') diff --git a/commands/led.c b/commands/led.c index 354f74df8f..a53f0df6a2 100644 --- a/commands/led.c +++ b/commands/led.c @@ -29,6 +29,44 @@ static int do_led(int argc, char *argv[]) unsigned long value; struct led *led; int ret; + int opt; + int flash = 0, blink = 0; + int blink_on_ms = 500; + int blink_off_ms = 500; + + while ((opt = getopt(argc, argv, "fb")) > 0) { + switch(opt) { + case 'f': + flash = 1; + break; + case 'b': + blink = 1; + break; + } + } + + if (flash || blink) { + int args = argc - optind; + + if (!args || (flash && blink)) + return COMMAND_ERROR_USAGE; + + led = led_by_name_or_number(argv[optind]); + if (!led) { + printf("no such LED: %s\n", argv[optind]); + return 1; + } + + if (args > 1) + blink_on_ms = simple_strtoul(argv[optind + 1], NULL, 0); + if (args > 2) + blink_off_ms = simple_strtoul(argv[optind + 2], NULL, 0); + + if (flash) + return led_flash(led, blink_on_ms); + if (blink) + return led_blink(led, blink_on_ms, blink_off_ms); + } if (argc == 1) { int i = 0; @@ -73,9 +111,13 @@ static int do_led(int argc, char *argv[]) BAREBOX_CMD_HELP_START(led) BAREBOX_CMD_HELP_TEXT("Control the value of a LED. The exact meaning of VALUE is unspecified,") BAREBOX_CMD_HELP_TEXT("it can be a brightness, or a color. Most often a value of '1' means on") -BAREBOX_CMD_HELP_TEXT("and '0' means off.") +BAREBOX_CMD_HELP_TEXT("and '0' means off. Basic usage is 'led '. LEDs can be given") +BAREBOX_CMD_HELP_TEXT("by name or number.") BAREBOX_CMD_HELP_TEXT("") BAREBOX_CMD_HELP_TEXT("Without arguments the available LEDs are listed.") +BAREBOX_CMD_HELP_TEXT("Options:") +BAREBOX_CMD_HELP_OPT ("-b [duration-on-ms] [duration-off-ms]", "blink a LED") +BAREBOX_CMD_HELP_OPT ("-f [duration-ms]", "flash a LED") BAREBOX_CMD_HELP_END BAREBOX_CMD_START(led) -- cgit v1.2.3