#
# Copyright (C) 2010-2015 OpenWrt.org
#

. /lib/functions.sh

platform_check_image() {
	local board=$(board_name)

    rm /tmp/*.log
    rm /tmp/*.core

    echo "$board"

	case "$board" in
		"vmware-inc-vmware-virtual-platform")
        echo "check ok"
        mv $1 /tmp/rootfs.tar.gz
        return 0
		;;
    *)
        ;;
	esac

    tar xzvf $1 -C /tmp
    [ "$?" = 0 ] && {
       [ -f "/tmp/zImage" -a -f "/tmp/rootfs.tar.gz" ] && {
           return 0 
       }
    }
    return 1 

	case "$board" in
	*gw5*)
		nand_do_platform_check $board $1
		return $?;
		;;
	esac

	echo "Sysupgrade is not yet supported on $board."
	return 1
}

platform_pre_upgrade() {
	local board=$(board_name)

	case "$board" in
	*gw5*)
		nand_do_upgrade "$1"
		;;
	esac
}

platform_do_upgrade() {
	local board=$(board_name)

	case "$board" in
        "HuiWei")
            mkdir -p /tmp/mnt
            mount -t vfat /dev/mmcblk1p1 /tmp/mnt
            if !grep -qs '/tmp/mnt' /proc/mounts; then
                mkfs.vfat /dev/mmcblk1p1
                mount -t vfat /dev/mmcblk1p1 /tmp/mnt
            fi
            if grep -qs '/tmp/mnt' /proc/mounts; then
                echo "upgrading kernel"
                 [ -f "/tmp/zImage" ] && cp /tmp/zImage /tmp/mnt
                echo "upgrading DTB"
                 [ -f "/tmp/hw6ul-lite.dtb" ] && cp /tmp/hw6ul-lite.dtb /tmp/mnt
                umount /tmp/mnt
            fi
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
            ;;
        "HuiWei-NAND")
            if [ -f "/tmp/zImage" ]; then
                mtd write /tmp/zImage /dev/mtd1
                local verify_pass=`mtd verify /tmp/zImage /dev/mtd1 2>&1| grep Success`
                if [[ "$verify_pass" != "" ]]
                then
                    echo "write kernel sucess"
                else
                    echo "write kernel failed"
                fi
            fi
            if [ -f "/tmp/hw6ul-lite-nand.dtb" ]; then
                mtd write /tmp/hw6ul-lite-nand.dtb /dev/mtd2 
                local verify_pass=`mtd verify /tmp/hw6ul-lite-nand.dtb /dev/mtd2 2>&1|grep Success`
                if [[ "$verify_pass" != "" ]]
                then
                    echo "write DTB sucess"
                else
                    echo "write DTB failed"
                fi
            fi
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
            ;;
        "WooLink2F6280_W_4G")
            echo "kernel:dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync"
            [ -f "/tmp/zImage" ] && dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync
            echo "dtb:dd if=/tmp/imx6ull-woolink2f6280w4g.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync"
            [ -f "/tmp/imx6ul-qiyang.dtb" ] && dd if=/tmp/imx6ull-woolink2f6280w4g.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
            ;;
        "QIYANG" |\
        "generic")
            echo "kernel:dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync"
            [ -f "/tmp/zImage" ] && dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync
            echo "dtb:dd if=/tmp/imx6ul-qiyang.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync"
            [ -f "/tmp/imx6ul-qiyang.dtb" ] && dd if=/tmp/imx6ul-qiyang.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
        ;;
        "QIYANG_2")
            echo "kernel:dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync"
            [ -f "/tmp/zImage" ] && dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync
            echo "dtb:dd if=/tmp/imx6ul-qiyang-new.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync"
            [ -f "/tmp/imx6ul-qiyang-new.dtb" ] && dd if=/tmp/imx6ul-qiyang-new.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
        ;;
        "CarV2")
            echo "kernel:dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync"
            [ -f "/tmp/zImage" ] && dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync
            echo "dtb:dd if=/tmp/imx6ul-qiyang-car-v2.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync"
            [ -f "/tmp/imx6ul-qiyang-car-v2.dtb" ] && dd if=/tmp/imx6ul-qiyang-car-v2.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
        ;;
        "QIYANG_IMX6ULL")
            echo "kernel:dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync"
            [ -f "/tmp/zImage" ] && dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync
            echo "dtb:dd if=/tmp/imx6ull-qiyang.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync"
            [ -f "/tmp/imx6ull-qiyang.dtb" ] && dd if=/tmp/imx6ull-qiyang.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
        ;;
        "QIYANG_IMX6ULL_2")
            echo "kernel:dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync"
            [ -f "/tmp/zImage" ] && dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync
            echo "dtb:dd if=/tmp/imx6ull-qiyang.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync"
            [ -f "/tmp/imx6ull-qiyang-new.dtb" ] && dd if=/tmp/imx6ull-qiyang-new.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
        ;;
        "QIYANG_BAU3")
            echo "kernel:dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync"
            [ -f "/tmp/zImage" ] && dd if=/tmp/zImage of=/dev/mmcblk1 bs=1M seek=1 conv=fsync
            echo "dtb:dd if=/tmp/imx6ull-qiyang-BAU3.0.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync"
            [ -f "/tmp/imx6ull-qiyang-BAU3.0.dtb" ] && dd if=/tmp/imx6ull-qiyang-BAU3.0.dtb of=/dev/mmcblk1 bs=1M seek=9 conv=fsync
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
        ;;
        "FORLINX_IMX6ULL")
            mkdir -p /tmp/mnt
            mount -t vfat /dev/mmcblk1p1 /tmp/mnt
            if !grep -qs '/tmp/mnt' /proc/mounts; then
                mkfs.vfat /dev/mmcblk1p1
                mount -t vfat /dev/mmcblk1p1 /tmp/mnt
            fi
            if grep -qs '/tmp/mnt' /proc/mounts; then
                echo "upgrading kernel"
                 [ -f "/tmp/zImage" ] && cp /tmp/zImage /tmp/mnt
                echo "upgrading DTB"
                 [ -f "/tmp/*.dtb" ] && cp /tmp/*.dtb /tmp/mnt
                umount /tmp/mnt
            fi
            echo "rootfs:rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt"
            [ -f "/tmp/rootfs.tar.gz" ] && rm -rvf /mnt/*;tar -xzvf /tmp/rootfs.tar.gz -C /mnt;cp -r /tmp/issue /mnt/etc/issue
            ;;
		"vmware-inc-vmware-virtual-platform")
            mkdir -p /tmp/new_rootfs
            tar -xzvf /tmp/rootfs.tar.gz -C /tmp/new_rootfs
            cp -rvf /tmp/new_rootfs/* / 
        ;;
    esac
}


platform_copy_config() {
    echo "restore config"
	local board=$(board_name)

	case "$board" in
		"vmware-inc-vmware-virtual-platform")
        [ -f "/tmp/sysupgrade.tgz" ]  && tar -xzvf /tmp/sysupgrade.tgz -C /
		;;
		*)
        [ -f "/tmp/sysupgrade.tgz" ]  && tar -xzvf /tmp/sysupgrade.tgz -C /mnt
		;;
	esac
}
