# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
echo "/etc/profile start!! "

export LD_LIBRARY_PATH="/lib:/usr/lib:/mtd_swu/standalone"
export PATH="/usr/sbin:/usr/bin:/bin:/sbin:/etc/Scripts"

export PATH PS1 LD_LIBRARY_PATH
export MICOM_BASE=/sbin
umask 022
#From rc.local file

# mount & check /mtd_rwarea
MOD_DIR=/lib/modules
insmod $MOD_DIR/fsr.ko
insmod $MOD_DIR/fsr_stl.ko
insmod $MOD_DIR/rfs_glue.ko
insmod $MOD_DIR/rfs_fat.ko                                                    

ulimit -c unlimited
echo /dtv/core > /proc/sys/kernel/core_pattern
echo "localhost" > /proc/sys/kernel/hostname
echo "32" > /proc/sys/kernel/msgmni

############### partition naming ##############
# onenand 
export MTD_ONBOOT_BML=dev/bml0/1
export MTD_UBOOT_BML=dev/bml0/2

export MTD_KERNEL0_BML=/dev/bml0/5
export MTD_KERNEL1_BML=/dev/bml0/7

export MTD_ROOTFS0_BML=/dev/bml0/6
export MTD_ROOTFS1_BML=/dev/bml0/8

export MTD_SIGN0_BML=/dev/bml0/9
export MTD_SIGN1_BML=/dev/bml0/10

export MTD_RWAREA_BML=/dev/bml0/12
export MTD_RWAREA_STL=/dev/stl0/12

export MTD_EXE_0_BML=/dev/bml0/13
export MTD_EXE_0_STL=/dev/stl0/13

# eMMC 
export MTD_SWU=/dev/mmcblk0p1
export MTD_ROCOMMON=/dev/mmcblk0p2
export MTD_EMANUAL=/dev/mmcblk0p3
export MTD_CONTENTS=/dev/mmcblk0p5
export MTD_APPEXT0=/dev/mmcblk0p6
export MTD_APPEXT1=/dev/mmcblk0p7
export MTD_RWCOMMON=/dev/mmcblk0p8
################################################

# for booting upgrade..
export PARTITION_FLAG00=/mtd_rwarea/PartitionSwitch_0_0
export PARTITION_FLAG10=/mtd_rwarea/PartitionSwitch_1_0
export SHELL_UPDATE_FLAG=/mtd_rwarea/shell_update_flag
export USB_UPDATE_FLAG=/mtd_rwarea/swu_finalizer_complete_flag
export UPGRADE_START=/mtd_rwarea/UPGRADE_START
export UPDATE_IMG_DIR=/mtd_swu
export UPGRADE_FLAG=/mtd_rwarea/UPGRADE_FLAG

export PARTITION_VERSION_1ST=/mtd_rwarea/Version.0
export PARTITION_VERSION_2ND=/mtd_rwarea/Version.1

export PARTITION_CHECK_1ST=/mtd_rwarea/empty.0
export PARTITION_CHECK_2ND=/mtd_rwarea/empty.1

export PARTITION_TXT_PATH=/mtd_rwarea/partition.txt

# must mount first because udpate flag exist in rwarea.
echo "mount mtd_rwarea"
mount -t rfs ${MTD_RWAREA_STL} /mtd_rwarea
if [ $? != 0 ]
then
	partition.erase ${MTD_RWAREA_BML}
    stl.format -r 7 ${MTD_RWAREA_BML}
    fat.format -s 1 -S 2048 ${MTD_RWAREA_STL}
    mount -t rfs ${MTD_RWAREA_STL} /mtd_rwarea
fi
#===========[boot partition select]===============
PART_FLAG=$(cat /proc/cmdline | cut -d'/' -f3 | cut -d' ' -f1)

rm -f /mtd_rwarea/PartitionSwitch*

if [ "$PART_FLAG" = "tfsr6" ]; then
	echo "1st partition!!"
	touch $PARTITION_FLAG00
else
	echo "2nd partition!!"
    touch $PARTITION_FLAG10
fi
#=================================================

#==========[flag setting]=========================
UseSecondPartition="false"
RunUSBUpgrade="false"
CurrentFlag=$PARTITION_FLAG00

if [ -e $PARTITION_FLAG00 ]; then
    UseSecondPartition="false"
    RunUSBUpgrade="false"
    CurrentFlag=$PARTITION_FLAG00
elif [ -e $PARTITION_FLAG10 ]; then
    UseSecondPartition="true"
    RunUSBUpgrade="false"
    CurrentFlag=$PARTITION_FLAG10
