#!/bin/bash

echo
echo "Start Post Production script"
echo

. /etc/image_features
. /etc/sysconfig/rc.conf

TFTP_CLIENT=/bin/tftp
PPT_TFTP_CLIENT=ppt_tftp_client
PPT_TFTP_SERVER=ppt_tftp_server
TMP_COMM_FILE="/mnt/ramdisk/tftp.comm"
TEST_SCRIPT="linuxtest.txt"
BOOT_IMAGE="u-boot.bin"
TESTFIAD_IMAGE="testfiad.bin"
LINUX_IMAGE="image.bin"
BOOT_SCRIPT="bootscript.txt"
SCRIPT_SF="script.txt"

ServerIP=$1

TFTP () {
    $TFTP_CLIENT -g -r $1 $sip
    if [ $? != 0 ] ; then
        return 1
    else
        return 0
    fi
}

PPT_TFTP_CLIENT () {
    ./$PPT_TFTP_CLIENT -r $1 -s $sip
    if [ $? != 0 ] ; then
        return 1
    else
        return 0
    fi
}

CPU_COUNT=$(/bin/cat /proc/fiad/hw-info | grep BOARD_CPU_COUNT | /bin/cut -f 2 -d '=')
BOARD_CPU_FUNCTION=$(/bin/cat /proc/fiad/hw-info | grep BOARD_CPU_FUNCTION | /bin/cut -f 2 -d '=')
STUFFED_FXO=$(/bin/cat /proc/fiad/hw-info | grep STUFFED_FXO | /bin/cut -f 2 -d '=')
STUFFED_FXS=$(/bin/cat /proc/fiad/hw-info | grep STUFFED_FXS | /bin/cut -f 2 -d '=')
STUFFED_E1T1_CO=$(/bin/cat /proc/fiad/hw-info | grep STUFFED_E1T1_CO | /bin/cut -f 2 -d '=')
STUFFED_ISDN=$(/bin/cat /proc/fiad/hw-info | grep STUFFED_ISDN | /bin/cut -f 2 -d '=')
BOARD_ID=$(/bin/cat /proc/fiad/hw-info | grep BOARD_ID | /bin/cut -f 2 -d '=')

if [ "$FEATURE_MULTIDSP" = "1" ] ; then
	NUMBER_OF_CPU_CORES=`cat /proc/cpuinfo | grep processor | wc -l`
else
	NUMBER_OF_CPU_CORES="1"
fi


cd /mnt/ramdisk
msgPort=$(envtool show msgport | /bin/cut -d= -f2)

if [[ $msgPort =~ error ]];  then
	echo "msgport not set, use default"
	msgPort=12345
fi

echo "CPU count = $CPU_COUNT  [$BOARD_CPU_FUNCTION] msgPort. $msgPort" 

if ! /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
	exit 0
fi

ip=$(envtool show ipaddr | /bin/cut -d= -f2)
sip=$(envtool show serverip | /bin/cut -d= -f2)
	
echo "Configuring eth-lan interface. ip = $ip"
ifconfig lan0 $ip netmask 255.255.255.0

/bin/sleep 2

echo -e "Softdogd sleep"    
/etc/init.d/softdogd sleep > /dev/null 2>&1
    
cp -f /tmp/featurestatus.conf /tmp/rc1
/bin/sed s/SEC_START_ACTIVATION=false/SEC_START_ACTIVATION=true/g /tmp/rc1 > /tmp/rc2
cp -f /tmp/rc2 /tmp/featurestatus.conf
rm -f /tmp/rc1 /tmp/rc2

last_activated=$(envtool show ppt_activated | /bin/cut -d= -f2)

