base-files: introduce commonly used helper functions for setting leds
authorGabor Juhos <juhosg@openwrt.org>
Mon, 18 Feb 2013 09:56:23 +0000 (09:56 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Mon, 18 Feb 2013 09:56:23 +0000 (09:56 +0000)
Currently, most platforms define such helpers in their own diag.sh
implementation with almost identical code. By factoring out the
common ground it's possible to simplify maintainability and
homogenize the haptics over multiple platforms (so far as is
reasonably practicable, in a next step).

[juhosg:
 - fix led_set_attr parameters in led_timer
 - add led_morse and status_led_set_morse helpers
 - add status_led_blink_{preinit,failsafe} helpers]

Signed-off-by: Michael Heimpold <mhei@heimpold.de>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 35648

package/base-files/Makefile
package/base-files/files/lib/functions/leds.sh [new file with mode: 0644]

index 789b5f6792c78cda3dda205f0c7764a99f703fe6..b763658549f185377cdc0c81dde3a935b77f36b0 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 include $(INCLUDE_DIR)/version.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=133
+PKG_RELEASE:=134
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_BUILD_DEPENDS:=opkg/host
diff --git a/package/base-files/files/lib/functions/leds.sh b/package/base-files/files/lib/functions/leds.sh
new file mode 100644 (file)
index 0000000..743c7da
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/sh
+# Copyright (C) 2013 OpenWrt.org
+
+led_set_attr() {
+       [ -f "/sys/class/leds/$1/$2" ] && echo "$3" > "/sys/class/leds/$1/$2"
+}
+
+led_timer() {
+       led_set_attr $1 "trigger" "timer"
+       led_set_attr $1 "delay_on" "$2"
+       led_set_attr $1 "delay_off" "$3"
+}
+
+led_on() {
+       led_set_attr $1 "trigger" "none"
+       led_set_attr $1 "brightness" 255
+}
+
+led_off() {
+       led_set_attr $1 "trigger" "none"
+       led_set_attr $1 "brightness" 0
+}
+
+led_morse() {
+       led_set_attr $1 "trigger" "morse"
+       led_set_attr $1 "delay" "$2"
+       led_set_attr $1 "message" "$3"
+}
+
+status_led_set_timer() {
+       led_timer $status_led "$1" "$2"
+       [ -n "$status_led2" ] && led_timer $status_led2 "$1" "$2"
+}
+
+status_led_set_heartbeat() {
+       led_set_attr $status_led "trigger" "heartbeat"
+}
+
+status_led_set_morse() {
+       led_morse $status_led "$1" "$2"
+       [ -n "$status_led2" ] && led_morse $status_led2 "$1" "$2"
+}
+
+status_led_on() {
+       led_on $status_led
+       [ -n "$status_led2" ] && led_on $status_led2
+}
+
+status_led_off() {
+       led_off $status_led
+       [ -n "$status_led2" ] && led_off $status_led2
+}
+
+status_led_blink_slow() {
+       led_timer $status_led 1000 1000
+}
+
+status_led_blink_fast() {
+       led_timer $status_led 100 100
+}
+
+status_led_blink_preinit() {
+       led_timer $status_led 200 200
+}
+
+status_led_blink_failsafe() {
+       led_timer $status_led 50 50
+}