#!/bin/sh
mount_dir=$1
echo "mount_dir is $mount_dir"
ipks=`ls ${mount_dir}/update/*.ipk`

file="/app/config/fac.ini"
sn_line=$(grep -i "^sn" "$file")
sn_value=${sn_line#*=}
sn_value_no_space=$(echo "$sn_value" | tr -d ' ')

#hostplug topic
hostplug_mqtt_topic="ipc/$sn_value_no_space/drs/00100000/alert/Set/hostplug"
check_mqtt_topic="ipc/$sn_value_no_space/bms/00000000/alert/Set/check"

for table in $ipks
do
    echo "ipk name: $table"
    opkg install $table --nodeps
    if [ $? -eq 0 ]; then
        mosquitto_pub -t $hostplug_mqtt_topic -m "{\"title\":\"information\",\"message\":\"Install $table success.\"}"
    else
        mosquitto_pub -t $hostplug_mqtt_topic -m "{\"title\":\"information\",\"message\":\"Install $table fail.\"}"
    fi
done

firmware_file=${mount_dir}/update/firmware.tar.gz
if [ -f ${firmware_file} ]; then
    echo "exist firmware file"
    if [ -f ${mount_dir}/update/sysupgrade.conf ]; then
        cp ${mount_dir}/update/sysupgrade.conf /etc/sysupgrade.conf
    fi
    /sbin/sysupgrade -m /mnt/sda1 -v -F ${firmware_file}  &
fi

rk3568update_file=${mount_dir}/update/update.img
if [ -f ${rk3568update_file} ]; then
    echo "exist update.img"
    if [ -f ${mount_dir}/update/sysupgrade.conf ]; then
        cp ${mount_dir}/update/sysupgrade.conf /etc/sysupgrade.conf
    fi
    /usr/bin/sysupgrade -v -F ${rk3568update_file}  &
fi

config_file_dir=${mount_dir}/update/config
if [ -d ${config_file_dir} ]; then
    echo "exist config file"
    cp ${config_file_dir}/* /app/hmi4rack/config/
    sync
    /etc/init.d/xieneng_can restart
    /etc/init.d/bmser_drs restart
    mosquitto_pub -t $hostplug_mqtt_topic -m "{\"title\":\"information\",\"message\":\"Install config file success.\"}"
fi


for dev in `ls -l  /mnt | grep 'sd[a-z][1-9]' | awk '{print i$9}' i='/mnt/'`
do
    LUA_RST='DISABLE'
    QT_RST='DISABLE'

    ROOTDIR=$dev/update

    logger -s -t "hmi4rack" -p local3.notice "found U disk:$ROOTDIR"

    if test -f $ROOTDIR/bin/HMI_BMS
    then
        mv $ROOTDIR/bin/HMI_BMS /app/hmi4rack/ &
        chmod a+x /app/hmi4rack/HMI_BMS
        QT_RST='ENABLE'
    fi

    if test -f $ROOTDIR/bin/update_config.sh
    then
        mv $ROOTDIR/bin/update_config.sh /app/hmi4rack/
    fi

    if test -f $ROOTDIR/bin/script/reg_config.lua
    then
        logger -s -t "hmi4rack" -p local3.info `ls $ROOTDIR/bin/script/*`
        lua $ROOTDIR/bin/script/reg_config.lua
        if [ $? != 0 ]
        then
            mosquitto_pub -t $check_mqtt_topic -m '{"title":"critical","message":"Error as *.lua exec"}'
            exit 0
        fi
        cp $ROOTDIR/bin/script/* /app/hmi4rack/script/ &
        LUA_RST='ENABLE'
        QT_RST='ENABLE'
    fi

    if test -f $ROOTDIR/bin/translations/*
    then
        logger -s -t "hmi4rack" -p local3.info `ls $ROOTDIR/bin/translations/*`
        cp $ROOTDIR/bin/translations/* /app/hmi4rack/translations/

        QT_RST='ENABLE'
    fi

    if test -f $ROOTDIR/bin/config/*
    then
        cp $ROOTDIR/bin/config/* /app/hmi4rack/config/
        QT_RST='ENABLE'
    fi

    if [ "$LUA_RST" = 'ENABLE' -o "$QT_RST" = 'ENABLE' ]
    then
        mosquitto_pub -t $check_mqtt_topic -m '{"title":"information","message":"Will upgrade immediately!"}'
        sleep 3
    fi

    test "$LUA_RST" = 'ENABLE' && /etc/init.d/hmi4racks_lua restart && sleep 1 && logger -s -t "hmi4rack" -p local3.notice "The deamon of lua restart"

    test "$QT_RST" = 'ENABLE' && /etc/init.d/hmi4racks_qt restart && logger -s -t "hmi4rack" -p local3.notice "The deamon of qt restart"

    sync

done

cd /
