#!/bin/bash

productName="hs1650t"
appName="hs1650t"
userName="pi"

# === 讀取 OS 發行版資訊 ===
. /etc/os-release
os_name="$NAME"
os_version="$VERSION_ID"

# === 取得硬體型號 ===
if [ -f /proc/device-tree/model ]; then
    hw_model=$(tr -d '\0' < /proc/device-tree/model)
else
    hw_model="Unknown"
fi

# === 取得並清洗 kernel 版本號 ===
kernel_raw=$(uname -r)
kernel_clean=$(echo "$kernel_raw" | cut -d'-' -f1)

# === 版本比較函式 ===
ver_greater_equal() {
    [ "$1" = "$2" ] && return 0 || \
    [ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$2" ]
}

ver_less_than() {
    [ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" != "$2" ]
}

upgradeToNewOS()
{
    echo "Start upgrade to new OS ..."
    # 更新開機畫面
    # sudo cp -f /mnt/datavideo/$productName/splash.png /home/datavideo/$productName/

    sudo cp -f /mnt/datavideo/audio-meter2 /home/$userName/
    sudo cp -f /mnt/datavideo/$productName/config/hs-1650t.conf /home/$userName/.config/Datavideo/

    sudo cp -f /mnt/datavideo/$productName/config/wait_video0.sh /home/$userName/
    sudo cp -f /mnt/datavideo/$productName/config/hs1650t_init.sh /home/$userName/$productName/

    # 更新config.txt
    #sudo cp -f /mnt/datavideo/$productName/config/config.txt /boot/
    sudo cp -f /mnt/datavideo/$productName/config/cmdline.txt /boot/

    # 啟用usb hot plug
    sudo cp -f /mnt/datavideo/$productName/config/usb-mount.sh /home/$userName/$productName/
    sudo chmod +x /home/$userName/$productName/usb-mount.sh

    sudo cp -f /mnt/datavideo/$productName/config/usb-unmount.sh /home/$userName/$productName/
    sudo chmod +x /home/$userName/$productName/usb-unmount.sh

    sudo cp -f /mnt/datavideo/$productName/config/usb-mount@.service /etc/systemd/system/

    sudo cp -f /mnt/datavideo/$productName/config/99-usb-mount.rules /etc/udev/rules.d/

    # 重新載入 udev 規則
    # sudo systemctl enable usb-mount@.service
    # sudo systemctl start usb-mount@.service
    sudo udevadm control --reload-rules
    sudo udevadm trigger

    # 網路
    sudo cp -f /mnt/datavideo/$productName/config/interfaces /etc/network/
    sudo cp -f /mnt/datavideo/$productName/config/dhcpcd.conf /etc/

    # 服務
    sudo cp -f /mnt/datavideo/$productName/config/$productName.service /etc/systemd/system/
    sudo cp -f /mnt/datavideo/$productName/config/rc.local /etc/

    # 更新App
    sudo cp -f /mnt/datavideo/$productName/$appName /home/$userName/$productName/

    # 啟用 service
    sudo systemctl enable $productName.service
    sudo systemctl start $productName.service

    # 系統重啟
    # sudo reboot
    echo "upgrade finish !!"
}

upgradeToOldOS()
{
    echo "Upgrade for old OS"
}

# === 顯示資訊 ===
echo "OS: $os_name $os_version"
echo "Hardware: $hw_model"
echo "Kernel version: $kernel_raw → $kernel_clean"
# sw_version=$(grep '^version=' info.ini | cut -d= -f2)

#if [ ! -f "/mnt/datavideo/$productName/.done" ]; then	
    if [ "$os_name" = "Raspbian GNU/Linux" ]; then
        if echo "$hw_model" | grep -q "Raspberry Pi"; then
            if ver_greater_equal "$os_version" "11" && ver_greater_equal "$kernel_clean" "6.1.21"; then
                upgradeToNewOS
            else
                upgradeToOldOS
            fi
        else
            echo "Unknown now hardware: $hw_model"
            exit 1
        fi
        touch /mnt/datavideo/$productName/.done
        sync
        sleep 10
        sudo reboot
    else
        echo "Unsupported OS: $os_name"
    fi
#fi
