a7532faa2fd553f2ebc6555cad2001fc84297e6f
[openwrt/staging/chunkeey.git] / package / base-files / files / lib / functions / leds.sh
1 # Copyright (C) 2013 OpenWrt.org
2
3 get_dt_led_path() {
4 local ledpath
5 local basepath="/proc/device-tree"
6 local nodepath="$basepath/aliases/led-$1"
7
8 [ -f "$nodepath" ] && ledpath=$(cat "$nodepath")
9 [ -n "$ledpath" ] && ledpath="$basepath$ledpath"
10
11 echo "$ledpath"
12 }
13
14 get_dt_led() {
15 local label
16 local ledpath=$(get_dt_led_path $1)
17
18 [ -n "$ledpath" ] && \
19 label=$(cat "$ledpath/label" 2>/dev/null) || \
20 label=$(cat "$ledpath/chan-name" 2>/dev/null) || \
21 label=$(basename "$ledpath")
22
23 echo "$label"
24 }
25
26 led_set_attr() {
27 [ -f "/sys/class/leds/$1/$2" ] && echo "$3" > "/sys/class/leds/$1/$2"
28 }
29
30 led_timer() {
31 led_set_attr $1 "trigger" "timer"
32 led_set_attr $1 "delay_on" "$2"
33 led_set_attr $1 "delay_off" "$3"
34 }
35
36 led_on() {
37 led_set_attr $1 "trigger" "none"
38 led_set_attr $1 "brightness" 255
39 }
40
41 led_off() {
42 led_set_attr $1 "trigger" "none"
43 led_set_attr $1 "brightness" 0
44 }
45
46 status_led_restore_trigger() {
47 local trigger
48 local ledpath=$(get_dt_led_path $1)
49
50 [ -n "$ledpath" ] && \
51 trigger=$(cat "$ledpath/linux,default-trigger" 2>/dev/null)
52
53 [ -n "$trigger" ] && \
54 led_set_attr "$(get_dt_led $1)" "trigger" "$trigger"
55 }
56
57 status_led_set_timer() {
58 led_timer $status_led "$1" "$2"
59 [ -n "$status_led2" ] && led_timer $status_led2 "$1" "$2"
60 }
61
62 status_led_set_heartbeat() {
63 led_set_attr $status_led "trigger" "heartbeat"
64 }
65
66 status_led_on() {
67 led_on $status_led
68 [ -n "$status_led2" ] && led_on $status_led2
69 }
70
71 status_led_off() {
72 led_off $status_led
73 [ -n "$status_led2" ] && led_off $status_led2
74 }
75
76 status_led_blink_slow() {
77 led_timer $status_led 1000 1000
78 }
79
80 status_led_blink_fast() {
81 led_timer $status_led 100 100
82 }
83
84 status_led_blink_preinit() {
85 led_timer $status_led 100 100
86 }
87
88 status_led_blink_failsafe() {
89 led_timer $status_led 50 50
90 }
91
92 status_led_blink_preinit_regular() {
93 led_timer $status_led 200 200
94 }