From: Jo-Philipp Wich Date: Wed, 8 Jun 2016 08:14:27 +0000 (+0200) Subject: base-files: maintain LED config state X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=35b33f0413c9f6a263549d63b2b068d74543d876;p=openwrt%2Fstaging%2Fjogo.git base-files: maintain LED config state Record the state of any hardware LED configured through UCI and use that information to revert the state when applying updated settings while maintaining default behaviour of system LEDs. Signed-off-by: Jo-Philipp Wich --- diff --git a/package/base-files/files/etc/init.d/led b/package/base-files/files/etc/init.d/led index a6be788a5e..1d10f723d0 100755 --- a/package/base-files/files/etc/init.d/led +++ b/package/base-files/files/etc/init.d/led @@ -37,6 +37,12 @@ load_led() { [ -e /sys/class/leds/${sysfs}/brightness ] && { echo "setting up led ${name}" + printf "%s %s %d\n" \ + "$sysfs" \ + "$(sed -ne 's/^.*\[\(.*\)\].*$/\1/p' /sys/class/leds/${sysfs}/trigger)" \ + "$(cat /sys/class/leds/${sysfs}/brightness)" \ + >> /var/run/led.state + [ "$default" = 0 ] && echo 0 >/sys/class/leds/${sysfs}/brightness @@ -103,11 +109,17 @@ load_led() { start() { [ -e /sys/class/leds/ ] && { - local led - for led in /sys/class/leds/*; do - [ -e "$led/trigger" ] && echo "none" > "$led/trigger" - [ -e "$led/brightness" ] && echo "0" > "$led/brightness" - done + [ -s /var/run/led.state ] && { + local led trigger brightness + while read led trigger brightness; do + [ -e "/sys/class/leds/$led/trigger" ] && \ + echo "$trigger" > "/sys/class/leds/$led/trigger" + + [ -e "/sys/class/leds/$led/brightness" ] && \ + echo "$brightness" > "/sys/class/leds/$led/brightness" + done < /var/run/led.state + rm /var/run/led.state + } config_load system config_foreach load_led led