summaryrefslogtreecommitdiff
path: root/recipes-bsp/multitech/mtre-leds/mtre-leds.sh
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/multitech/mtre-leds/mtre-leds.sh')
-rwxr-xr-xrecipes-bsp/multitech/mtre-leds/mtre-leds.sh160
1 files changed, 160 insertions, 0 deletions
diff --git a/recipes-bsp/multitech/mtre-leds/mtre-leds.sh b/recipes-bsp/multitech/mtre-leds/mtre-leds.sh
new file mode 100755
index 0000000..773e331
--- /dev/null
+++ b/recipes-bsp/multitech/mtre-leds/mtre-leds.sh
@@ -0,0 +1,160 @@
+#!/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 <start|stop|alarm-on|alarm-off|alarm-minor|device_ready|device_not_ready|start-test|stop-test>"
+ exit 2
+ ;;
+esac