ipq806x: add support for indicating the boot and upgrade state using four leds
[openwrt/staging/blogic.git] / target / linux / ipq806x / base-files / etc / diag.sh
index 0bf5934ae190377c436640b90a43b107856c138d..7c9a9d082c839d5f2fdf3fcf2614e45276a14f37 100755 (executable)
@@ -1,34 +1,45 @@
 #!/bin/sh
+# Copyright (C) 2016 Henryk Heisig hyniu@o2.pl
 
 . /lib/functions/leds.sh
 . /lib/ipq806x.sh
 
-get_status_led() {
-       case $(ipq806x_board_name) in
-       c2600)
-               status_led="c2600:blue:status"
-               ;;
-       ea8500)
-               status_led="ea8500:white:power"
-               ;;
-       esac
-}
+boot="$(ipq806x_get_dt_led boot)"
+failsafe="$(ipq806x_get_dt_led failsafe)"
+running="$(ipq806x_get_dt_led running)"
+upgrade="$(ipq806x_get_dt_led upgrade)"
 
 set_state() {
-       get_status_led
+       status_led="$boot"
 
        case "$1" in
        preinit)
                status_led_blink_preinit
                ;;
        failsafe)
+               status_led_off
+               [ -n "$running" ] && {
+                       status_led="$running"
+                       status_led_off
+               }
+               status_led="$failsafe"
                status_led_blink_failsafe
                ;;
        preinit_regular)
                status_led_blink_preinit_regular
                ;;
+       upgrade)
+               [ -n "$running" ] && {
+                       status_led="$upgrade"
+                       status_led_blink_preinit_regular
+               }
+               ;;
        done)
-               status_led_on
+               status_led_off
+               [ -n "$running" ] && {
+                       status_led="$running"
+                       status_led_on
+               }
                ;;
        esac
 }