#!/bin/sh

case "$1" in
	setup)
		for card in $(lsusb | awk '{print $6}' | uniq); do
			case "$card" in
				"0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101" | "2604:0012")
					driver=88XXau
					;;

				"0bda:a81a")
					driver=8812eu
					;;

				"0bda:f72b" | "0bda:b733")
					driver=8733bu
					;;
			esac
		done

		if [ -z "$driver" ]; then
			echo "Wireless module not detected!"
			exit 1
		fi

		echo "Detected driver: $driver"
		[ -e /sys/class/net/wlan0 ] && return

		if [ "$driver" != "88XXau" ]; then
			opt1="rtw_tx_pwr_by_rate=0"
			opt2="rtw_tx_pwr_lmt_enable=0"
		fi

		modprobe "$driver" "$opt1" "$opt2"
		sleep 3

		if ! ifconfig wlan0 up; then
			echo "Wireless driver not found!"
			exit 1
		fi
		;;

	start)
		ssid=$(fw_printenv -n wlanssid || echo OpenIPC)
		pass=$(fw_printenv -n wlanpass || echo 12345678)
		wpa_passphrase "$ssid" "$pass" > /tmp/wpa_supplicant.conf
		sed -i '2i \\tmode=2' /tmp/wpa_supplicant.conf
		#sed -i '3i \\tfrequency=5180' /tmp/wpa_supplicant.conf
		wpa_supplicant -B -i wlan0 -D nl80211 -c /tmp/wpa_supplicant.conf
		udhcpd -S
		;;

	stop)
		killall -q udhcpd wpa_supplicant
		;;

	*)
		echo "Usage: $0 {setup|start|stop}"
		exit 1
		;;
esac
