diff options
Diffstat (limited to 'target/linux/ar7/base-files/etc/diag.sh')
-rw-r--r-- | target/linux/ar7/base-files/etc/diag.sh | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/target/linux/ar7/base-files/etc/diag.sh b/target/linux/ar7/base-files/etc/diag.sh index b8e4dc874..37eed6a1a 100644 --- a/target/linux/ar7/base-files/etc/diag.sh +++ b/target/linux/ar7/base-files/etc/diag.sh @@ -1,34 +1,42 @@ #!/bin/sh -# Copyright (C) 2007 OpenWrt.org +# Copyright (C) 2007-2013 OpenWrt.org # This setup gives us 4.5 distinguishable states: # -# Solid OFF: Bootloader running, or kernel hung (timer task stalled) -# Solid ON: Kernel hung (timer task stalled) -# 5Hz blink: preinit -# 10Hz blink: failsafe -# Heartbeat: normal operation +# (1-LED) Solid OFF: Bootloader running, or kernel hung (timer task stalled) +# (1-LED) Solid ON: Kernel hung (timer task stalled) +# (2-LED) Solid RED: Bootloader running, or kernel hung (timer task stalled) +# (2-LED) Solid YELLOW: Kernel hung (timer task stalled) +# 5Hz blink: preinit +# 10Hz blink: failsafe +# (1-LED) Heartbeat: normal operation +# (2-LED) Solid GREEN: normal operation + +. /lib/functions/leds.sh + +get_status_led() { + [ -d "/sys/class/leds/status" ] && status_led="status" + [ -d "/sys/class/leds/power:green" ] && status_led="power:green" +} set_state() { - 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 - } - ;; - failsafe) - [ -d /sys/class/leds/status ] && { - echo timer >/sys/class/leds/status/trigger - echo 50 >/sys/class/leds/status/delay_on - echo 50 >/sys/class/leds/status/delay_off - } - ;; - done) - [ -d /sys/class/leds/status ] && { - echo heartbeat >/sys/class/leds/status/trigger - } - ;; - esac + get_status_led + + case "$1" in + preinit) + status_led_set_timer 100 100 + ;; + failsafe) + status_led_set_timer 50 50 + ;; + done) + [ "$status_led" = "status" ] && { + status_led_set_heartbeat + } + [ "$status_led" = "power:green" ] && { + status_led_set_on + led_off "power:red" + } + ;; + esac } |