#/!bin/sh

# Firmware upgrade sequence

#echo "waiting for firmware" > /dev/console

# Check if already upgrading
RET=`ps | grep [f]w_file | wc | awk '{print $1}'`
if [ "$RET" = "2" ]
then
	#echo "already upgrading firmware, abort." > /dev/console
	exit 1
fi
if [ -f /tmp/upgrading_firmware ]
then
	#echo "already upgrading firmware, abort." > /dev/console
	exit 1
fi

mkdir -p /tmp/fw_file
rm -f /tmp/fw_file/*

# start TFTPd
#echo "start tftp server" > /dev/console
/usr/sbin/tftpd-hpa -l -c -u root -s /tmp/fw_file/

# loop for waiting firmware
# /tmp/tftpd_file_uploading
count=1
while [ "$count" -le 30 ]
do
	RET=`ps | grep [f]w_file | wc | awk '{print $1}'`
	if [ "$RET" = "2" ]
	then
		break;
	fi
	sleep 1
	count=$(($count+1))
done

if [ "$RET" = "1" ]
then
	#echo "wait firmware timeout" > /dev/console
	# kill tftpd
	tftpd_pid=`ps | grep [f]w_file | awk '{print $1}'`
	kill $tftpd_pid
	file_name=`ls /tmp/fw_file/`
	rm -f /tmp/fw_file/$file_name
	exit 2
fi

# downloading firmware
count=1
while [ "$count" -le 600 ]
do
	RET=`ps | grep [f]w_file | wc | awk '{print $1}'`
	if [ "$RET" = "2" ]
	then
		sleep 2
		count=$(($count+1))
	else
		#echo "firmware upload done" > /dev/console
		break;
	fi
done

#echo "firmware file received, start upgrading" > /dev/console

# kill tftpd
tftpd_pid=`ps | grep [f]w_file | awk '{print $1}'`
kill $tftpd_pid

# call fw
#echo "mv" > /dev/console
rm -f /tmp/V3K9.all
file_name=`ls /tmp/fw_file/`
mv /tmp/fw_file/$file_name /tmp/V3K9.all

#echo "call webfwupgrade" > /dev/console
. /sbin/webfwupgrade

#echo "webfwupgrade ok" > /dev/console

/sbin/reset
