ncurses: Fix path in ncursesw.pc
[librecmc/librecmc.git] / package / base-files / files / etc / init.d / led
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008 OpenWrt.org
3
4 START=96
5
6 load_led() {
7         local name
8         local sysfs
9         local trigger
10         local dev
11         local ports
12         local mode
13         local default
14         local delayon
15         local delayoff
16         local interval
17
18         config_get sysfs $1 sysfs
19         config_get name $1 name "$sysfs"
20         config_get trigger $1 trigger "none"
21         config_get dev $1 dev
22         config_get ports $1 port
23         config_get mode $1 mode
24         config_get_bool default $1 default "0"
25         config_get delayon $1 delayon
26         config_get delayoff $1 delayoff
27         config_get interval $1 interval "50"
28         config_get port_state $1 port_state
29         config_get delay $1 delay "150"
30         config_get message $1 message ""
31         config_get gpio $1 gpio "0"
32         config_get_bool inverted $1 inverted "0"
33
34         # execute application led trigger
35         [ -f "/usr/libexec/led-trigger/${trigger}" ] && {
36                 . "/usr/libexec/led-trigger/${trigger}"
37                 return 0
38         }
39
40         [ "$trigger" = "usbdev" ] && {
41                 # Backward compatibility: translate to the new trigger
42                 trigger="usbport"
43                 # Translate port of root hub, e.g. 4-1 -> usb4-port1
44                 ports=$(echo "$dev" | sed -n 's/^\([0-9]*\)-\([0-9]*\)$/usb\1-port\2/p')
45                 # Translate port of extra hub, e.g. 2-2.4 -> 2-2-port4
46                 [ -z "$ports" ] && ports=$(echo "$dev" | sed -n 's/\./-port/p')
47         }
48
49         [ -e /sys/class/leds/${sysfs}/brightness ] && {
50                 echo "setting up led ${name}"
51
52                 printf "%s %s %d\n" \
53                         "$sysfs" \
54                         "$(sed -ne 's/^.*\[\(.*\)\].*$/\1/p' /sys/class/leds/${sysfs}/trigger)" \
55                         "$(cat /sys/class/leds/${sysfs}/brightness)" \
56                                 >> /var/run/led.state
57
58                 [ "$default" = 0 ] &&
59                         echo 0 >/sys/class/leds/${sysfs}/brightness
60
61                 echo $trigger > /sys/class/leds/${sysfs}/trigger 2> /dev/null
62                 ret="$?"
63
64                 [ $default = 1 ] &&
65                         cat /sys/class/leds/${sysfs}/max_brightness > /sys/class/leds/${sysfs}/brightness
66
67                 [ $ret = 0 ] || {
68                         echo >&2 "Skipping trigger '$trigger' for led '$name' due to missing kernel module"
69                         return 1
70                 }
71                 case "$trigger" in
72                 "heartbeat")
73                         echo "${inverted}" > "/sys/class/leds/${sysfs}/invert"
74                         ;;
75
76                 "netdev")
77                         [ -n "$dev" ] && {
78                                 echo $dev > /sys/class/leds/${sysfs}/device_name
79                                 for m in $mode; do
80                                         [ -e "/sys/class/leds/${sysfs}/$m" ] && \
81                                                 echo 1 > /sys/class/leds/${sysfs}/$m
82                                 done
83                                 echo $interval > /sys/class/leds/${sysfs}/interval
84                         }
85                         ;;
86
87                 "timer"|"oneshot")
88                         [ -n "$delayon" ] && \
89                                 echo $delayon > /sys/class/leds/${sysfs}/delay_on
90                         [ -n "$delayoff" ] && \
91                                 echo $delayoff > /sys/class/leds/${sysfs}/delay_off
92                         ;;
93
94                 "usbport")
95                         local p
96
97                         for p in $ports; do
98                                 echo 1 > /sys/class/leds/${sysfs}/ports/$p
99                         done
100                         ;;
101
102                 "port_state")
103                         [ -n "$port_state" ] && \
104                                 echo $port_state > /sys/class/leds/${sysfs}/port_state
105                         ;;
106
107                 "gpio")
108                         echo $gpio > /sys/class/leds/${sysfs}/gpio
109                         echo $inverted > /sys/class/leds/${sysfs}/inverted
110                         ;;
111
112                 switch[0-9]*)
113                         local port_mask speed_mask
114
115                         config_get port_mask $1 port_mask
116                         [ -n "$port_mask" ] && \
117                                 echo $port_mask > /sys/class/leds/${sysfs}/port_mask
118                         config_get speed_mask $1 speed_mask
119                         [ -n "$speed_mask" ] && \
120                                 echo $speed_mask > /sys/class/leds/${sysfs}/speed_mask
121                         [ -n "$mode" ] && \
122                                 echo "$mode" > /sys/class/leds/${sysfs}/mode
123                         ;;
124                 esac
125         }
126 }
127
128 start() {
129         [ -e /sys/class/leds/ ] && {
130                 [ -s /var/run/led.state ] && {
131                         local led trigger brightness
132                         while read led trigger brightness; do
133                                 [ -e "/sys/class/leds/$led/trigger" ] && \
134                                         echo "$trigger" > "/sys/class/leds/$led/trigger"
135
136                                 [ -e "/sys/class/leds/$led/brightness" ] && \
137                                         echo "$brightness" > "/sys/class/leds/$led/brightness"
138                         done < /var/run/led.state
139                         rm /var/run/led.state
140                 }
141
142                 config_load system
143                 config_foreach load_led led
144         }
145 }