OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 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 "nil" |
||
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 inverted $1 inverted "0" |
||
33 | |||
34 | if [ "$trigger" = "rssi" ]; then |
||
35 | # handled by rssileds userspace process |
||
36 | return |
||
37 | fi |
||
38 | |||
39 | [ "$trigger" = "usbdev" ] && { |
||
40 | # Backward compatibility: translate to the new trigger |
||
41 | trigger="usbport" |
||
42 | # Translate port of root hub, e.g. 4-1 -> usb4-port1 |
||
43 | ports=$(echo "$dev" | sed -n 's/^\([0-9]*\)-\([0-9]*\)$/usb\1-port\2/p') |
||
44 | # Translate port of extra hub, e.g. 2-2.4 -> 2-2-port4 |
||
45 | [ -z "$ports" ] && ports=$(echo "$dev" | sed -n 's/\./-port/p') |
||
46 | } |
||
47 | |||
48 | [ -e /sys/class/leds/${sysfs}/brightness ] && { |
||
49 | echo "setting up led ${name}" |
||
50 | |||
51 | printf "%s %s %d\n" \ |
||
52 | "$sysfs" \ |
||
53 | "$(sed -ne 's/^.*\[\(.*\)\].*$/\1/p' /sys/class/leds/${sysfs}/trigger)" \ |
||
54 | "$(cat /sys/class/leds/${sysfs}/brightness)" \ |
||
55 | >> /var/run/led.state |
||
56 | |||
57 | [ "$default" = 0 ] && |
||
58 | echo 0 >/sys/class/leds/${sysfs}/brightness |
||
59 | |||
60 | echo $trigger > /sys/class/leds/${sysfs}/trigger 2> /dev/null |
||
61 | ret="$?" |
||
62 | |||
63 | [ $default = 1 ] && |
||
64 | cat /sys/class/leds/${sysfs}/max_brightness > /sys/class/leds/${sysfs}/brightness |
||
65 | |||
66 | [ $ret = 0 ] || { |
||
67 | echo >&2 "Skipping trigger '$trigger' for led '$name' due to missing kernel module" |
||
68 | return 1 |
||
69 | } |
||
70 | case "$trigger" in |
||
71 | "netdev") |
||
72 | [ -n "$dev" ] && { |
||
73 | echo $dev > /sys/class/leds/${sysfs}/device_name |
||
74 | for m in $mode; do |
||
75 | [ -e "/sys/class/leds/${sysfs}/$m" ] && \ |
||
76 | echo 1 > /sys/class/leds/${sysfs}/$m |
||
77 | done |
||
78 | echo $interval > /sys/class/leds/${sysfs}/interval |
||
79 | } |
||
80 | ;; |
||
81 | |||
82 | "timer"|"oneshot") |
||
83 | [ -n "$delayon" ] && \ |
||
84 | echo $delayon > /sys/class/leds/${sysfs}/delay_on |
||
85 | [ -n "$delayoff" ] && \ |
||
86 | echo $delayoff > /sys/class/leds/${sysfs}/delay_off |
||
87 | ;; |
||
88 | |||
89 | "usbport") |
||
90 | local p |
||
91 | |||
92 | for p in $ports; do |
||
93 | echo 1 > /sys/class/leds/${sysfs}/ports/$p |
||
94 | done |
||
95 | ;; |
||
96 | |||
97 | "port_state") |
||
98 | [ -n "$port_state" ] && \ |
||
99 | echo $port_state > /sys/class/leds/${sysfs}/port_state |
||
100 | ;; |
||
101 | |||
102 | "gpio") |
||
103 | echo $gpio > /sys/class/leds/${sysfs}/gpio |
||
104 | echo $inverted > /sys/class/leds/${sysfs}/inverted |
||
105 | ;; |
||
106 | |||
107 | switch[0-9]*) |
||
108 | local port_mask speed_mask |
||
109 | |||
110 | config_get port_mask $1 port_mask |
||
111 | [ -n "$port_mask" ] && \ |
||
112 | echo $port_mask > /sys/class/leds/${sysfs}/port_mask |
||
113 | config_get speed_mask $1 speed_mask |
||
114 | [ -n "$speed_mask" ] && \ |
||
115 | echo $speed_mask > /sys/class/leds/${sysfs}/speed_mask |
||
116 | [ -n "$mode" ] && \ |
||
117 | echo "$mode" > /sys/class/leds/${sysfs}/mode |
||
118 | ;; |
||
119 | esac |
||
120 | } |
||
121 | } |
||
122 | |||
123 | start() { |
||
124 | [ -e /sys/class/leds/ ] && { |
||
125 | [ -s /var/run/led.state ] && { |
||
126 | local led trigger brightness |
||
127 | while read led trigger brightness; do |
||
128 | [ -e "/sys/class/leds/$led/trigger" ] && \ |
||
129 | echo "$trigger" > "/sys/class/leds/$led/trigger" |
||
130 | |||
131 | [ -e "/sys/class/leds/$led/brightness" ] && \ |
||
132 | echo "$brightness" > "/sys/class/leds/$led/brightness" |
||
133 | done < /var/run/led.state |
||
134 | rm /var/run/led.state |
||
135 | } |
||
136 | |||
137 | config_load system |
||
138 | config_foreach load_led led |
||
139 | } |
||
140 | } |