summaryrefslogtreecommitdiffstats
path: root/commands/led.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2010-12-18 14:39:45 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2010-12-20 09:57:36 +0100
commit5323cbbbfdea6c7b86dc8260b87c768ba5db89a6 (patch)
tree1610df0a9f9af7303949cc1f7b4c82974c81a83e /commands/led.c
parent32558d1ae5ae15a8e417e9640daf0b7e2e01964f (diff)
downloadbarebox-5323cbbbfdea6c7b86dc8260b87c768ba5db89a6.tar.gz
LED: Add led command
This patch allows controlling LEDs via the command line. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/led.c')
-rw-r--r--commands/led.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/commands/led.c b/commands/led.c
new file mode 100644
index 0000000..360ce7c
--- /dev/null
+++ b/commands/led.c
@@ -0,0 +1,90 @@
+/*
+ * LED command support for barebox
+ *
+ * (C) Copyright 2010 Sascha Hauer, Pengutronix
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <led.h>
+#include <command.h>
+#include <getopt.h>
+#include <errno.h>
+
+static int do_led(struct command *cmdtp, int argc, char *argv[])
+{
+ unsigned long value;
+ struct led *led;
+ int ret;
+
+ if (argc == 1) {
+ int i = 0;
+
+ printf("registered LEDs:\n");
+
+ while ((led = led_by_number(i))) {
+ printf("%-2d: name: %-10s max_value: %d\n",
+ i, led->name ? led->name : "none",
+ led->max_value);
+ i++;
+ }
+ return 0;
+ }
+
+ if (argc != 3)
+ return COMMAND_ERROR_USAGE;
+
+ led = led_by_name_or_number(argv[1]);
+ if (!led) {
+ printf("no such LED: %s\n", argv[1]);
+ return 1;
+ }
+
+ value = simple_strtoul(argv[optind + 1], NULL, 0);
+
+ ret = led_set(led, value);
+ if (ret < 0) {
+ perror("led");
+ return 1;
+ }
+
+ return 0;
+}
+
+/**
+ * @page led_command
+
+The exact meaning of <value> is unspecified. It can be a color in case of rgb
+LEDs or a brightness if this is controllable. In most cases only 1 for enabled
+is allowed.
+
+*/
+
+BAREBOX_CMD_HELP_START(led)
+BAREBOX_CMD_HELP_USAGE("led <led> <value>\n")
+BAREBOX_CMD_HELP_SHORT("control the value of a LED. a value of 0 means disabled\n")
+BAREBOX_CMD_HELP_SHORT("without arguments the available LEDs are listed\n")
+BAREBOX_CMD_HELP_END
+
+BAREBOX_CMD_START(led)
+ .cmd = do_led,
+ .usage = "led <led> <value>",
+ BAREBOX_CMD_HELP(cmd_led_help)
+BAREBOX_CMD_END