#!/bin/sh

cd / # goto root directory
RT28XX_DIR='/lib/modules/4.1.0/rt28xx_wifi'
if [ ! -d "${RT28XX_DIR}" ] ; then
	# RT28xx driver directory not found, just exit script
	exit 1
fi

# only valid for imx6ul gateways
[ "$(uname -r -m)" != "4.1.0 armv7l" ] && exit 2
if [ -e "${RT28XX_DIR}/.done" ] ; then
	# already copied, no need to copy again
	exit 3
fi

# check for the existence of `board_name
[ ! -f '/tmp/sysinfo/board_name' ] && sleep 10
if [ ! -f '/tmp/sysinfo/board_name' ] ; then
	echo "Error, board_name not found for rt28xx_check"
	exit 4
fi

# only valid for `QIYANG board, i.e., WooLink2004 gateway
if [ "$(cat /tmp/sysinfo/board_name)" != "QIYANG" ] ; then
	# no need to check for rt28xx wifi
	exit 5
fi

# check for RT28XX wifi hardware via `lsusb
if [ -z "$(lsusb | grep -e 13d3:3273)" ] ; then
	# RT28XX WiFi hardware not detected
	exit 6
fi

cat <<EOF >/etc/modules.d/rt28xx
cfg80211
mac80211
rt2x00lib
rt2x00usb
rt2800lib
rt2800usb
EOF

HAVE_RT28XX=0
[ -n "$(grep -e 'platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.3/1-1.3:1.0' /etc/config/wireless)" ] && HAVE_RT28XX=$((HAVE_RT28XX + 1))
[ -n "$(grep -e 'platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.4/1-1.4:1.0' /etc/config/wireless)" ] && HAVE_RT28XX=$((HAVE_RT28XX + 1))
if [ ${HAVE_RT28XX} -ne 2 ] ; then
	cat <<EOF >/etc/config/wireless
config wifi-device 'radio0'
	option type 'mac80211'
	option channel '11'
	option hwmode '11g'
	option path 'platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.3/1-1.3:1.0'
	option htmode 'HT20'
	option disabled '0'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'lnxall_def_SN'
	option encryption 'psk-mixed'
	option key 'jjwl123!@#'
	option disabled '1'

config wifi-device 'radio1'
	option type 'mac80211'
	option channel '11'
	option hwmode '11g'
	option path 'platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.4/1-1.4:1.0'
	option htmode 'HT20'
	option disabled '0'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'LEDE'
	option encryption 'none'
	option disabled '1'
EOF
	echo "wireless config written"
fi

cp -f ${RT28XX_DIR}/*.ko ${RT28XX_DIR}/../ && \
	echo "done" > "${RT28XX_DIR}/.done"

# remove r8818e wifi driver
[ -e '/etc/modules.d/rtl8188eu' ] && rm -rf '/etc/modules.d/rtl8188eu'

sync ; sleep 2 ; reboot # IMPORTANT: reboot to install new kernel modules
exit 7
