base-files: introduce commonly used helper functions for setting leds
[openwrt.git] / package / base-files / files / lib / functions / leds.sh
1 #!/bin/sh
2 # Copyright (C) 2013 OpenWrt.org
3
4 led_set_attr() {
5         [ -f "/sys/class/leds/$1/$2" ] && echo "$3" > "/sys/class/leds/$1/$2"
6 }
7
8 led_timer() {
9         led_set_attr $1 "trigger" "timer"
10         led_set_attr $1 "delay_on" "$2"
11         led_set_attr $1 "delay_off" "$3"
12 }
13
14 led_on() {
15         led_set_attr $1 "trigger" "none"
16         led_set_attr $1 "brightness" 255
17 }
18
19 led_off() {
20         led_set_attr $1 "trigger" "none"
21         led_set_attr $1 "brightness" 0
22 }
23
24 led_morse() {
25         led_set_attr $1 "trigger" "morse"
26         led_set_attr $1 "delay" "$2"
27         led_set_attr $1 "message" "$3"
28 }
29
30 status_led_set_timer() {
31         led_timer $status_led "$1" "$2"
32         [ -n "$status_led2" ] && led_timer $status_led2 "$1" "$2"
33 }
34
35 status_led_set_heartbeat() {
36         led_set_attr $status_led "trigger" "heartbeat"
37 }
38
39 status_led_set_morse() {
40         led_morse $status_led "$1" "$2"
41         [ -n "$status_led2" ] && led_morse $status_led2 "$1" "$2"
42 }
43
44 status_led_on() {
45         led_on $status_led
46         [ -n "$status_led2" ] && led_on $status_led2
47 }
48
49 status_led_off() {
50         led_off $status_led
51         [ -n "$status_led2" ] && led_off $status_led2
52 }
53
54 status_led_blink_slow() {
55         led_timer $status_led 1000 1000
56 }
57
58 status_led_blink_fast() {
59         led_timer $status_led 100 100
60 }
61
62 status_led_blink_preinit() {
63         led_timer $status_led 200 200
64 }
65
66 status_led_blink_failsafe() {
67         led_timer $status_led 50 50
68 }