5 . /usr/share/libubox/jshn.sh
8 local _json_no_warning=1
19 json_select_object() {
20 local _json_no_warning=1
31 _ucidef_set_interface() {
35 json_select_object "$name"
36 json_add_string ifname "${iface%%.*}"
37 [ "$iface" = "${iface%%.*}" ] || json_add_boolean create_vlan 1
41 ucidef_set_board_id() {
42 json_select_object model
43 json_add_string id "$1"
47 ucidef_set_model_name() {
48 json_select_object model
49 json_add_string name "$1"
53 ucidef_set_interface_loopback()
59 ucidef_set_interface_lan() {
62 json_select_object network
63 _ucidef_set_interface lan "$lan_if"
67 ucidef_set_interface_wan() {
70 json_select_object network
71 _ucidef_set_interface wan "$wan_if"
75 ucidef_set_interfaces_lan_wan() {
79 json_select_object network
80 _ucidef_set_interface lan "$lan_if"
81 _ucidef_set_interface wan "$wan_if"
90 json_select_object switch
92 json_select_object "$name"
93 json_add_boolean enable "$enable"
94 json_add_boolean reset "$reset"
100 ucidef_add_switch_attr() {
105 json_select_object switch
106 json_select_object "$name"
109 [0-9]) json_add_int "$key" "$val" ;;
110 *) json_add_string "$key" "$val" ;;
117 ucidef_add_switch_ports() {
118 local name="$1"; shift
119 local port num role dev idx
121 json_select_object switch
122 json_select_object "$name"
123 json_select_array ports
134 role="${port#[0-9]*:}"; role="${role%:*}"
142 if [ -n "$num" ] && [ -n "$dev$role" ]; then
144 json_add_int num "$num"
145 [ -n "$dev" ] && json_add_string device "$dev"
146 [ -n "$role" ] && json_add_string role "$role"
147 [ -n "$idx" ] && json_add_int index "$idx"
151 unset num dev role idx
159 ucidef_add_switch_port_attr() {
166 json_select_object switch
167 json_select_object "$name"
169 json_get_keys ports ports
170 json_select_array ports
176 if [ -n "$num" ] && [ $num -eq $port ]; then
177 json_select_object attr
180 [0-9]) json_add_int "$key" "$val" ;;
181 *) json_add_string "$key" "$val" ;;
195 ucidef_add_switch_vlan() {
207 json_select_object switch
208 json_select_object "$name"
209 json_select_object vlans
211 json_add_array "$vlan"
213 if [ ${p%t} != $p ]; then
222 [ -n "$cpu_port" ] && json_add_int cpu_port "$cpu_port"
227 ucidef_set_interface_macaddr() {
231 json_select_object network
233 json_select "$network"
239 json_add_string macaddr "$macaddr"
245 ucidef_set_led_netdev() {
251 json_select_object led
253 json_select_object "$1"
254 json_add_string name "$name"
255 json_add_string type netdev
256 json_add_string sysfs "$sysfs"
257 json_add_string device "$dev"
263 ucidef_set_led_usbdev() {
269 json_select_object led
271 json_select_object "$1"
272 json_add_string name "$name"
273 json_add_string type usb
274 json_add_string sysfs "$sysfs"
275 json_add_string device "$dev"
281 ucidef_set_led_wlan() {
287 json_select_object led
289 json_select_object "$1"
290 json_add_string name "$name"
291 json_add_string type trigger
292 json_add_string sysfs "$sysfs"
293 json_add_string trigger "$trigger"
299 ucidef_set_led_switch() {
306 json_select_object led
308 json_select_object "$1"
309 json_add_string name "$name"
310 json_add_string type switch
311 json_add_string sysfs "$sysfs"
312 json_add_string trigger "$trigger"
313 json_add_string port_mask "$port_mask"
319 ucidef_set_led_default() {
325 json_select_object led
327 json_select_object "$1"
328 json_add_string name "$name"
329 json_add_string sysfs "$sysfs"
330 json_add_string default "$default"
336 ucidef_set_led_gpio() {
343 json_select_object led
345 json_select_object "$1"
346 json_add_string type gpio
347 json_add_string name "$name"
348 json_add_string sysfs "$sysfs"
349 json_add_string trigger "$trigger"
350 json_add_int gpio "$gpio"
351 json_add_boolean inverted "$inverted"
357 ucidef_set_led_rssi() {
367 json_select_object led
369 json_select_object "$1"
370 json_add_string type rssi
371 json_add_string name "$name"
372 json_add_string iface "$iface"
373 json_add_string sysfs "$sysfs"
374 json_add_string minq "$minq"
375 json_add_string maxq "$maxq"
376 json_add_string offset "$offset"
377 json_add_string factor "$factor"
383 ucidef_set_rssimon() {
388 json_select_object rssimon
390 json_select_object "$dev"
391 [ -n "$refresh" ] && json_add_int refresh "$refresh"
392 [ -n "$threshold" ] && json_add_int threshold "$threshold"
399 board_config_update() {
401 [ -f ${CFG} ] && json_load "$(cat ${CFG})"
404 board_config_flush() {
405 json_dump -i > /tmp/.board.json
406 mv /tmp/.board.json ${CFG}