#!/bin/sh
#
# ABEM Terrameter DHCP-mode switch
#
# Author: Johan Hovold <johan.hovold@lundinova.se>

config="/etc/default/terrameter-dhcp"
udhcpd_config="/etc/udhcpd.conf"

check_config() {
	local config=$1

	if [ ! -f $config ]; then
		echo "$0: failed to open $config" >&2
		exit 1
	fi
}

check_config $config

. $config

case "$1" in
    init)
        echo 0 > /sys/bus/platform/devices/terrameter-gpio/eth_select/value
        echo 0 > /sys/bus/platform/devices/terrameter-gpio/wlan_pwr_on/value
        ;;
    client)
        echo 0 > /sys/bus/platform/devices/terrameter-gpio/eth_select/value
        echo 0 > /sys/bus/platform/devices/terrameter-gpio/wlan_pwr_on/value
	start-stop-daemon -K --oknodo -x /usr/sbin/udhcpd 
	ifconfig $iface down
	ifconfig $iface 0.0.0.0
	/etc/init.d/busybox-ifplugd start
	/etc/init.d/openvpn start
        udhcpc
	;;
    server)
        echo 0 > /sys/bus/platform/devices/terrameter-gpio/eth_select/value
        echo 0 > /sys/bus/platform/devices/terrameter-gpio/wlan_pwr_on/value
	check_config $udhcpd_config
	/etc/init.d/openvpn stop
	/etc/init.d/busybox-ifplugd stop
	ifdown $iface
	ifconfig $iface $serveraddr
        killall udhcpc
	start-stop-daemon -S --oknodo -x /usr/sbin/udhcpd -- \
	    $udhcpd_config
	;;
    wifiap)
        /etc/init.d/udhcpd stop
	/etc/init.d/openvpn stop
        # Turn on wlan module power
        echo 1 > /sys/bus/platform/devices/terrameter-gpio/wlan_reset/value
        echo 1 > /sys/bus/platform/devices/terrameter-gpio/wlan_pwr_on/value
        sleep 1
        echo 0 > /sys/bus/platform/devices/terrameter-gpio/wlan_reset/value
        sleep 1
        echo 1 > /sys/bus/platform/devices/terrameter-gpio/eth_select/value
        #wait? /sys/bus/platform/devices/terrameter-gpio/wlan_act_ind/value==1?
	start-stop-daemon -K --oknodo -x /usr/sbin/udhcpd 
        sleep 5
	ifconfig $iface down
	ifconfig $iface 0.0.0.0
	/etc/init.d/busybox-ifplugd start
        udhcpc
        ;;

    wificlient)
        #not supported yet
        ;;
    
    notinuse)
        #not supported yet
        ;;

	*)
		echo "Usage: $0 {client|server|wifiap}" >&2
		exit 1
esac

exit 0