if [ "$last_activated" != "no" ]; then
	FXONUMBER=$(envtool | grep fxonumber)
	FXSNUMBER=$(envtool | grep fxsnumber)
	HWVERSION=$(envtool | grep hwversion)

	TDM_USED=$(envtool | grep tdm_used)
	TDM_CONFIG=$(envtool | grep tdm_config)
	TDM_FRAME_BUFFER_SIZE_MAX=$(envtool | grep tdm_frame_buf_size_max)
	TDM_DEBUG=$(envtool | grep tdm_debug)
	if [ "$BOARD_ID" != "9" ] &&  [ "$BOARD_ID" != "10" ]; then
		TFTP F_l_m_t_Inserting_ClkMon_module
		insmod /lib/modules/epygi/clkmon.ko
		TFTP F_l_m_t_Inserting_SPITDM_module
		insmod /lib/modules/epygi/spitdm.ko $TDM_USED $TDM_CONFIG $TDM_FRAME_BUFFER_SIZE_MAX $TDM_DEBUG $HWVERSION dsp_number_per_cpu=$NUMBER_OF_CPU_CORES
		
		if [ "$BOARD_CPU_FUNCTION" = "MASTER" ]; then
			if [ "$STUFFED_FXO" = "YES" ] ; then
				FXO_USED=$(envtool | grep fxo_used)
				FXO_DEVICE_NUMBER=$(envtool | grep fxo_device_num)
				FXO_TIMESLOT_SHIFT=$(envtool | grep fxo_timeslot_shift)
				FXO_VOICE_RESET_ENABLE=$(envtool | grep fxo_voice_reset_ctrl_enable)

				TFTP F_l_m_t_Inserting_FXO_module
				insmod /lib/modules/epygi/fiad_fxo.ko $FXO_USED $FXO_DEVICE_NUMBER $FXO_TIMESLOT_SHIFT $FXO_VOICE_RESET_ENABLE $HWVERSION
			fi
		
			if [ "$STUFFED_FXS" = "YES" ] ; then
				FXS_USED=$(envtool | grep fxs_used)
				FXS_DEVICE_NUMBER=$(envtool | grep fxs_device_num)
				FXS_TIMESLOT_SHIFT=$(envtool | grep fxs_timeslot_shift)
				FXS_VOICE_RESET_ENABLE=$(envtool | grep fxs_voice_reset_ctrl_enable)

				TFTP F_l_m_t_Inserting_FXS_module
				insmod /lib/modules/epygi/fiad_fxs.ko $FXS_USED $FXS_DEVICE_NUMBER $FXS_TIMESLOT_SHIFT $FXS_VOICE_RESET_ENABLE $HWVERSION
			fi

			if [ "$STUFFED_E1T1_CO" != "0" ] ; then
				TFTP F_l_m_t_Inserting_PMC_module
				insmod /lib/modules/epygi/fiad_pmc.ko
			fi

			if [ "$STUFFED_ISDN" != "0" ] ; then
				TFTP F_l_m_t_Inserting_ISDN_module
				insmod /lib/modules/epygi/fiad_isdn.ko
			fi

			if [ "$SUBPRODUCT_TYPE" = QUADRO_A10_FXSGW ] || [ "$FEATURE_E1T1" = "1" ]; then
				insmod /lib/modules/epygi/fan.ko

				echo -n "Starting fan control:         "
				(
				/bin/fancontrol -a > /dev/null 2>&1 &
				 echo "done"
				)
			fi

			TFTP F_l_m_t_Starting_voice_subsystem
			/etc/init.d/voice start_ppt
		else
			TFTP F_l_m_t_Starting_DSP
			/etc/init.d/voicedsp start
		fi

		TFTP F_l_m_t_Starting_test_script

		TFTP $TEST_SCRIPT
		if [ $? = 1 ] || [ ! -s "./$TEST_SCRIPT" ] ; then
			echo -e "tftp\tError"
			if /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
				envtool ppt_flag=failed
				echo "System reboot."
				/bin/reboot
			else
				exit 0
			fi
		else
			echo -e "\ntftp\tdone\n"
		fi

	else
		/usr/sbin/alsactl -f /etc/asound.state.h3 restore
		TFTP F_l_m_t_Starting_voice_subsystem
		/etc/init.d/voice start_ppt
		TFTP F_l_m_t_Starting_test_script
		TFTP $TEST_SCRIPT
		if [ $? = 1 ] || [ ! -s "./$TEST_SCRIPT" ] ; then
			echo -e "tftp\tError"
			if /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
				envtool ppt_flag=failed
				echo "System reboot."
				/bin/reboot
			else
				exit 0
			fi
		else
			echo -e "\ntftp\tdone\n"
	fi
fi



  # Run script
  chmod 777 ./$TEST_SCRIPT
  ./$TEST_SCRIPT $sip $ip
else
	echo "Unmounting /dev/nandd  "
	killall feature
	umount /dev/nandd
	if [ $? -eq 0 ] ; then
		echo -e "unmount done\n"
	else
		echo -e "unmount failed. Code=$?\n"
	fi 
	
	TFTP F_l_m_t_Activate_Quadro
	
	TFTP ppttar
	if [ $? = 1 ] || [ ! -s ppttar ] ; then
		echo -e "tftp\tError"
		TFTP F_l_m_i_TEST_FAILED
		envtool ppt_flag=passed
		echo "System reboot."
		/bin/reboot
		exit 0
	else
		echo -e "\ntftp\tdone"
	fi

	echo -e "extract ppttar\n"
	tar -xf ppttar
	if [ $? = 1 ] ; then
		echo -e "failed\n"
		TFTP F_l_m_i_TEST_FAILED
		envtool ppt_flag=passed
		echo "System reboot."
		/bin/reboot
		exit 0
	fi
	
	/mnt/ramdisk/cpuinfo $sip $msgPort 1
	if [ $? != 1 ] ; then
		envtool ppt_activated="no"
		TFTP F_l_m_i_TEST_FAILED
	else
		envtool ppt_activated=
		TFTP F_l_m_i_TEST_PASSED
	fi
	envtool ppt_flag=passed
	echo "System reboot."
	/bin/reboot
	exit 0
