diff --git a/peripheral_manager/files/etc/init.d/leds_manager b/peripheral_manager/files/etc/init.d/leds_manager new file mode 100755 index 000000000..80239c8f8 --- /dev/null +++ b/peripheral_manager/files/etc/init.d/leds_manager @@ -0,0 +1,62 @@ +#!/bin/sh /etc/rc.common + +START=20 +USE_PROCD=1 + +setled() { + local enable + local brightness + + config_get_bool enable $1 enable 1 + config_get brightness $1 brightness 100 + ubus call led.$1 set "{\"enable\":$enable,\"brightness\":$brightness}" +} + +start_service() { + local enable + + config_load leds + config_foreach setled led + config_get_bool enable leds enable 1 + + if [ "$enable" == "0" ]; then + ubus call leds set '{"state" : "alloff"}' + else + ubus call leds set '{"state" : "normal"}' + fi +} + +boot() { + local led ledname + + ubus list led* >/dev/null || sleep 1 + ubus list led* >/dev/null || sleep 1 + + [ -f /etc/config/leds ] || touch /etc/config/leds + + if ! uci -q get leds.leds >/dev/null; then + uci set leds.leds=leds + uci set leds.leds.enable=1 + fi + + for led in $(ubus list led.*); do + ledname=${led:4} + case $ledname in + *phy*) continue ;; + esac + if ! uci -q get leds.$ledname >/dev/null; then + uci set leds.$ledname=led + uci set leds.$ledname.enable=1 + fi + done + + uci commit leds + + start +} + +service_triggers() +{ + procd_add_reload_trigger "leds" +} +