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