fi

ppt_result=$(envtool show ppt_flag | /bin/cut -d= -f2)
doActivate=$(envtool show ppt_activate | /bin/cut -d= -f2)

if [ "$BOARD_CPU_FUNCTION" = "SLAVE" ] || [ "$CPU_COUNT" != "2" ]; then
	if [ "$CPU_COUNT" != "2" ]; then
		if [[ $doActivate =~ error ]]; then
			echo "System reboot."
			/bin/reboot
			exit 0
		fi
		
		if [ "$doActivate" = "1" ]; then
			if [ "$ppt_result" = "passed" ]; then
				TFTP F_l_m_t_Activate_Quadro
				/mnt/ramdisk/cpuinfo $sip $msgPort 1
				if [ $? != 1 ] ; then
					envtool ppt_activated="no"
					TFTP F_l_m_i_TEST_FAILED
				else
					TFTP F_l_m_i_TEST_PASSED
				fi
			fi
		fi
	fi
	envtool ppt_activate=""
	echo "System reboot."
	/bin/reboot
	exit 0
fi

if [ ! -s "./$PPT_TFTP_CLIENT" ] || [ ! -s "./$PPT_TFTP_SERVER" ]; then
    echo -e "tftp\tError"
	echo "System reboot."
	/bin/reboot
fi

chmod 777 ./$PPT_TFTP_CLIENT
chmod 777 ./$PPT_TFTP_SERVER
  
if [ "$(envtool show ppt_debug | grep "yes")" ] ; then
echo -e "PPT debug mode"
./message "PPT debug mode"
envtool ppt_debug=""	
exit 0
fi

TFTP F_l_m_t_Starting_CPU_2_PPT
TFTP F_l_m_t_Downloading_PPT_files
#Downloading files
	PPT_TFTP_CLIENT $BOOT_IMAGE
	if [ $? = 1 ]  || [ ! -s "./$BOOT_IMAGE" ] ; then
		echo -e "tftp\tError"
		if /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
			envtool ppt_flag=failed
			echo "System reboot."
			/bin/reboot
		fi	
		exit 0
	fi

	PPT_TFTP_CLIENT $LINUX_IMAGE
	if [ $? = 1 ]  || [ ! -s "./$LINUX_IMAGE" ] ; then
		echo -e "tftp\tError"
		if /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
			envtool ppt_flag=failed
			echo "System reboot."
			/bin/reboot
		fi
		exit 0
	fi

	PPT_TFTP_CLIENT $BOOT_SCRIPT
	if [ $? = 1 ]  || [ ! -s "./$BOOT_SCRIPT" ] ; then
		echo -e "tftp\tError"
		if /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
			envtool ppt_flag=failed
			echo "System reboot."
			/bin/reboot
		fi
		exit 0
	fi

	PPT_TFTP_CLIENT $SCRIPT_SF
	if [ $? = 1 ]  || [ ! -s "./$SCRIPT_SF" ] ; then
		echo -e "tftp\tError"
		if /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
			envtool ppt_flag=failed
			echo "System reboot."
			/bin/reboot
		fi
		exit 0
	fi

	PPT_TFTP_CLIENT $TESTFIAD_IMAGE
	if [ $? = 1 ]  || [ ! -s "./$TESTFIAD_IMAGE" ] ; then
		echo -e "tftp\tError"
		if /bin/grep depproc /proc/cmdline > /dev/null 2>&1 ; then
			envtool ppt_flag=failed
			echo "System reboot."
			/bin/reboot
		fi
		exit 0
	fi
	
#	Reseting CPU 2
	TFTP F_l_m_t_CPU_2_reset
	echo 1 > /proc/fiad/reset-cpu1
	echo 0 > /proc/fiad/reset-cpu1
	/bin/sleep 1
	
#	Starting PPT Tftp server
./$PPT_TFTP_SERVER -s $sip -o "172.40.0.1" -m $msgPort

if [ $? = 1 ] ; then
	envtool ppt_flag=failed
fi

ppt_result=$(envtool show ppt_flag | /bin/cut -d= -f2)

if [ "$doActivate" = "1" ]; then
	if [ "$ppt_result" = "passed" ]; then
    TFTP F_l_m_t_Activate_Quadro
    /mnt/ramdisk/cpuinfo $sip $msgPort 1
    if [ $? != 1 ] ; then
      envtool ppt_activated="no"
      TFTP F_l_m_i_TEST_FAILED
    else
      envtool ppt_activated=""
      TFTP F_l_m_i_TEST_PASSED
    fi
    envtool ppt_flag=passed
	fi
fi

envtool ppt_activate=""
echo "System reboot."
/bin/reboot
