#!/bin/sh

# prevent running on sdk
type config_get >/dev/null 2>/dev/null || exit 0

set_default_config()
{
	local cfg="$1"
	config_get type "$cfg" "type"
	case $type in
		atheros)
			uci -q batch <<-EOF
				set freifunk.wifi_device.channel=1
				set freifunk.wifi_device.diversity=1
				set freifunk.wifi_device.disabled=0
				set freifunk.wifi_device.txpower=""
				set freifunk.wifi_device.hwmode=11g
				set freifunk.wifi_device.distance=1000
				set freifunk.wifi_iface=defaults
				set freifunk.wifi_iface.mode=adhoc
				set freifunk.wifi_iface.bssid="02:CA:FF:EE:BA:BE"
				set freifunk.wifi_iface.sw_merge=1
				set freifunk.wifi_iface.mcast_rate=5500
				set freifunk.wifi_iface.probereq=1
				commit freifunk
			EOF
		;;
		mac80211)
			uci -q batch <<-EOF
				set freifunk.wifi_device.channel=1
				set freifunk.wifi_device.diversity=1
				set freifunk.wifi_device.disabled=0
				set freifunk.wifi_device.txpower=""
				set freifunk.wifi_device.distance=1000
				set freifunk.wifi_device.htmode='HT40-'
				set freifunk.wifi_device.hwmode=11ng
				set freifunk.wifi_iface=defaults
				set freifunk.wifi_iface.mode=adhoc
				set freifunk.wifi_iface.bssid="02:CA:FF:EE:BA:BE"
				set freifunk.wifi_iface.sw_merge=""
				commit freifunk
			EOF
		;;
		broadcom)
			uci -q batch <<-EOF
				set freifunk.wifi_device.channel=1
				set freifunk.wifi_device.diversity=1
				set freifunk.wifi_device.disabled=0
				set freifunk.wifi_device.txpower=""
				set freifunk.wifi_device.hwmode=11g
				set freifunk.wifi_device.distance=1000
				set freifunk.wifi_iface=defaults
				set freifunk.wifi_iface.encryption=none
				set freifunk.wifi_iface.mode=adhoc
				set freifunk.wifi_iface.bssid="02:CA:FF:EE:BA:BE"
				set freifunk.wifi_iface.sw_merge=""
				commit freifunk
			EOF
		;;
	esac
}



(
while true ; do
	sleep 30
	wifie=0

	config_load wireless && wifie=1

	if [ $wifie -eq 1 ] ; then
		config_foreach set_default_config wifi-device

		uci set freifunk.interface.dns="88.198.178.18 141.54.1.1 212.204.49.83 8.8.8.8 8.8.4.4"
		uci commit freifunk
		exit 0
	fi
done
) >/dev/null &
