X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=package%2Fbase-files%2Ffiles%2Fetc%2Finit.d%2Fled;h=729796bcc7b79fd35cc043b33e5c6265f4193d19;hb=e84354b70dcf985c787a807362adae41f7e6b5e8;hp=7ccb150cfa12c7e83d71155a1e020b3142b28fcb;hpb=3070019b68ff1b0e935e738df270c673b9d3d515;p=openwrt.git diff --git a/package/base-files/files/etc/init.d/led b/package/base-files/files/etc/init.d/led index 7ccb150cfa..729796bcc7 100755 --- a/package/base-files/files/etc/init.d/led +++ b/package/base-files/files/etc/init.d/led @@ -1,9 +1,7 @@ #!/bin/sh /etc/rc.common # (C) 2008 openwrt.org -. /etc/functions.sh - -START=60 +START=96 load_led() { local name @@ -12,28 +10,77 @@ load_led() { local dev local mode local default + local delayon + local delayoff + local interval - config_get name $1 name config_get sysfs $1 sysfs - config_get trigger $1 trigger + config_get name $1 name "$sysfs" + config_get trigger $1 trigger "none" 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 + config_get mode $1 mode "link" + config_get_bool default $1 default "nil" + config_get delayon $1 delayon + config_get delayoff $1 delayoff + config_get interval $1 interval "50" + config_get port_state $1 port_state + config_get delay $1 delay "150" + config_get message $1 message "" + + if [ "$trigger" = "rssi" ]; then + # handled by rssileds userspace process + return + fi + + [ -e /sys/class/leds/${sysfs}/brightness ] && { + echo "setting up led ${name}" + [ "$default" != nil ] && { + [ $default -eq 1 ] && + echo 1 >/sys/class/leds/${sysfs}/brightness + [ $default -eq 1 ] || + 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 - } + case "$trigger" in + "netdev") + [ -n "$dev" ] && { + echo $dev > /sys/class/leds/${sysfs}/device_name + echo $mode > /sys/class/leds/${sysfs}/mode + } + ;; + + "timer") + [ -n "$delayon" ] && \ + echo $delayon > /sys/class/leds/${sysfs}/delay_on + [ -n "$delayoff" ] && \ + echo $delayoff > /sys/class/leds/${sysfs}/delay_off + ;; + + "usbdev") + [ -n "$dev" ] && { + echo $dev > /sys/class/leds/${sysfs}/device_name + echo $interval > /sys/class/leds/${sysfs}/activity_interval + } + ;; + + "port_state") + [ -n "$port_state" ] && \ + echo $port_state > /sys/class/leds/${sysfs}/port_state + ;; + + "morse") + echo $message > /sys/class/leds/${sysfs}/message + echo $delay > /sys/class/leds/${sysfs}/delay + ;; + + switch[0-9]*) + local port_mask + + config_get port_mask $1 port_mask + [ -n "$port_mask" ] && \ + echo $port_mask > /sys/class/leds/${sysfs}/port_mask + ;; + esac } }