#!/bin/sh
#------------------------------------------------------------------
#
# Nolan temporary USB startup script
#
# May 2017 Joel Aller
#
# Copyright (c) 2017 by cisco Systems, Inc.
# All rights reserved.
#------------------------------------------------------------------
#set -x

. modulefunc.sh

HAS_USB_FNAME=/var/platform/has_usb

asku=false
cookie_model=`cat /COOKIE_PID |cut -d '-' -f 2`
case "$cookie_model" in
    *AP4800*)
        asku=true
        ;;
esac

case "$1" in
  start)
    nolan_mon &
    modload /lib/modules/nolan_usb_driver.ko &&
        modrm /lib/modules/nolan_usb_driver.ko
    mod_args=`cat $HAS_USB_FNAME`
    modload /lib/modules/nolan_usb_device.ko $mod_args &&
        modrm /lib/modules/nolan_usb_device.ko

    #Enable USB exar for internal USB on ASKU
    if [ "$asku" == true ]; then
        #Dont enable USB cp210x for external USB on ASKU
        for idx in `seq 3`; do
            if [ -d /sys/bus/usb/devices/usb2/2-1 ]; then
                ID_PRODUCT=`cat /sys/bus/usb/devices/usb2/2-1/idProduct`
                ID_VENDOR=`cat /sys/bus/usb/devices/usb2/2-1/idVendor`
                BCD_DEVICE=`cat /sys/bus/usb/devices/usb2/2-1/bcdDevice`
                if [ "$ID_VENDOR" == "04e2" -a "$ID_PRODUCT" == "1410" \
                    -a "$BCD_DEVICE" == "0003" ]; then
                    echo 1 > /sys/bus/usb/devices/usb2/2-1/authorized
                    modload /lib/modules/usbserial.ko &&
                        modrm /lib/modules/usbserial.ko
                    modload /lib/modules/exar.ko &&
                        modrm /lib/modules/exar.ko
                fi
                break
            fi
            sleep 5
        done
    fi
    ;;
  stop)
    if [ "$asku" == true ]; then
        rmmod exar >& /dev/null
        rmmod usbserial >& /dev/null
    fi
    rmmod nolan_usb_driver
    rmmod nolan_usb_device
    killall nolan_mon
    ;;
  *)
    echo "Usage: $0 {start|stop}"
    exit 1
    ;;
esac

exit 0
