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 + }