openwrt/package/network/utils/rssileds/files/rssileds.init

76 lines
1.6 KiB
Bash

#!/bin/sh /etc/rc.common
# (C) 2012 Daniel Golle, Allnet GmbH <dgolle@allnet.de>
START=96
STOP=89
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
}