#!/bin/sh

#if [ "$#"  != "4" ]; then
#    echo "Wrong number of parameters!"
#    exit 1
#fi

#
# If there is no exportED variables, use defaults value
#
[ "$timeout" = "" ] && {
    timeout=59
}

[ "$kill_pc" = "" ] && {
    kill_pc="no"
}

[ "$kill_mngr" = "" ] && {
    kill_mngr="yes"
}

echo "running" > /var/asd/dl_error
/usr/bin/write_dl_conf /var/asd/dl.conf 2
psi -o write -t asd

ledctl blinkon power

[ "$kill_pc" = "yes" ] && {
    echo ""
    echo "Killing 'pc'..."
    PCPID=`cat /var/run/pc.pid`
    kill -16 $PCPID
    sleep 5
}

[ "$kill_mngr" = "yes" ] && {
    echo ""
    echo "Killing 'mngr'..."
    MNGRPID=`pidof -s mngr`
    kill -15 $MNGRPID
    sleep 1
}

echo "downloading" > /var/asd/dl_error
psi -o write -t asd

echo ""
echo "Dropping caches..."
echo 3 > /proc/sys/vm/drop_caches
grep 'MemFree' /proc/meminfo

echo ""
echo "FW downloading is in progress"
wget -T $timeout -O $1 $2

if [ "$?" == "0" ]; then
    sleep 3
    [ "$kill_pc" = "yes" ] && {
	echo ""
	echo "FW downloading is successfully completed"
	echo ""
	echo "Killing 'httpd'..."
	HTTPDPID=`pidof -s httpd`
	kill -9 $HTTPDPID
	sleep 1
    }
    if [ -f $1 ]; then
	sleep 3
	echo ""
	echo "Starting Firmware Upgrade..."
	psi -o write -t firmware -f $1
	if [ "$?" != "0" ]; then
	    echo "Flash image failed" > /var/asd/dl_error
	    psi -o write -t asd
	else
	    rm /var/asd/dl_error
	    psi -o write -t asd
	fi
    else
	echo ""
	echo "Firmware upgrade file does not exist"
	echo "Download failed" > /var/asd/dl_error
	psi -o write -t asd
    fi
else
    echo ""
    echo "Couldn't get firmware, error code $? "
    echo "Download failed" > /var/asd/dl_error
    psi -o write -t asd
fi

[ "$kill_pc" = "yes" ] && {
    echo ""
    echo "Killing 'hostapd'..."
    HOSTAPD=`pidof hostapd`
    kill -15 $HOSTAPD
    sleep 1 

    echo ""
    echo "Killing 'pppd'..."
    PPPDPID=`cat /var/run/pppd.pid`
    kill -15 $PPPDPID
    sleep 1 

    echo ""
    echo "Killing 'nasd'..."
    NASDPID=`pidof nasd`
    kill -15 $NASDPID
    sleep 1
}

echo ""

reboot
