1#!/bin/sh
2# Copyright (c) 2013 The Linux Foundation. All rights reserved.
3# Copyright (C) 2011 OpenWrt.org
4
5UCIDEF_LEDS_CHANGED=0
6
7ucidef_set_led_netdev() {
8	local cfg="led_$1"
9	local name=$2
10	local sysfs=$3
11	local dev=$4
12	local mode=$5
13
14	uci -q get system.$cfg && return 0
15
16	uci batch <<EOF
17set system.$cfg='led'
18set system.$cfg.name='$name'
19set system.$cfg.sysfs='$sysfs'
20set system.$cfg.trigger='netdev'
21set system.$cfg.dev='$dev'
22set system.$cfg.mode='${mode:-link tx rx}'
23EOF
24	UCIDEF_LEDS_CHANGED=1
25}
26
27ucidef_set_led_usbdev() {
28	local cfg="led_$1"
29	local name=$2
30	local sysfs=$3
31	local dev=$4
32
33	uci -q get system.$cfg && return 0
34
35	uci batch <<EOF
36set system.$cfg='led'
37set system.$cfg.name='$name'
38set system.$cfg.sysfs='$sysfs'
39set system.$cfg.trigger='usbdev'
40set system.$cfg.dev='$dev'
41set system.$cfg.interval='50'
42EOF
43	UCIDEF_LEDS_CHANGED=1
44}
45
46ucidef_set_led_wlan() {
47	local cfg="led_$1"
48	local name=$2
49	local sysfs=$3
50	local trigger=$4
51
52	uci -q get system.$cfg && return 0
53
54	uci batch <<EOF
55set system.$cfg='led'
56set system.$cfg.name='$name'
57set system.$cfg.sysfs='$sysfs'
58set system.$cfg.trigger='$trigger'
59EOF
60	UCIDEF_LEDS_CHANGED=1
61}
62
63ucidef_set_led_switch() {
64	local cfg="led_$1"
65	local name=$2
66	local sysfs=$3
67	local trigger=$4
68	local port_mask=$5
69
70	uci -q get system.$cfg && return 0
71
72	uci batch <<EOF
73set system.$cfg='led'
74set system.$cfg.name='$name'
75set system.$cfg.sysfs='$sysfs'
76set system.$cfg.trigger='$trigger'
77set system.$cfg.port_mask='$port_mask'
78EOF
79	UCIDEF_LEDS_CHANGED=1
80}
81
82ucidef_set_led_timer() {
83	local cfg="led_$1"
84	local name=$2
85	local sysfs=$3
86	local delayon=$4
87	local delayoff=$5
88
89	uci -q get system.$cfg && return 0
90
91	uci batch <<EOF
92set system.$cfg='led'
93set system.$cfg.name='$name'
94set system.$cfg.sysfs='$sysfs'
95set system.$cfg.trigger='timer'
96set system.$cfg.delayon='$delayon'
97set system.$cfg.delayoff='$delayoff'
98EOF
99	UCIDEF_LEDS_CHANGED=1
100}
101
102ucidef_set_led_default() {
103	local cfg="led_$1"
104	local name=$2
105	local sysfs=$3
106	local default=$4
107
108	uci -q get system.$cfg && return 0
109
110	uci batch <<EOF
111set system.$cfg='led'
112set system.$cfg.name='$name'
113set system.$cfg.sysfs='$sysfs'
114set system.$cfg.default='$default'
115EOF
116	UCIDEF_LEDS_CHANGED=1
117}
118
119ucidef_set_led_rssi() {
120	local cfg="led_$1"
121	local name=$2
122	local sysfs=$3
123	local iface=$4
124	local minq=$5
125	local maxq=$6
126	local offset=$7
127	local factor=$8
128
129	uci -q get system.$cfg && return 0
130
131	uci batch <<EOF
132set system.$cfg='led'
133set system.$cfg.name='$name'
134set system.$cfg.sysfs='$sysfs'
135set system.$cfg.trigger='rssi'
136set system.$cfg.iface='rssid_$iface'
137set system.$cfg.minq='$minq'
138set system.$cfg.maxq='$maxq'
139set system.$cfg.offset='$offset'
140set system.$cfg.factor='$factor'
141EOF
142	UCIDEF_LEDS_CHANGED=1
143}
144
145ucidef_set_rssimon() {
146	local dev="$1"
147	local refresh="$2"
148	local threshold="$3"
149
150	local cfg="rssid_$dev"
151
152	uci -q get system.$cfg && return 0
153
154	uci batch <<EOF
155set system.$cfg='rssid'
156set system.$cfg.dev='$dev'
157set system.$cfg.refresh='$refresh'
158set system.$cfg.threshold='$threshold'
159EOF
160	UCIDEF_LEDS_CHANGED=1
161}
162
163ucidef_commit_leds()
164{
165	[ "$UCIDEF_LEDS_CHANGED" == "1" ] && uci commit system
166}
167
168ucidef_set_interface_loopback() {
169	uci batch <<EOF
170set network.loopback='interface'
171set network.loopback.ifname='lo'
172set network.loopback.proto='static'
173set network.loopback.ipaddr='127.0.0.1'
174set network.loopback.netmask='255.0.0.0'
175EOF
176}
177
178ucidef_set_interface_raw() {
179	local cfg=$1
180	local ifname=$2
181
182	uci batch <<EOF
183set network.$cfg='interface'
184set network.$cfg.ifname='$ifname'
185set network.$cfg.proto='none'
186EOF
187}
188
189ucidef_set_interface_lan() {
190	local ifname=$1
191
192	uci batch <<EOF
193set network.lan='interface'
194set network.lan.ifname='$ifname'
195set network.lan.type='bridge'
196set network.lan.proto='static'
197set network.lan.ipaddr='192.168.1.1'
198set network.lan.netmask='255.255.255.0'
199EOF
200}
201
202ucidef_set_interface_wan() {
203	local ifname=$1
204
205	uci batch <<EOF
206set network.wan='interface'
207set network.wan.ifname='$ifname'
208set network.wan.proto='dhcp'
209EOF
210}
211
212ucidef_set_interfaces_lan_wan() {
213	local lan_ifname=$1
214	local wan_ifname=$2
215
216	ucidef_set_interface_lan "$lan_ifname"
217	ucidef_set_interface_wan "$wan_ifname"
218}
219
220ucidef_set_interface_macaddr() {
221	local ifname=$1
222	local mac=$2
223
224	uci batch <<EOF
225set network.$ifname.macaddr='$mac'
226EOF
227}
228
229ucidef_add_switch() {
230	local name=$1
231	local reset=$2
232	local enable=$3
233	uci batch <<EOF
234add network switch
235set network.@switch[-1].name='$name'
236set network.@switch[-1].reset='$reset'
237set network.@switch[-1].enable_vlan='$enable'
238EOF
239}
240
241ucidef_add_switch_vlan() {
242	local device=$1
243	local vlan=$2
244	local ports=$3
245	uci batch <<EOF
246add network switch_vlan
247set network.@switch_vlan[-1].device='$device'
248set network.@switch_vlan[-1].vlan='$vlan'
249set network.@switch_vlan[-1].ports='$ports'
250EOF
251}
252
253ucidef_set_snd_ctrl() {
254	local card=$1
255	local name=$2
256	local value=$3
257	uci batch <<EOF
258add sound sound-control
259set sound.@sound-control[-1].card='$card'
260set sound.@sound-control[-1].name='$name'
261set sound.@sound-control[-1].value='$value'
262EOF
263}
264