diff options
author | John Crispin <john@openwrt.org> | 2008-08-04 22:56:46 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2008-08-04 22:56:46 +0000 |
commit | 72396bd614319492aeb28b3b802d073a53b896a6 (patch) | |
tree | 350486bb5c9b9d0892ed9c42e3c556b0b3296b8f /package/base-files/files | |
parent | 9cda3fb0843c3ab21eb86b6b2761b31bad59912e (diff) | |
download | upstream-72396bd614319492aeb28b3b802d073a53b896a6.tar.gz upstream-72396bd614319492aeb28b3b802d073a53b896a6.tar.bz2 upstream-72396bd614319492aeb28b3b802d073a53b896a6.zip |
add uci led support - /etc/config/system can hold led info which is applied at boot - adds /sbin/led.sh to set/clear leds via a name defined in /etc/config/system
SVN-Revision: 12104
Diffstat (limited to 'package/base-files/files')
-rwxr-xr-x | package/base-files/files/etc/init.d/led | 45 | ||||
-rwxr-xr-x | package/base-files/files/sbin/led.sh | 25 |
2 files changed, 70 insertions, 0 deletions
diff --git a/package/base-files/files/etc/init.d/led b/package/base-files/files/etc/init.d/led new file mode 100755 index 0000000000..7ccb150cfa --- /dev/null +++ b/package/base-files/files/etc/init.d/led @@ -0,0 +1,45 @@ +#!/bin/sh /etc/rc.common +# (C) 2008 openwrt.org + +. /etc/functions.sh + +START=60 + +load_led() { + local name + local sysfs + local trigger + local dev + local mode + local default + + config_get name $1 name + config_get sysfs $1 sysfs + config_get trigger $1 trigger + config_get dev $1 dev + config_get mode $1 mode + config_get default $1 default + + [ -e /sys/class/leds/${sysfs}/brightness -a -n "$name" ] && { + logger "setting up led : $name" + [ -n "$default" ] && { + [ $default -eq 1 ] && + echo 1 >/sys/class/leds/${sysfs}/brightness \ + || echo 0 >/sys/class/leds/${sysfs}/brightness + } + [ -z "$trigger" ] && trigger=none + echo $trigger > /sys/class/leds/${sysfs}/trigger + [ "$trigger" == "netdev" -a -n "$dev" ] && { + [ -z "$mode" ] && mode=link + echo $dev > /sys/class/leds/${sysfs}/device_name + echo $mode > /sys/class/leds/${sysfs}/mode + } + } +} + +start() { + [ -e /sys/class/leds/ ] && { + config_load system + config_foreach load_led led + } +} diff --git a/package/base-files/files/sbin/led.sh b/package/base-files/files/sbin/led.sh new file mode 100755 index 0000000000..e4e92af7ea --- /dev/null +++ b/package/base-files/files/sbin/led.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# (C) 2008 openwrt.org + +. /etc/functions.sh +ACTION=$1 +NAME=$2 +do_led() { + local name + local sysfs + config_get name $1 name + config_get sysfs $1 sysfs + [ "$name" == "$NAME" -a -e "/sys/class/leds/${sysfs}" ] && { + [ "$ACTION" == "set" ] && + echo 1 >/sys/class/leds/${sysfs}/brightness \ + || echo 0 >/sys/class/leds/${sysfs}/brightness + exit 0 + } +} + +[ "$1" == "clear" -o "$1" == "set" ] && + [ -n "$2" ] &&{ + config_load system + config_foreach do_led + exit 1 + } |