diff options
author | John Crispin <blogic@openwrt.org> | 2008-08-04 22:56:46 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2008-08-04 22:56:46 +0000 |
commit | 664624ac96373ccf03d2d91fee83ae020c5158d0 (patch) | |
tree | eeae1e4c7ea59dde6c770573cf50916dac9da443 | |
parent | fce073c92947e74fb98e56abf6972267a7e2479c (diff) | |
download | master-187ad058-664624ac96373ccf03d2d91fee83ae020c5158d0.tar.gz master-187ad058-664624ac96373ccf03d2d91fee83ae020c5158d0.tar.bz2 master-187ad058-664624ac96373ccf03d2d91fee83ae020c5158d0.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
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12104 3c298f89-4303-0410-b956-a3cf2f4a3e73
-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 + } |