#!/bin/sh

# fallback_rootfs.sh

# prueft U-Boot-Umgebungsvariable my_fallback_allowed, falls nicht 1: Abbruch mit Fehler
# sonst: setzt my_boot_switch um (zwischen 0 und 1), setzt my_fallback_allowed auf 0, my_boot_switch_dirty auf 1 und boot_os auf 0

boot_switch_dirty=$(fw_printenv -n my_boot_switch_dirty)

if [ "$boot_switch_dirty" != "0" ]
then
	echo "U-Boot-Umgebungsvariable my_boot_switch_dirty hat nicht den Wert 0, d.h. entweder wurde ein update oder ein fallback durchgefuehrt und noch nicht mit reboot abgeschlossen"
	exit 1
fi

fallback_allowed=$(fw_printenv -n my_fallback_allowed)

if [ "$fallback_allowed" != "1" ]
then
	echo "U-Boot-Umgebungsvariable my_fallback_allowed hat nicht den Wert 1, breche daher sicherheitshalber ab. Wenn du wirklich sicher bist, aendere bitte my_fallback_allowed entsprechend auf 1 und versuche es erneut."
	exit 1
fi

answer=

while ! [ "$answer" = "j" -o "$answer" = "n" ]
do

	echo "Wirklich U-Boot-Umgebungsvariablen umsetzen und direkt danach rebooten? (j/n)"
	read answer
done

if [ "$answer" != "j" ]
then
	echo "Gut, dann breche ich ab."
	exit 1
fi


boot_switch=$(fw_printenv -n my_boot_switch)

printf "my_boot_switch $(( 1 - $boot_switch ))\nmy_fallback_allowed 0\nmy_boot_switch_dirty 1\nboot_os 0\n" >/tmp/fw_env_script.txt

if ! fw_setenv -s /tmp/fw_env_script.txt
then
	exit 1
fi

reboot


