#!/bin/bash # # LED to trigger map # declare -A triggers ################################################################## # # # # # LED name # Trigger # Description # # /sys/class/leds # # # ################################################################## triggers[pca955x:0]="led-no-alarm" # ENABLE triggers[pca955x:1]="led-alarm" # ALARM triggers[pca955x:2]="none" # 10/100MBPS (HW controlled) triggers[pca955x:3]="none" # LNK/ACT (HW controlled) triggers[pca955x:4]="vizzini1-tx" # TX (serial) triggers[pca955x:5]="vizzini1-rx" # RX (serial) triggers[pca955x:6]="led-sig4" # LINK Quality Green triggers[pca955x:7]="led-sig3" # LINK Quality Green triggers[pca955x:8]="led-sig2" # LINK Quality Yellow triggers[pca955x:9]="led-sig1" # LINK Quality Red triggers[pca955x:10]="led-cd" # Celullar connectivity triggers[pca955x:11]="netdev" # Cellular activity debug() { [[ "$DEBUG" ]] && builtin echo $@ } leds_enable() { cd /sys/class/leds for led in "${!triggers[@]}" do echo ${triggers[$led]} > $led/trigger debug "LEDS: $led trigger enabled" done } leds_disable() { cd /sys/class/leds for led in "${!triggers[@]}" do echo "none" > $led/trigger done } led_set_alarm() { local cmd="$1" [ x"$cmd" == x"on" ] && mts-io-sysfs store alarm 1 [ x"$cmd" == x"off" ] && mts-io-sysfs store alarm 0 [ x"$cmd" == x"minor" ] && mts-io-sysfs store alarm 2 [ x"$cmd" == x"update" ] && mts-io-sysfs store alarm 100 debug "LEDS: alarm set to $1" } led_set_device_ready() { local cmd="$1" [ x"$cmd" == x"on" ] && mts-io-sysfs store device-ready 1 [ x"$cmd" == x"off" ] && mts-io-sysfs store device-ready 0 debug "LEDS: device_ready set to $1" } led_set_ppp_act() { cd /sys/class/leds for led in "${!triggers[@]}" do if [[ x"${triggers[$led]}" == x"netdev" ]]; then echo "ppp0" > $led/device_name echo "1" > $led/rx echo "1" > $led/tx debug "LEDS: ppp activity trigger is set" fi done } leds_set_brightness() { cd /sys/class/leds for led in "${!triggers[@]}" do local cmd="$1" if [[ x"$cmd" == x"on" ]]; then brightness="255" elif [[ x"$cmd" == x"off" ]]; then brightness="0" fi if [[ x"${triggers[$led]}" == x"led-alarm" ]]; then # # led alarm is inverted # if [[ x"$cmd" == x"on" ]]; then brightness="0" elif [[ x"$cmd" == x"off" ]]; then brightness="255" fi fi echo $brightness > $led/brightness debug "LEDS: $led brightness set to $cmd" done } case $1 in start) leds_disable # disable all triggers leds_set_brightness off # set all leds to off leds_enable # enable all triggers led_set_alarm update # update alarm leds with current alarm status led_set_ppp_act # setup ppp activity led mtre-leds-monitor & # start push-button monitor ;; stop) killall -q mtre-leds-monitor leds_disable # disable all led triggers leds_set_brightness off # set all leds to off ;; alarm-on) led_set_alarm on # store alarm ;; alarm-off) led_set_alarm off # set no alarm ;; alarm-minor) led_set_alarm minor # blink oneshot on minor alarm ;; device_ready) led_set_device_ready on # indicate device readyness ;; device_not_ready) led_set_device_ready off # indicate device readyness ;; start-test) leds_disable # disable all triggers leds_set_brightness on # set all leds to on ;; stop-test) leds_disable # disable all led triggers leds_set_brightness off # set all leds to off leds_enable # enable all triggers led_set_alarm update # update alarm leds with current alarm status led_set_ppp_act # restore ppp activity settings ;; *) echo "Usage: $0 " exit 2 ;; esac