#!/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 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
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
+ }
+ ;;
+ 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
}