#!/bin/sh

# Author   : Jean-Sebastien VALETTE <jean-sebastien.valette@libertysurf.fr>
# Creation : 06/12/2001

# 03/02/2002: added a sleep 2 after loading USB controller driver, as suggested
# by Sebastien YAPO <sebastien.yapo@free.fr>.

# 07/02/2002: added the CVS Id
# CVS $Id: startmodem,v 1.13 2002/05/05 16:07:07 papillau Exp $
# Tag $Name:  $

# 15/02/2002 Benoit PAPILLAULT
#   remove "modprobe uhci" since this module never worked with this modem

PATH=/bin:/sbin:/usr/bin:/usr/sbin

if [ ! -d /proc/bus/usb ]; then
	echo "Loading support for USB" ;
	modprobe usbcore
fi

# mount usbdevfs is this is not the case
if [ ! -f /proc/bus/usb/devices ]; then
	echo "Loading preliminary USB device filesystem" ;
	mount -t usbdevfs none /proc/bus/usb
fi

#verify if dabusb is loaded
lsmod|grep dabusb > /dev/null;
if [ $? == "0" ]; then
	echo "Dabusb seems to be present trying to remove it...";
	rmmod dabusb;
	lsmod|grep dabusb > /dev/null;
if [ $? == "0" ]; then
echo "Couldn't remove dabusb try rmmod dabusb manually";
else
echo "Removed dabusb successfully";
fi
fi

# try to locate UHCI controller
grep -A 4 USB /proc/pci | grep I/O > /dev/null
if [ $? -eq 0 ]; then
# ok, we have a UHCI controller, check if the linux driver is loaded
	grep "^S:  Product=USB UHCI Root Hub" /proc/bus/usb/devices > /dev/null
	if [ $? -ne 0 ]; then
		echo "Loading UHCI support" ;
		modprobe usb-uhci ;
		sleep 2 ;
	fi
fi

# try to locate OHCI controller
grep -A 4 USB /proc/pci | grep memory > /dev/null
if [ $? -eq 0 ]; then
# ok, we have a OHCI controller, check if the linux driver is loaded
	grep "^S:  Product=USB OHCI Root Hub" /proc/bus/usb/devices > /dev/null
	if [ $? -ne 0 ]; then
		echo "Loading OHCI support" ;
		modprobe usb-ohci
		sleep 2
	fi
fi

echo "Init modem ..." ;

# check for the EZ-USB chips. If it's not there, maybe the firmware is 
# already loaded ... so continue.
if [ $# != "4" ]; then
grep "^P:  Vendor=08ea ProdID=00c9" /proc/bus/usb/devices > /dev/null;
else
grep "^P:  Vendor=$1 ProdID=$2" /proc/bus/usb/devices > /dev/null;
fi
if [ $? -eq 0 ]; then
	echo "	Load Firmware ...";
	if [ $# != "4" ]; then	
	/usr/local/bin/eci-load1 /etc/eciadsl/eci_firm_kit_wanadoo.bin;
	else
	/usr/local/bin/eci-load1 0x$1 0x$2 0x$3 0x$4 /etc/eciadsl/eci_firm_kit_wanadoo.bin;
	fi
	if [ $? -ne 0 ] ; then
		echo "Failed to load firmware" ;
		exit -1 ;
	fi ;
	echo "	... Load Firmware OK"
fi

sleep 20 ;

if [ $# != "4" ];then
grep "^P:  Vendor=0915 ProdID=00ca" /proc/bus/usb/devices > /dev/null;
else
grep "^P:  Vendor=$3 ProdID=$4" /proc/bus/usb/devices > /dev/null;
fi
if [ $? -ne 0 ]; then
	echo "I can't find your modem... sorry :-("
	exit -1;
fi

echo "	Setup modem ..." ;
if [ $# != "4" ]; then
/usr/local/bin/eci-load2 /etc/eciadsl/eci_wan3.bin;
else
/usr/local/bin/eci-load2 0x$3 0x$4 /etc/eciadsl/eci_wan3.bin;
fi
if [ $? -ne 0 ] ; then
	echo "Failed to setup the modem" ;
	exit -1 ;
fi ;
echo "	... Setup Modem OK" ;

echo "... modem init OK" ;

sleep 20 ;

echo "Connect Modem ..." ;
nice --20 pppd call adsl updetach
if [ $? -ne 0 ] ; then
	echo "Connexion failed" ;
	exit -1 ;
fi ;
echo "... Connect Modem OK" ;

# The default route should be added automatically if no default route
# already exists. If you already have a default route using your
# ethernet card, you should configure your ethernet card. 

exit 0;

# Wait until ppp0 get available
COUNTER=20
FLREADY="no"
echo "Add Default route ..." ;
echo -n "	wait for ppp0 : " ;
for (( times = 1; times < $COUNTER; times++ )); do
	FOUND=`ifconfig | grep ppp0` ;
	if [ ! -z "$FOUND" ] ; then
		FLREADY="yes" ;
		break ;
	fi ;
	sleep 1 ;
	echo -n "." ;
done

echo "" ;
unset COUNTER ;
unset FOUND ;

if [ "$FLREADY" = "yes" ] ; then
	echo "	ppp0 now available" ;
	route add default dev ppp0 ;
	echo "Default route added" ;
else
	echo "No device found" ;
	unset FLREADY ;
	exit -1 ;
fi ;

unset FLREADY ;

exit 0 ;
