[backfire] merge r20733
[openwrt-10.03/.git] / target / linux / ar7 / base-files / etc / diag.sh
index 22acc71abfe28663039d4540e0fdbdfc9ad460d5..0ce17cae89e2fbec79e6874cdb3485615ad59498 100644 (file)
@@ -1,19 +1,26 @@
 #!/bin/sh
 # Copyright (C) 2007 OpenWrt.org
 
-set_led() {
-       local led="$1"
-       local state="$2"
-       [ -d "/sys/class/leds/ar7:$led" ] && echo "$state" > "/sys/class/leds/ar7:$led/brightness"
-}
+# This setup gives us 3.5 distinguishable states:
+#
+# Solid OFF:  Bootloader running, or kernel hung (timer task stalled)
+# Solid ON:   Kernel hung (timer task stalled)
+# 5Hz blink:  preinit
+# Heartbeat:  normal operation
 
 set_state() {
-       case "$1" in
-               preinit)
-                       set_led status 1
-               ;;
-               done)
-                       set_led status 0
-               ;;
-       esac
+        case "$1" in
+                preinit)
+                        [ -d /sys/class/leds/status ] && {
+                                echo timer >/sys/class/leds/status/trigger
+                                echo 100 >/sys/class/leds/status/delay_on
+                                echo 100 >/sys/class/leds/status/delay_off
+                        }
+                ;;
+                done)
+                        [ -d /sys/class/leds/status ] && {
+                                echo heartbeat >/sys/class/leds/status/trigger
+                        }
+                ;;
+        esac
 }