#!/bin/sh

if [ -f "/etc/init.d/S01Release" ];
then
   echo "File 'S01Release' exist."
   exit 0
else
   echo "File 'S01Release' does not exist!"
fi

# Core
SDCARD=/dev/mmcblk1p1
MOUNTAPPCMD="-t ubifs ubi0:application"
BOARDNAME="Core"

if [ `cat /sys/bdinfo/board_name` = "PicoCoreMX6UL100" ]
then
	# Atom
	SDCARD=/dev/mmcblk0p1
	MOUNTAPPCMD="-t ext4 /dev/mmcblk1p3"
	BOARDNAME="Atom"
fi

# Common
UPDATEMARKERFILE="update_once"
UPDATEMARKERFILEPATH="/Core"

start()
{
	# try to check and restore the SD card
	echo "check and repair SD card..."
	fsck.vfat -a $SDCARD
	echo "check and repair SD card: done"

	echo 'clearing /media folder...'
	for FILE in /media/*
	do
		if ! [ -d "$FILE" ] || [ $(echo $FILE | grep -c '^/media/usb[0-7]$') -eq 0 ]
		then
			echo '    item '$FILE': delete with contents'
			rm -rf $FILE
		fi
	done
	echo '/media folder cleared'
	
	# mount SD card to /Core
	MOUNTED=0
	mount $SDCARD /Core && MOUNTED=1
	if [ $MOUNTED -eq 1 ]
	then
		# show startup logo on screen
		fbv -s 1 /Core/Startup/*.png > /dev/null 2>&1

		# delete update files
		if [ -f $UPDATEMARKERFILEPATH/$UPDATEMARKERFILE ]
		then
			while read -r updatefile;
			do
				echo "delete "$UPDATEMARKERFILEPATH/$updatefile
				rm -f $UPDATEMARKERFILEPATH/$updatefile
			done < $UPDATEMARKERFILEPATH/$UPDATEMARKERFILE
			echo "delete "$UPDATEMARKERFILEPATH/$UPDATEMARKERFILE
			rm -f $UPDATEMARKERFILEPATH/$UPDATEMARKERFILE
		fi
		
		# Files recovered by the fsck.vfat can be deleted, since their full recovery
		# in automatic mode does not seem possible.
		printf "delete FSCK*.REC files: "
		rm -f /Core/FSCK*.REC
		echo "done"
	else
		echo "SD card not found!"
	fi

	printf "Starting "$BOARDNAME": "
	
	# mount the Linux Application Partition to /app
	mount $MOUNTAPPCMD /app

	# start and setup ethernet
	ifconfig eth0 192.168.0.83 netmask 255.255.255.0 up

	# start and set up CAN Bus
	ip link set can0 up type can bitrate 1000000

	# got to top level directory
	cd /

	if [ "${BOARDNAME}" = "Core" ]
	then
		/usr/local/bin/bmixd.bash &
		echo " Service BMIXD started!"
	fi

	# start up CORE system
	sh /app/CoreStart/corestart.sh &
	
	echo "OK"
}

stop() {
	printf "Stopping "$BOARDNAME": "
	umount /app
	umount /Core
	echo "OK"
}

case "$1" in
  start)
 	start
	;;
  stop)
	stop
	;;
  *)
	echo "Usage: $0 {start|stop}"
	exit 1
esac

exit $?
