UPGRADE_FW_MAJOR="2022-02-18-0-b63a6c87-22.02-plus"
UPGRADE_FW_VERSION="2022-07-12-0-74cd97d6-22.06-plus"
UPGRADE_FW_REQUIRE="2022-02-18-0-b63a6c87-22.02-plus"
current_fw_version() {
    cat /etc/bos_version
}

current_fw_major() {
    cat /etc/bos_major
}

check_fw_version() {
    echo "Gathering current firmware information..."

    local board_name=$1
    local fw_major=$(current_fw_major)
    local fw_version=$(current_fw_version)

    echo "board  : $board_name"
    echo "version: $fw_version"
    echo "major  : $fw_major"

    echo "Checking compatibility..."

    if [ "$UPGRADE_FW_VERSION" ">" "$fw_version" ]; then
        # firmware upgrade
        if [ "$UPGRADE_FW_REQUIRE" ">" "$fw_version" ]; then
            echo "Firmware upgrade to '$UPGRADE_FW_VERSION' is not possible!"
            echo "Firmware version '$UPGRADE_FW_REQUIRE' is required before upgrading to this version."
            return 1
        fi
    elif [ "$UPGRADE_FW_VERSION" "<" "$fw_version" ]; then
        # firmware downgrade
        if [ "$UPGRADE_FW_MAJOR" != "$fw_major" ]; then
            echo "Firmware downgrade to '$UPGRADE_FW_VERSION' is not possible!"
            echo "Downgrade is only possible among firmwares with major version '$UPGRADE_FW_MAJOR'."
            echo "Do the factory reset and try to upgrade to this version."
            return 1
        fi
    fi

    return 0
}

check_image() {
    check_fw_version $1
}

do_upgrade() {
    local package_root="$1"
    local sdcard_root="$2"

    echo "    rootfs.img"
    cp "$package_root/rootfs.img" "$sdcard_root/"

    return 0
}
