#!/bin/sh
###
#
#              Initialize USB serial gadget
#
##
. /usr/local/bin/telem/functions
. /usr/local/etc/telem/hw/usb_interfaces

hw_run=/usr/local/etc/telem/hw-run.xml


start() {
    logg "Detect COM ports - "

    test -f "$hw_run" && { logg "Already done"; exit 0; }

    local hw_version=base

    local rtc_board="/sys/bus/usb/devices/1-1.1:1.1"
    local com8_ftdi1="/sys/bus/usb/devices/1-1.3:1.0"
    local com8_ftdi2="/sys/bus/usb/devices/1-1.4:1.0"

    local rtc=0
    local com8_1=0
    local com8_2=0
    local lan=0

    # wait for device, detecting usb eth may take up to 3 seconds after reboot
    local counter=6
    while [ $counter -gt 0 ]; do
        [ -e "$USB_eth3"   ] && [ -e "$USB_eth4"   ] && { lan=1; break; }
        [ -e "$USB_A_eth3" ] && [ -e "$USB_A_eth4" ] && { lan=1; break; }
        counter=$(( $counter - 1 ))
        sleep 1
    done

    # Quickfix
    # TODO: use order code to decide if we need to wait for hardware
    [ -e "${rtc_board}"  ] || sleep 1
    [ -e "${com8_ftdi1}" ] || sleep 1
    [ -e "${com8_ftdi2}" ] || sleep 1

    [ -e "${rtc_board}"  ] && rtc=1
    [ -e "${com8_ftdi1}" ] && com8_1=1
    [ -e "${com8_ftdi2}" ] && com8_2=1

    local state="${rtc}${lan}${com8_1}${com8_2}"

    logg "detected: $state"

    case "$state" in
        0011) hw_version=com8     ;;
        0100) hw_version=lan      ;;
        0111) hw_version=full-lan ;; # same as com8-lan
        1000) hw_version=rtc      ;;
        1011) hw_version=full     ;;
        *)    hw_version=base     ;;
    esac

    local hw_file="/usr/local/etc/telem/hw-${hw_version}.xml"

    ln -s "${hw_file}" "${hw_run}"

    logg "'${hw_version}' - "

    logg "OK"

    exit 0
}

case "$1" in
    start)
        start
        ;;
    reset|detect|restart|reload)
        logg "Removing old hardware definition"
        ! rm -f "${hw_run}"
        start
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 {start|reset|detect|restart}"
        exit 1
esac

exit $?
