#!/bin/sh

# update.sh

. "$(dirname "$0")"/prmsg.sh
get_opts "$1"

d=$(dirname "$0")
cd $d

# alle weiteren skripte setzen voraus, dass das aktuelle Verzeichnis das ist, in dem update.sh liegt

if ! intern/check_requirements.sh
then
	exit 1
fi

########################################
# calculate next mtd nums

boot_switch=$(fw_printenv -n my_boot_switch)
echo "boot_switch=${boot_switch}"
next_boot_switch=${boot_switch}
echo "next_boot_switch=${next_boot_switch}"
next_kernel_num=$(fw_printenv -n my_kernel${next_boot_switch}_num)
next_rootfs_num=$(fw_printenv -n my_rootfs${next_boot_switch}_num)

##################################################
mkdir -p /data/update


##################################################
# Update kernel

./update_kernel.sh $next_kernel_num $boot_switch $next_boot_switch

cv_board=$(fw_printenv -n CV_BOARD)
echo "cv_board=${cv_board}"
if [ "$cv_board" = "CV_34_39_500B" ]
then
	kernel=uImage.CV_34_39_500B
elif [ "$cv_board" = "CV_34_39_500" ]
then
	kernel=uImage.CV_34_39_500
else
	kernel=uImage.CV_34_39_500A
fi

if ! [ -f $kernel ]
then
	echo "ERROR: update-tarball enthaelt update_kernel.sh, aber nicht $kernel"
	exit 1
fi

next_kernel_size=$(printf '%x' $(stat -L -c "%s" $kernel))

fw_setenv my_kernel${next_boot_switch}_size $next_kernel_size
fw_setenv my_kernel_size $next_kernel_size

if [ -f setbootmsg2display.sh ]
then
    sh setbootmsg2display.sh
fi

rm -rf /data/update/tmp

printf "\n\n** UPDATE ERFOLGREICH! Bitte anschließenden reboot nicht vergessen!\n\n"
displayMsg "Update successful!" "Please restart"
