#
# Copyright (C) 2009 OpenWrt.org
#


reset_uci_wireless() {
	if [ -e /tmp/.restore ] && [ "$factory_mode" == "off" ]; then
		sleep 50 && /sbin/check_ibf.sh &
	fi
	echo "do uci commit wireless"
	uci commit wireless
	echo "do uci2dat"
	uci2dat
}

reset_uci_region() {
	local region=`envctl factory get region`
	local channel_2g=1
	local channel_5g=36
	local wirelessmode_2g=""
	local wirelessmode_5g=""
	local status=`protest --restore -status`
	echo $status
	if [ "$region" = "US" -o $region = "NA" ]; then
		channel_5g=149
	fi
	if [ "$region" = "TR" -o $region = "SA" -o $region = "AS" ]; then
		wirelessmode_5g="54Mbps"
	fi
	if [ "x$wirelessmode_2g" != "x" ]; then
		uci set wireless.2g.wirelessMode=$wirelessmode_2g
	fi
	if [ "x$wirelessmode_5g" != "x" ]; then
		uci set wireless.5g.wirelessMode=$wirelessmode_5g
	fi
	if [ "$region" = "WW" ]; then
		region="EU"
	fi
	if [ -n "$region" ]; then
		uci set wireless.2g.country=$region
		uci set wireless.5g.country=$region
		if [ "$status" == "~!factory_settings!~" ]; then
			uci set wireless.2g.channel=6
			uci set wireless.5g.channel=36
		else
			uci set wireless.2g.channel=$channel_2g
			uci set wireless.5g.channel=$channel_5g
		fi
	else
		uci set wireless.2g.country=EU
		uci set wireless.5g.country=EU
		if [ "$status" == "~!factory_settings!~" ]; then
			uci set wireless.2g.channel=6
			uci set wireless.5g.channel=36
		else
			uci set wireless.2g.channel=1
			uci set wireless.5g.channel=36
		fi
	fi
}

reset_uci_pinCode(){
	local pinCode=$(echo `envctl factory get pin`)
	if [ -n "$pinCode" ] ; then
		uci -q set "wireless.2g_5g.wpsPinCode=$pinCode"
	fi
}

reset_uci_deviceName(){
	local deviceName=$(echo `envctl factory get model`)
	if [ -n "$deviceName" ] ; then
		uci -q set "wireless.2g_5g.deviceName=$deviceName"
	fi
}

reset_uci_system(){
	local deviceName=$(echo `envctl factory get model`)
	local deviceSN=$(echo `envctl factory get sn`)
	local mac=$(echo `envctl factory get mac`)
	local deviceaxModel=$(echo `envctl factory get axmodel`)
	local status=`protest --restore -status`
	local hardwareId=`protest --hardwareId -r`
	local hardware=`protest --hardware -r`
	HWId="1010000009910000_NETGEAR"
	HWVER="V1H1"

	if [ "$status" == "~!factory_settings!~" ]; then
		if [ -z "$deviceName" ]; then
			protest --model -w EAX17
			if [ "$hardwareId" == "~!!~" ]; then
				protest --hardwareId -w $HWId
			fi
			if [ "$hardware" == "~!!~" ]; then
				protest --hardware -w $HWVER
			fi
		fi

		if [ -z "$deviceaxModel" ]; then
			protest --axmodel -w AX3000
		fi
	else
		if [ -n "$deviceName" ]; then
			uci -q set "system.@system[0].model=$deviceName"
		fi

		if [ -n "$deviceaxModel" ]; then
			uci -q set "system.@system[0].axmodel=$deviceaxModel"
		fi
	fi

	if [ -n "$deviceSN" ]; then
		uci -q set "system.@system[0].sn=$deviceSN"
	fi

	if [ -n "$mac" ]; then
		local basemac="${mac:0:2}:${mac:2:2}:${mac:4:2}:${mac:6:2}:${mac:8:2}:${mac:10:2}"
		uci -q set "system.@system[0].basemac=$basemac"
	fi

	if [ "$hardwareId" == "~!!~" ]; then
		protest --hardwareId -w $HWId
	fi
	if [ "$hardware" == "~!!~" ]; then
		protest --hardware -w $HWVER
	fi

	echo "do uci commit system"
	uci commit system
}

reset_uci_rae() {
	local tsVersion=`uci get rae.@rae[0].TermsOfServiceVersion`
	if [ "$tsVersion" != "V2.0" ];then
		uci -q set rae.@rae[0].TermsOfServiceVersion=V2.0
		uci commit system
	fi
}

sync_softVersion() {
	local sysversion=`cat /rom/etc/config/system | grep "softVersion"|  awk -F"'" '{print $2}'`
	local last_sysversion=`cat /etc/config/system | grep "softVersion"|  awk -F"'" '{print $2}'`
	if [ "$sysversion" != "$last_sysversion" ]; then
		uci -q set "system.@system[0].softVersion=$sysversion"
	fi
}

preinit_reset_uci() {
	local factory_mode=`envctl factory get factory_mode`
	reset_uci_rae
	sync_softVersion
	if [ -e /tmp/.restore ] || [ "$factory_mode" != "off" ]; then
		reset_uci_region
		reset_uci_pinCode
		reset_uci_deviceName
		reset_uci_wireless
		reset_uci_system
	fi
}

boot_hook_add preinit_main preinit_reset_uci
