#!/bin/bash

function detect_hw {
    if [ ! -d /sys/devices/platform/mts-io/xdot ]; then
       echo "XDOT hardware not found"
       exit
    fi
}

function detect_hw_dev {
    if [ ! -h /dev/disk/by-label/XDOT ]; then
       echo "XDOT dev hardware not found"
       exit
    fi
}

function flash {
    echo "Flashing new firmware"
    cp $FIRMWARE_FILE $TEMP_DIR
}

function mount_xdot {
    TEMP_DIR=`mktemp -d`
    mount /dev/disk/by-label/XDOT $TEMP_DIR
}

function reset {
    mts-io-sysfs store xdot/reset 0
    mts-io-sysfs store xdot/reset 1
    mts-io-sysfs store xdot/reset -- -1 &>/dev/null
}

function usb_reset {
    echo 0 > /sys/bus/usb/devices/1-2.1/authorized
    sleep 1
    echo 1 > /sys/bus/usb/devices/1-2.1/authorized
}

function clean_up {
	umount $TEMP_DIR
	rm -fr $TEMP_DIR
}

case "$1" in
"flash")
    detect_hw_dev
    FIRMWARE_FILE=$2
    mts-io-sysfs store xdot/reset -- -1 &>/dev/null
    mount_xdot
    flash
    clean_up
    sleep 1
    reset
    echo done
    ;;
"mount")
    detect_hw_dev
    mount_xdot
    echo Mounted at $TEMP_DIR
    ;;
"reset")
    detect_hw
    reset
    ;;
"usb-reset")
    detect_hw
    usb_reset
    ;;
*) ## If no parameters are given, print which are avaiable. 
    echo "Usage: $0 {flash|mount|reset|usb-reset}"
    ;;                                                                                  
esac