#!/bin/sh

ELF_NAME=
EMS_IP="$1"
UPGRADE_N="$2"
export PATH=/opt/lnxall_app/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin

check_board() {
    local tmpv="$(cat /tmp/sysinfo/board_name | grep -e 'WLOSANY_EM1000')"
    if [ -n "${tmpv}" ] ; then
        ELF_NAME='LNXALL_APP_EM1000_fwupgrade.elf'
        return 0
    fi

    tmpv="$(cat /tmp/sysinfo/board_name | grep -e 'WLOSANY_RK3568')"
    if [ -n "${tmpv}" ] ; then
        ELF_NAME='LNXALL_APP_RK3568_fwupgrade.elf'
        return 0
    fi

    tmpv="$(cat /tmp/sysinfo/board_name | grep -e 'WLOSANY_LC100')"
    if [ -n "${tmpv}" ] ; then
        ELF_NAME='LNXALL_APP_ARMHF_fwupgrade.elf'
        return 0
    fi

    if [ "$(uname -m)" = 'x86_64' ] ; then
        tmpv="$(lsb_release -a 2>/dev/null | grep -e 'Ubuntu 18.04')"
        if [ -n "${tmpv}" ] ; then
            ELF_NAME='LNXALL_APP_X86_64_fwupgrade.elf'
            return 0
        fi
    fi

    echo "Error, unsupported board"
    exit 1
}

elf_upgrade() {
    cd /root || exit 3
    rm -rf "${ELF_NAME}"

    sshpass -p lnxall123 scp -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null \
        "root@${EMS_IP}:/app/firmware/${ELF_NAME}" ./
    if [ $? -ne 0 ] ; then
        echo "Error, failed to copy \"${ELF_NAME}\"."
        exit 1
    fi

    if [ ! -f "${ELF_NAME}" ] ; then
        echo "Error, ELF file not found."
        exit 2
    fi

    chmod +x "${ELF_NAME}"
    if [ "${UPGRADE_N}" = "-n" ] ; then
        date > /tmp/.lnxall_elf_n
    else
        rm -rf /tmp/.lnxall_elf_n
    fi
    # nothup ./${ELF_NAME} ${UPGRADE_N}
    systemctl restart lnxallinst
    return 0
}

sleep 2
check_board
if [ -z "${EMS_IP}" ] ; then
    echo "Error, EMS IP address not specified."
    exit 2
fi
elf_upgrade
exit 0
