packages: sort network related packages into package/network/
[openwrt/openwrt.git] / package / network / utils / rssileds / files / rssileds.init
diff --git a/package/network/utils/rssileds/files/rssileds.init b/package/network/utils/rssileds/files/rssileds.init
new file mode 100644 (file)
index 0000000..b0d2627
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh /etc/rc.common
+# (C) 2012 Daniel Golle, Allnet GmbH <dgolle@allnet.de>
+
+START=96
+STOP=96
+RSSILEDS_BIN="/usr/sbin/rssileds"
+
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+start_rssid() {
+       local name
+       local dev
+       local threshold
+       local refresh
+       local leds
+       config_get name $1 name
+       config_get dev $1 dev
+       config_get threshold $1 threshold
+       config_get refresh $1 refresh
+       leds="$( cur_iface=$1 ; config_foreach get_led led )"
+       SERVICE_PID_FILE=/var/run/rssileds-$dev.pid
+       service_start $RSSILEDS_BIN $dev $refresh $threshold $leds
+}
+
+stop_rssid() {
+       local dev
+       config_get dev $1 dev
+       SERVICE_PID_FILE=/var/run/rssileds-$dev.pid
+       service_stop $RSSILEDS_BIN
+}
+
+get_led() {
+       local name
+       local sysfs
+       local trigger
+       local iface
+       config_get sysfs $1 sysfs
+       config_get name $1 name "$sysfs"
+       config_get trigger $1 trigger "none"
+       config_get iface $1 iface
+       config_get minq $1 minq
+       config_get maxq $1 maxq
+       config_get offset $1 offset
+       config_get factor $1 factor
+       [ "$trigger" = "rssi" ] || return
+       [ "$iface" = "$cur_iface" ] || return
+       [ ! "$minq" ] || [ ! "$maxq" ] || [ ! "$offset" ] || [ ! "$factor" ] && return
+       echo "none" > /sys/class/leds/$sysfs/trigger
+       echo "$sysfs $minq $maxq $offset $factor"
+}
+
+off_led() {
+       local name
+       local sysfs
+       local trigger
+       config_get sysfs $1 sysfs
+       config_get name $1 name "$sysfs"
+       config_get trigger $1 trigger "none"
+       [ "$trigger" = "rssi" ] || return
+       echo "0" > /sys/class/leds/$sysfs/brightness
+}
+
+start() {
+       [ -e /sys/class/leds/ ] && [ -x "$RSSILEDS_BIN" ] && {
+               config_load system
+               config_foreach start_rssid rssid
+       }
+}
+
+stop() {
+       config_load system
+       config_foreach stop_rssid rssid
+       config_foreach off_led led
+}