OpenWrt – Rev 4

Subversion Repositories:
Rev:
#!/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
}