else
    UseSecondPartition="false"
    RunUSBUpgrade="false"
    touch $PARTITION_FLAG00
    CurrentFlag=$PARTITION_FLAG00
fi
#=================================================

#===========[shell update]=============
if [ -e $USB_UPDATE_FLAG ]; then 
    echo "update Images!!! : manual"

#    if [ -e $PARTITION_TXT_PATH ]; then
#    	echo "partition check..."
#        /etc/Scripts/partition_check.sh
#    fi

	$MICOM_BASE/rollback &

	echo "mount mtd_swu"
   	mount -t rfs ${MTD_SWU} /mtd_swu
   	if [ $? != 0 ]; then
	fat.format -F 32 ${MTD_SWU}
       	mount -t rfs ${MTD_SWU} /mtd_swu
   	fi
	/etc/Scripts/flash_update.sh
	umount /mtd_swu
fi
#=================================================

echo "mount mtd_exe"
mount -t squashfs ${MTD_EXE_0_STL} /mtd_exe/

echo "mount mtd_rocommon"
mount -t squashfs ${MTD_ROCOMMON} /mtd_rocommon

echo "mount mtd_appext"
if [ -e $PARTITION_FLAG10 ]; then
    echo "mount mtd_appext 2nd partition!!!"
    mount -t squashfs ${MTD_APPEXT1} /mtd_appext/
else
    echo "mount mtd_appext 1st partition!!!"
    mount -t squashfs ${MTD_APPEXT0} /mtd_appext/
fi

#=============[ SWU/OTA/OTN update ]=============
if [ -e $UPGRADE_START ];then
    /mtd_exe/Fastlogo.sh
    echo "=================================="
    echo " "
    echo " Update Images with Standalone!!!"
    echo " "
    echo "=================================="

    echo "USB start..."
    /etc/Scripts/usb_start.sh &

#    if [ -e $PARTITION_TXT_PATH ]; then
#    	echo "partition check...just for dev ver."
#        /etc/Scripts/partition_check.sh
#    fi

    echo "mount mtd_swu"
    mount -t rfs ${MTD_SWU} /mtd_swu
    if [ $? != 0 ]
    then
    	fat.format -F 32 ${MTD_SWU}
        mount -t rfs ${MTD_SWU} /mtd_swu
    fi

    echo "mount mtd_emanual"
    mount -t rfs ${MTD_EMANUAL} /mtd_emanual
    if [ $? != 0 ]
    then
        fat.format -F 32 ${MTD_EMANUAL}
        mount -t rfs ${MTD_EMANUAL} /mtd_emanual
    fi

    /etc/Scripts/stand_alone_upgrade.sh
else
	ln -s /mtd_exe/.info /dtv/.info
fi
#==================================================

$MICOM_BASE/rollback &

if [ -f /mtd_exe/exeDSP ]; then				
	echo "Application is started.."	
	/mtd_exe/rc.local
else				
	echo "Application executable is not found.."		
fi

if [ -e $UPGRADE_FLAG  ]; then
    echo "******************************************************"
    echo "Application running is failed.."
    echo "SW image is stopped.."
    echo "******************************************************"
else
    echo "Application running is failed..try to do emergency state handling"
	echo "wait 5 seconds...."
	x=0
	while [ $x -lt 5 ]
	do
    	x=$(($x + 1))
    	sleep 1
    	echo $x
	done

	if [ "$UseSecondPartition" = "true" ]; then
    	if [ -e $PARTITION_CHECK_1ST ]; then
        	echo "no sub SW image..."
        	#$MICOM_BASE/shutdown
    	else
			#       echo "rollback to 1.."
        	echo "current partition 2nd is corrupted. roll back to sub partition 1st"
        	rm -f $PARTITION_VERSION_2ND
        	touch $PARTITION_CHECK_2ND
        	sync
        	$MICOM_BASE/toggle

		    touch $USB_UPDATE_FLAG
		    sync
		    echo "Reboot system..."
		    $MICOM_BASE/reboot
    	fi
	else
    	if [ -e $PARTITION_CHECK_2ND ]; then
        	echo "no sub SW image..."
        	#$MICOM_BASE/shutdown
    	else
			#       echo "rollback to 2.."
        	echo "current partition 1st is corrupted. roll back to sub partition 2nd"
        	rm -f $PARTITION_VERSION_1ST
        	touch $PARTITION_CHECK_1ST
        	sync
        	$MICOM_BASE/toggle

		    touch $USB_UPDATE_FLAG
		    sync
		    echo "Reboot system..."
		    $MICOM_BASE/reboot
    	fi
	fi
fi

