openwrtv3/package/base-files/files/etc/init.d/led
Felix Fietkau 285d9e364e base-files: add support for speed mask to switch config init scripts
This patch adds extra parameter to switch LED trigger initialization
functions.  New functionality maintains backward compatibility, so
calling functions without setting new speed_mask parameter works
as expected.

Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>

SVN-Revision: 48776
2016-02-25 13:31:29 +00:00

109 lines
2.4 KiB
Bash
Executable file

#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.org
START=96
load_led() {
local name
local sysfs
local trigger
local dev
local mode
local default
local delayon
local delayoff
local interval
config_get sysfs $1 sysfs
config_get name $1 name "$sysfs"
config_get trigger $1 trigger "none"
config_get dev $1 dev
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 ""
config_get gpio $1 gpio "0"
config_get inverted $1 inverted "0"
if [ "$trigger" = "rssi" ]; then
# handled by rssileds userspace process
return
fi
[ -e /sys/class/leds/${sysfs}/brightness ] && {
echo "setting up led ${name}"
[ "$default" = 0 ] &&
echo 0 >/sys/class/leds/${sysfs}/brightness
echo $trigger > /sys/class/leds/${sysfs}/trigger 2> /dev/null
ret="$?"
[ $default = 1 ] &&
cat /sys/class/leds/${sysfs}/max_brightness > /sys/class/leds/${sysfs}/brightness
[ $ret = 0 ] || {
echo >&2 "Skipping trigger '$trigger' for led '$name' due to missing kernel module"
return 1
}
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
;;
"gpio")
echo $gpio > /sys/class/leds/${sysfs}/gpio
echo $inverted > /sys/class/leds/${sysfs}/inverted
;;
switch[0-9]*)
local port_mask speed_mask
config_get port_mask $1 port_mask
[ -n "$port_mask" ] && \
echo $port_mask > /sys/class/leds/${sysfs}/port_mask
config_get speed_mask $1 speed_mask
[ -n "$speed_mask" ] && \
echo $speed_mask > /sys/class/leds/${sysfs}/speed_mask
;;
esac
}
}
start() {
[ -e /sys/class/leds/ ] && {
config_load system
config_foreach load_led led
}
}