#!/bin/sh

DESC="CCU Framework Update Watchdog"
DAEMON=/usr/bin/confirm_update

PID_FILE=/var/run/confirm_update.pid

TESTFILE=/tmp/testsoftwareEnabled

UPDATECOUNTERFILE=/data/updatecounter
UPDATECOUNTERNR=`cat "$UPDATECOUNTERFILE"`

# Key to unlock the u-boot environment
KEY=`cat /etc/fw_env.key`

p1=`cat /proc/cmdline | grep ubi.mtd=3 | wc -l`
p2=`cat /proc/cmdline | grep ubi.mtd=4 | wc -l`


# Make sure the progam exists
[ -f $DAEMON ] || exit 0

start() {
    if [ -f $TESTFILE ];
    then
        echo "$DESC; do nothing"
    else
        echo -n "Starting $DESC: "
        start-stop-daemon -S -q -p $PID_FILE -m -b -x $DAEMON
        echo "done"

        echo "Check if update runs on correct partition..."
        if [ -f $UPDATECOUNTERFILE ] && [ "$UPDATECOUNTERNR" == '"0"' ];  # File exists and data format wrong
        then
            UPDATECOUNTERNR=0            
        fi

        if [ -f $UPDATECOUNTERFILE ] && [ "$UPDATECOUNTERNR" -lt 2 ];  # File exists
        then
            UPDATEBOOT=`fw_printenv -a ${KEY} updateboot`
            if [ "$UPDATEBOOT" == "updateboot=1" ] && [ $p2 -gt 0 ] && [ $p1 = 0 ];
            then
                echo "Running on wrong parition. Expect rootfs_mtd=3"
                echo $((UPDATECOUNTERNR + 1)) > $UPDATECOUNTERFILE
                fw_setenv -a ${KEY} update 1
                echo "Execute reboot to partition 3"
                reboot
            elif [ "$UPDATEBOOT" == "updateboot=2" ] && [ $p1 -gt 0 ] && [ $p2 = 0 ];
            then
                echo "Running on wrong parition. Expect rootfs_mtd=4"
                echo $((UPDATECOUNTERNR + 1)) > $UPDATECOUNTERFILE
                fw_setenv -a ${KEY} update 2
                echo "Execute reboot to partition 4"
                reboot
            fi

        else
            echo "Partition is correct"
        fi
        echo "done"

    fi
}
stop() {
    echo -n "Stopping $DESC: "
    start-stop-daemon -K -q -p $PID_FILE
    echo "done"
}
restart() {
    stop
    sleep 1
    start
}

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

exit $?


