base-files: added option to configure the gpio led trigger in uci-defaults
[librecmc/librecmc.git] / package / base-files / files / lib / functions / uci-defaults.sh
1 #!/bin/sh
2 # Copyright (C) 2011 OpenWrt.org
3
4 UCIDEF_LEDS_CHANGED=0
5 UCIDEF_GPIO_SWITCHES_CHANGED=0
6
7 ucidef_set_led_netdev() {
8         local cfg="led_$1"
9         local name=$2
10         local sysfs=$3
11         local dev=$4
12
13         uci -q get system.$cfg && return 0
14
15         uci batch <<EOF
16 set system.$cfg='led'
17 set system.$cfg.name='$name'
18 set system.$cfg.sysfs='$sysfs'
19 set system.$cfg.trigger='netdev'
20 set system.$cfg.dev='$dev'
21 set system.$cfg.mode='link tx rx'
22 EOF
23         UCIDEF_LEDS_CHANGED=1
24 }
25
26 ucidef_set_led_usbdev() {
27         local cfg="led_$1"
28         local name=$2
29         local sysfs=$3
30         local dev=$4
31
32         uci -q get system.$cfg && return 0
33
34         uci batch <<EOF
35 set system.$cfg='led'
36 set system.$cfg.name='$name'
37 set system.$cfg.sysfs='$sysfs'
38 set system.$cfg.trigger='usbdev'
39 set system.$cfg.dev='$dev'
40 set system.$cfg.interval='50'
41 EOF
42         UCIDEF_LEDS_CHANGED=1
43 }
44
45 ucidef_set_led_wlan() {
46         local cfg="led_$1"
47         local name=$2
48         local sysfs=$3
49         local trigger=$4
50
51         uci -q get system.$cfg && return 0
52
53         uci batch <<EOF
54 set system.$cfg='led'
55 set system.$cfg.name='$name'
56 set system.$cfg.sysfs='$sysfs'
57 set system.$cfg.trigger='$trigger'
58 EOF
59         UCIDEF_LEDS_CHANGED=1
60 }
61
62 ucidef_set_led_switch() {
63         local cfg="led_$1"
64         local name=$2
65         local sysfs=$3
66         local trigger=$4
67         local port_mask=$5
68
69         uci -q get system.$cfg && return 0
70
71         uci batch <<EOF
72 set system.$cfg='led'
73 set system.$cfg.name='$name'
74 set system.$cfg.sysfs='$sysfs'
75 set system.$cfg.trigger='$trigger'
76 set system.$cfg.port_mask='$port_mask'
77 EOF
78         UCIDEF_LEDS_CHANGED=1
79 }
80
81 ucidef_set_led_default() {
82         local cfg="led_$1"
83         local name=$2
84         local sysfs=$3
85         local default=$4
86
87         uci -q get system.$cfg && return 0
88
89         uci batch <<EOF
90 set system.$cfg='led'
91 set system.$cfg.name='$name'
92 set system.$cfg.sysfs='$sysfs'
93 set system.$cfg.default='$default'
94 EOF
95         UCIDEF_LEDS_CHANGED=1
96 }
97
98 ucidef_set_led_rssi() {
99         local cfg="led_$1"
100         local name=$2
101         local sysfs=$3
102         local iface=$4
103         local minq=$5
104         local maxq=$6
105         local offset=$7
106         local factor=$8
107
108         uci -q get system.$cfg && return 0
109
110         uci batch <<EOF
111 set system.$cfg='led'
112 set system.$cfg.name='$name'
113 set system.$cfg.sysfs='$sysfs'
114 set system.$cfg.trigger='rssi'
115 set system.$cfg.iface='rssid_$iface'
116 set system.$cfg.minq='$minq'
117 set system.$cfg.maxq='$maxq'
118 set system.$cfg.offset='$offset'
119 set system.$cfg.factor='$factor'
120 EOF
121         UCIDEF_LEDS_CHANGED=1
122 }
123
124 ucidef_set_led_timer() {
125         local cfg="led_$1"
126         local name=$2
127         local sysfs=$3
128         local delayon=$4
129         local delayoff=$5
130
131         uci -q get system.$cfg && return 0
132
133         uci batch <<EOF
134 set system.$cfg='led'
135 set system.$cfg.name='$name'
136 set system.$cfg.sysfs='$sysfs'
137 set system.$cfg.trigger='timer'
138 set system.$cfg.delayon='$delayon'
139 set system.$cfg.delayoff='$delayoff'
140 EOF
141         UCIDEF_LEDS_CHANGED=1
142 }
143
144 ucidef_set_led_mmc() {
145         local cfg="led_$1"
146         local name=$2
147         local sysfs=$3
148         local trigger=$4
149
150         uci -q get system.$cfg && return 0
151
152         uci batch <<EOF
153 set system.$cfg='led'
154 set system.$cfg.name='$name'
155 set system.$cfg.sysfs='$sysfs'
156 set system.$cfg.trigger='$trigger'
157 EOF
158         UCIDEF_LEDS_CHANGED=1
159 }
160
161 ucidef_set_led_trigger_gpio() {
162         local cfg="led_$1"
163         local name=$2
164         local sysfs=$3
165         local gpio=$4
166         local inverted=$5
167
168         uci -q get system.$cfg && return 0
169
170         uci batch <<EOF
171 set system.$cfg='led'
172 set system.$cfg.name='$name'
173 set system.$cfg.sysfs='$sysfs'
174 set system.$cfg.trigger='gpio'
175 set system.$cfg.gpio='$gpio'
176 set system.$cfg.inverted='$inverted'
177 EOF
178         UCIDEF_LEDS_CHANGED=1
179 }
180
181 ucidef_set_rssimon() {
182         local dev="$1"
183         local refresh="$2"
184         local threshold="$3"
185
186         local cfg="rssid_$dev"
187
188         uci -q get system.$cfg && return 0
189
190         uci batch <<EOF
191 set system.$cfg='rssid'
192 set system.$cfg.dev='$dev'
193 set system.$cfg.refresh='$refresh'
194 set system.$cfg.threshold='$threshold'
195 EOF
196         UCIDEF_LEDS_CHANGED=1
197 }
198
199 ucidef_commit_leds()
200 {
201         [ "$UCIDEF_LEDS_CHANGED" = "1" ] && uci commit system
202 }
203
204 ucidef_set_gpio_switch() {
205         local cfg="gpio_switch_$1"
206         local name="$2"
207         local gpio_pin="$3"
208         # use "0" as default value
209         local default="${4:-0}"
210
211         uci -q get "system.$cfg" && return 0
212
213         uci batch <<EOF
214 set system.$cfg='gpio_switch'
215 set system.$cfg.name='$name'
216 set system.$cfg.gpio_pin='$gpio_pin'
217 set system.$cfg.value='$default'
218 EOF
219         UCIDEF_GPIO_SWITCHES_CHANGED=1
220 }
221
222 ucidef_commit_gpio_switches()
223 {
224         [ "$UCIDEF_GPIO_SWITCHES_CHANGED" = "1" ] && uci commit system
225 }
226
227 ucidef_set_interface_loopback() {
228         uci batch <<EOF
229 set network.loopback='interface'
230 set network.loopback.ifname='lo'
231 set network.loopback.proto='static'
232 set network.loopback.ipaddr='127.0.0.1'
233 set network.loopback.netmask='255.0.0.0'
234 set network.globals='globals'
235 set network.globals.ula_prefix='auto'
236 EOF
237 }
238
239 ucidef_set_interface_raw() {
240         local cfg=$1
241         local ifname=$2
242         local proto=${3:-"none"}
243
244         uci batch <<EOF
245 set network.$cfg='interface'
246 set network.$cfg.ifname='$ifname'
247 set network.$cfg.proto='$proto'
248 EOF
249 }
250
251 ucidef_set_interface_lan() {
252         local ifname=$1
253
254         uci batch <<EOF
255 set network.lan='interface'
256 set network.lan.ifname='$ifname'
257 set network.lan.force_link=1
258 set network.lan.type='bridge'
259 set network.lan.proto='static'
260 set network.lan.ipaddr='192.168.1.1'
261 set network.lan.netmask='255.255.255.0'
262 set network.lan.ip6assign='60'
263 EOF
264 }
265
266 ucidef_set_interface_wan() {
267         local ifname=$1
268
269         uci batch <<EOF
270 set network.wan='interface'
271 set network.wan.ifname='$ifname'
272 set network.wan.proto='dhcp'
273 set network.wan6='interface'
274 set network.wan6.ifname='$ifname'
275 set network.wan6.proto='dhcpv6'
276 EOF
277 }
278
279 ucidef_set_interfaces_lan_wan() {
280         local lan_ifname=$1
281         local wan_ifname=$2
282
283         ucidef_set_interface_lan "$lan_ifname"
284         ucidef_set_interface_wan "$wan_ifname"
285 }
286
287 ucidef_set_interface_macaddr() {
288         local ifname=$1
289         local mac=$2
290
291         uci batch <<EOF
292 set network.$ifname.macaddr='$mac'
293 EOF
294 }
295
296 ucidef_add_switch() {
297         local name=$1
298         local reset=$2
299         local enable=$3
300         uci batch <<EOF
301 add network switch
302 set network.@switch[-1].name='$name'
303 set network.@switch[-1].reset='$reset'
304 set network.@switch[-1].enable_vlan='$enable'
305 EOF
306 }
307
308 ucidef_add_switch_vlan() {
309         local device=$1
310         local vlan=$2
311         local ports=$3
312         uci batch <<EOF
313 add network switch_vlan
314 set network.@switch_vlan[-1].device='$device'
315 set network.@switch_vlan[-1].vlan='$vlan'
316 set network.@switch_vlan[-1].ports='$ports'
317 EOF
318 }
319
320 ucidef_add_switch_port() {
321         local device=$1
322         local port=$2
323         uci batch <<EOF
324 add network switch_port
325 set network.@switch_port[-1].device='$device'
326 set network.@switch_port[-1].port='$port'
327 EOF
328 }
329