#!/bin/sh

# updateRootFs.sh

usage() {
	echo "usage: $1 <ubi image> <mtd partition number>"
}

UBI_FILE="$1"
PART_PASSIVE="$2"


echo "UBI_FILE is $UBI_FILE"
echo "PART_PASSIVE is $PART_PASSIVE"

if [ "${UBI_FILE}" = "" -o "${PART_PASSIVE}" = "" ]
then
	usage $0
	exit 1
fi



# TODO testen oder sauber ermitteln welche neue UBI_NUM verwendet werden wird
UBI_NUM=2

MP=/mnt/rootfs_passive

#####################################################################
# cv-image-kurz-cv_kurz.ubi auf /mtd10 flashen

mkdir -p $MP
umount $MP &>/dev/null # nur fuer den fall dass zufaellig bereits gemountet, im anderen Fall Fehlermeldungen erwartet. Zur Minimierung der allgemeine Verwirrung diese nach /dev/null umgeleitet.
ubidetach -m ${PART_PASSIVE} &>/dev/null # nur fuer den Fall dass bereits attached, im anderen Fall Fehlermeldungen erwartet. Zur Minimierung der allgemeine Verwirrung diese nach /dev/null umgeleitet.
if ! ubiformat /dev/mtd${PART_PASSIVE} -s 2048 -O 2048 -f "${UBI_FILE}" -q
then
	echo 'ubiformat fehlgeschlagen.'
	exit 1
fi
# Zur Kontrolle attachen und mounten
if ! ubiattach /dev/ubi_ctrl -m ${PART_PASSIVE} -O 2048
then
	echo 'ubiattach fehlgeschlagen.'
	exit 2
fi

control_mtd=$(cat /sys/devices/virtual/ubi/ubi${UBI_NUM}/mtd_num)

if [ "${control_mtd}" != "${PART_PASSIVE}" ]
then
	echo 'Unerwartete Ubi num. Breche ab.'
	exit 3
fi

# TODO sicherstellen dass hier auch wirklich immer ubi1 - oder etwa ubi3 wenn daten partition ubi2 ist??
if ! mount -t ubifs ubi${UBI_NUM}:rootfs $MP
then
	echo "mount ubi${UBI_NUM}:rootfs fehlgeschlagen."
	exit 4
fi

