#!/bin/sh

usage() {
    echo "Usage: $0 -a <device> <id> <mountpoint>"
    echo "       $0 -h"
}

DEVICE=

# script is called as flasher-netbird/flasher-netbold/flesher-netbox
# split $0 up at '-' to get the profile:
PROFILE=${0##*-}

while getopts ":a:h" o; do
    case "${o}" in
        a)
            DEVICE=${OPTARG}
            ;;
        h)
            usage
            exit 0;
            ;;
        *)
            usage >&2
            exit 1;
    esac
done
shift $((OPTIND-1))

if [ $# -ne 2 ]; then
    usage >&2
    exit 1
fi

DEV_ID=$1
MNT=$(dirname $2)

if [ -z ${DEVICE} ] || [ -z ${DEV_ID} ] || [ -z ${MNT} ]; then
    usage >&2
    exit 1
fi

CHECKSUM=$(cat ${MNT}/checksum.txt) || exit 1
USB_DEVICE=$(cat /proc/sysinfo/wwan${DEV_ID}/usbName)

cat ${DEVICE} || exit 1

printf "AT+UFWUPD=${CHECKSUM}\r\n" > ${DEVICE} || exit 1
${MNT}/lsx-${PROFILE} -k -X ${MNT}/firmware <${DEVICE} >${DEVICE} || exit 1

logger "Waiting for module wwan${DEV_ID} to turn off"
for i in $(seq 120); do
    if [ ! -e  /sys/bus/usb/devices/${USB_DEVICE}:1.2 ]; then
        break
    fi
    sleep 1
done

logger "Waiting for module wwan${DEV_ID} to restart"
for i in $(seq 120); do
    if [ -e  /sys/bus/usb/devices/${USB_DEVICE}:1.2 ]; then
        break
    fi
    sleep 1
done

logger "Module wwan${DEV_ID} restarted"
sleep 10

exit 0

