]> git.donarmstrong.com Git - kiibohd-controller.git/blobdiff - LoadFile/winload.teensy
Start removing select Linux-isms
[kiibohd-controller.git] / LoadFile / winload.teensy
index f22d70402e75e039a55b07fb0a15d8b4ca94e301..492819726743f93ce7d77c24d05ed75652873217 100755 (executable)
@@ -1,17 +1,69 @@
-#!/bin/bash
+#!/usr/bin/env bash
+# Convenience script for loading firmware onto a teensy type device
+# By default, initiates teensy-load-cli
 
-#| First check to see teensy-loader-cli has been compiled
+SERIAL_PORT=""
+AUTO_SCREEN_SESSION=""
+PROG_NAME=$(basename $0)
+
+# Parse all the command line arguments
+while (( "$#" >= "1" )); do
+       # Scan each argument
+       key="$1"
+       case $key in
+       -a|--autoscreen)
+               AUTO_SCREEN_SESSION="$2"
+               shift
+               ;;
+       -f|--fastload)
+               SERIAL_PORT="$2"
+               shift
+               ;;
+       -h|--help)
+               echo "Usage: $PROG_NAME [options...]"
+               echo ""
+               echo "Loads the most recent built firmware (@TARGET_BIN@) to the device."
+               echo "Requires Cygwin."
+               echo "  (winload.teensy)"
+               echo ""
+               echo "Arguments:"
+               echo " -f, --fastload SERIAL_PORT    Send the reload command to the debug terminal."
+               echo "                               e.g. /dev/ttyACM0"
+               echo "                               NOTE: May not work due to non-functional terminal, or disable remote flashing"
+               echo " -h, --help                    This message."
+               exit 1
+               ;;
+       *)
+               echo "INVALID ARG: '$1'"
+               exit 2
+               ;;
+       esac
+
+       # Shift to the next argument
+       shift
+done
+
+# First check to see teensy-loader-cli has been compiled
 if [ ! -e teensy-loader-cli/teensy-loader-cli ]; then
        # Compile teensy-loader-cli
        mkdir -p teensy-loader-cli
        cd teensy-loader-cli
        cmake -G "Unix Makefiles" $(cygpath -u @CMAKE_SOURCE_DIR@/LoadFile)
-       make
+       make || exit 3
        cd -
 fi
 
-#| Loads the hex file onto the teensy
+# If a SERIAL_PORT was specified set the uC into reflash mode
+# XXX May not be successful if uC is not in a good state (or does not allow remote flashing)
+if [[ "$SERIAL_PORT" != "" ]] && [[ -e "$SERIAL_PORT" ]]; then
+       echo "NOTE: This may fail if the uC is in a bad state or does not support remote flashing"
+       printf "reload\r" > $SERIAL_PORT
+       sleep 1
+fi
+
+# Loads the hex file onto the teensy
 teensy-loader-cli/teensy-loader-cli -mmcu=@MCU@ -w @TARGET_HEX@
+EXIT_STATUS=$?
 
-exit $?
+exit $EXIT_STATUS