 cfac7289c7
			
		
	
	cfac7289c7
	
	
	
		
			
			Add ucidef_set_board_id() and ucidef_set_model_name() procedures to store model information in the board.json file. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 47671
		
			
				
	
	
		
			408 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			408 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/ash
 | |
| 
 | |
| CFG=/etc/board.json
 | |
| 
 | |
| . /usr/share/libubox/jshn.sh
 | |
| 
 | |
| json_select_array() {
 | |
| 	local _json_no_warning=1
 | |
| 
 | |
| 	json_select "$1"
 | |
| 	[ $? = 0 ] && return
 | |
| 
 | |
| 	json_add_array "$1"
 | |
| 	json_close_array
 | |
| 
 | |
| 	json_select "$1"
 | |
| }
 | |
| 
 | |
| json_select_object() {
 | |
| 	local _json_no_warning=1
 | |
| 
 | |
| 	json_select "$1"
 | |
| 	[ $? = 0 ] && return
 | |
| 
 | |
| 	json_add_object "$1"
 | |
| 	json_close_object
 | |
| 
 | |
| 	json_select "$1"
 | |
| }
 | |
| 
 | |
| _ucidef_set_interface() {
 | |
| 	local name="$1"
 | |
| 	local iface="$2"
 | |
| 
 | |
| 	json_select_object "$name"
 | |
| 	json_add_string ifname "${iface%%.*}"
 | |
| 	[ "$iface" = "${iface%%.*}" ] || json_add_boolean create_vlan 1
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_board_id() {
 | |
| 	json_select_object model
 | |
| 	json_add_string id "$1"
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_model_name() {
 | |
| 	json_select_object model
 | |
| 	json_add_string name "$1"
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_interface_loopback()
 | |
| {
 | |
| 	# stub
 | |
| 	local a="$1"
 | |
| }
 | |
| 
 | |
| ucidef_set_interface_lan() {
 | |
| 	local lan_if="$1"
 | |
| 
 | |
| 	json_select_object network
 | |
| 	_ucidef_set_interface lan $lan_if
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_interface_wan() {
 | |
|         local wan_if="$1"
 | |
| 
 | |
|         json_select_object network
 | |
|         _ucidef_set_interface wan $wan_if
 | |
|         json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_interfaces_lan_wan() {
 | |
| 	local lan_if="$1"
 | |
| 	local wan_if="$2"
 | |
| 
 | |
| 	json_select_object network
 | |
| 	_ucidef_set_interface lan $lan_if
 | |
| 	_ucidef_set_interface wan $wan_if
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_add_switch() {
 | |
| 	local name="$1"
 | |
| 	local reset="$2"
 | |
| 	local enable="$3"
 | |
| 
 | |
| 	json_select_object switch
 | |
| 
 | |
| 	json_select_object "$name"
 | |
| 	json_add_boolean enable "$enable"
 | |
| 	json_add_boolean reset "$reset"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_add_switch_attr() {
 | |
| 	local name="$1"
 | |
| 	local key="$2"
 | |
| 	local val="$3"
 | |
| 
 | |
| 	json_select_object switch
 | |
| 	json_select_object "$name"
 | |
| 
 | |
| 	case "$val" in
 | |
| 		[0-9]) json_add_int "$key" "$val" ;;
 | |
| 		*) json_add_string "$key" "$val" ;;
 | |
| 	esac
 | |
| 
 | |
| 	json_select ..
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_add_switch_ports() {
 | |
| 	local name="$1"; shift
 | |
| 	local port num role dev idx
 | |
| 
 | |
| 	json_select_object switch
 | |
| 	json_select_object "$name"
 | |
| 	json_select_array ports
 | |
| 
 | |
| 	for port in "$@"; do
 | |
| 		case "$port" in
 | |
| 			[0-9]*@*)
 | |
| 				num="${port%%@*}"
 | |
| 				dev="${port##*@}"
 | |
| 			;;
 | |
| 			[0-9]*:*:[0-9]*)
 | |
| 				num="${port%%:*}"
 | |
| 				idx="${port##*:}"
 | |
| 				role="${port#[0-9]*:}"; role="${role%:*}"
 | |
| 			;;
 | |
| 			[0-9]*:*)
 | |
| 				num="${port%%:*}"
 | |
| 				role="${port##*:}"
 | |
| 			;;
 | |
| 		esac
 | |
| 
 | |
| 		if [ -n "$num" ] && [ -n "$dev$role" ]; then
 | |
| 			json_add_object
 | |
| 			json_add_int num "$num"
 | |
| 			[ -n "$dev" ] && json_add_string device "$dev"
 | |
| 			[ -n "$role" ] && json_add_string role "$role"
 | |
| 			[ -n "$idx" ] && json_add_int index "$idx"
 | |
| 			json_close_object
 | |
| 		fi
 | |
| 
 | |
| 		unset num dev role idx
 | |
| 	done
 | |
| 
 | |
| 	json_select ..
 | |
| 	json_select ..
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_add_switch_port_attr() {
 | |
| 	local name="$1"
 | |
| 	local port="$2"
 | |
| 	local key="$3"
 | |
| 	local val="$4"
 | |
| 	local ports i num
 | |
| 
 | |
| 	json_select_object switch
 | |
| 	json_select_object "$name"
 | |
| 
 | |
| 	json_get_keys ports ports
 | |
| 	json_select_array ports
 | |
| 
 | |
| 	for i in $ports; do
 | |
| 		json_select "$i"
 | |
| 		json_get_var num num
 | |
| 
 | |
| 		if [ -n "$num" ] && [ $num -eq $port ]; then
 | |
| 			json_select_object attr
 | |
| 
 | |
| 			case "$val" in
 | |
| 				[0-9]) json_add_int "$key" "$val" ;;
 | |
| 				*) json_add_string "$key" "$val" ;;
 | |
| 			esac
 | |
| 
 | |
| 			json_select ..
 | |
| 		fi
 | |
| 
 | |
| 		json_select ..
 | |
| 	done
 | |
| 
 | |
| 	json_select ..
 | |
| 	json_select ..
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_add_switch_vlan() {
 | |
| 	local name="$1"
 | |
| 	local vlan="$2"
 | |
| 	local ports="$3"
 | |
| 	local cpu_port=''
 | |
| 
 | |
| 	case $vlan in
 | |
| 	1)	vlan=lan;;
 | |
| 	2)	vlan=wan;;
 | |
| 	*)	vlan=vlan$vlan;;
 | |
| 	esac
 | |
| 
 | |
| 	json_select_object switch
 | |
| 	json_select_object "$name"
 | |
| 	json_select_object vlans
 | |
| 
 | |
| 	json_add_array "$vlan"
 | |
| 	for p in $ports; do
 | |
| 		if [ ${p%t} != $p ]; then
 | |
| 			cpu_port=$p
 | |
| 		else
 | |
| 			json_add_int "" $p
 | |
| 		fi
 | |
| 	done
 | |
| 	json_close_array
 | |
| 
 | |
| 	json_select ..
 | |
| 	[ -n "$cpu_port" ] && json_add_int cpu_port "$cpu_port"
 | |
| 	json_select ..
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_interface_macaddr() {
 | |
| 	local network="$1"
 | |
| 	local macaddr="$2"
 | |
| 
 | |
| 	json_select_object network
 | |
| 
 | |
| 	json_select "$network"
 | |
| 	[ $? -eq 0 ] || {
 | |
| 		json_select ..
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	json_add_string macaddr "$macaddr"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_led_netdev() {
 | |
| 	local cfg="led_$1"
 | |
| 	local name="$2"
 | |
| 	local sysfs="$3"
 | |
| 	local dev="$4"
 | |
| 
 | |
| 	json_select_object led
 | |
| 
 | |
| 	json_select_object "$1"
 | |
| 	json_add_string name "$name"
 | |
| 	json_add_string type netdev
 | |
| 	json_add_string sysfs "$sysfs"
 | |
| 	json_add_string device "$dev"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_led_usbdev() {
 | |
| 	local cfg="led_$1"
 | |
| 	local name="$2"
 | |
| 	local sysfs="$3"
 | |
| 	local dev="$4"
 | |
| 
 | |
| 	json_select_object led
 | |
| 
 | |
| 	json_select_object "$1"
 | |
| 	json_add_string name "$name"
 | |
| 	json_add_string type usb
 | |
| 	json_add_string sysfs "$sysfs"
 | |
| 	json_add_string device "$dev"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_led_wlan() {
 | |
| 	local cfg="led_$1"
 | |
| 	local name="$2"
 | |
| 	local sysfs="$3"
 | |
| 	local trigger="$4"
 | |
| 
 | |
| 	json_select_object led
 | |
| 
 | |
| 	json_select_object "$1"
 | |
| 	json_add_string name "$name"
 | |
| 	json_add_string type trigger
 | |
| 	json_add_string sysfs "$sysfs"
 | |
| 	json_add_string trigger "$trigger"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_led_switch() {
 | |
| 	local cfg="led_$1"
 | |
| 	local name="$2"
 | |
| 	local sysfs="$3"
 | |
| 	local trigger="$4"
 | |
| 	local port_mask="$5"
 | |
| 
 | |
| 	json_select_object led
 | |
| 
 | |
| 	json_select_object "$1"
 | |
| 	json_add_string name "$name"
 | |
| 	json_add_string type switch
 | |
| 	json_add_string sysfs "$sysfs"
 | |
| 	json_add_string trigger "$trigger"
 | |
| 	json_add_string port_mask "$port_mask"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_led_default() {
 | |
| 	local cfg="led_$1"
 | |
| 	local name="$2"
 | |
| 	local sysfs="$3"
 | |
| 	local default="$4"
 | |
| 
 | |
| 	json_select_object led
 | |
| 
 | |
| 	json_select_object "$1"
 | |
| 	json_add_string name "$name"
 | |
| 	json_add_string sysfs "$sysfs"
 | |
| 	json_add_string default "$default"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_led_gpio() {
 | |
| 	local cfg="led_$1"
 | |
| 	local name="$2"
 | |
| 	local sysfs="$3"
 | |
| 	local gpio="$4"
 | |
| 	local inverted="$5"
 | |
| 
 | |
| 	json_select_object led
 | |
| 
 | |
| 	json_select_object "$1"
 | |
| 	json_add_string type gpio
 | |
| 	json_add_string name "$name"
 | |
| 	json_add_string sysfs "$sysfs"
 | |
| 	json_add_string trigger "$trigger"
 | |
| 	json_add_int gpio "$gpio"
 | |
| 	json_add_boolean inverted "$inverted"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_led_rssi() {
 | |
| 	local cfg="led_$1"
 | |
| 	local name="$2"
 | |
| 	local sysfs="$3"
 | |
| 	local iface="$4"
 | |
| 	local minq="$5"
 | |
| 	local maxq="$6"
 | |
| 	local offset="$7"
 | |
| 	local factor="$8"
 | |
| 
 | |
| 	json_select_object led
 | |
| 
 | |
| 	json_select_object "$1"
 | |
| 	json_add_string type rssi
 | |
| 	json_add_string name "$name"
 | |
| 	json_add_string iface "$iface"
 | |
| 	json_add_string sysfs "$sysfs"
 | |
| 	json_add_string minq "$minq"
 | |
| 	json_add_string maxq "$maxq"
 | |
| 	json_add_string offset "$offset"
 | |
| 	json_add_string factor "$factor"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| }
 | |
| 
 | |
| ucidef_set_rssimon() {
 | |
| 	local dev="$1"
 | |
| 	local refresh="$2"
 | |
| 	local threshold="$3"
 | |
| 
 | |
| 	json_select_object rssimon
 | |
| 
 | |
| 	json_select_object "$dev"
 | |
| 	[ -n "$refresh" ] && json_add_int refresh "$refresh"
 | |
| 	[ -n "$threshold" ] && json_add_int threshold "$threshold"
 | |
| 	json_select ..
 | |
| 
 | |
| 	json_select ..
 | |
| 
 | |
| }
 | |
| 
 | |
| board_config_update() {
 | |
| 	json_init
 | |
| 	[ -f ${CFG} ] && json_load "$(cat ${CFG})"
 | |
| }
 | |
| 
 | |
| board_config_flush() {
 | |
| 	json_dump -i > /tmp/.board.json
 | |
| 	mv /tmp/.board.json ${CFG}
 | |
| }
 |