#!/bin/bash shopt -s extglob function list_usb() { while IFS=: read key value; do key="${key##+( )}" value="${value##+( )}" case "$key" in "Product ID") p="${value% *}" ;; "Vendor ID") v="${value%% *}" ;; "Manufacturer") m="${value}" ;; "Location ID") l="${value}" printf "%s:%s %s (%s)\n" "$v" "$p" "$l" "$m" ;; esac done < <( system_profiler SPUSBDataType ) } function leaf_status() { this_leaf_status=$(echo "$(list_usb)" | grep "1eaf" | awk '{ print $1}') # Find the mode of the leaf bootloader case $this_leaf_status in "0x1eaf:0x0003") echo "dfu" ;; "0x1eaf:0x0004") echo "ttyACMx" ;; *) # echo "$this_leaf_status" echo "unknown" ;; esac } # Get the directory where the script is running. DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) # Check to see if a maple compatible board is attached LEAF_STATUS=$(leaf_status) # Board not found, or no boot loader on board. if [[ $(leaf_status) = "unknown" ]] then # No maple board detected echo "Maple device not found. Attempting serial upload." SERIAL_UPLOAD=${DIR}/serial_upload_inc_bootloader echo "${SERIAL_UPLOAD}" $1 0x8000000 $2 $3 "${SERIAL_UPLOAD}" $1 0x8000000 $2 $3 else # Maple board detected echo "Maple device found. Attempting USB upload." MAPLE_UPLOAD=${DIR}/maple_upload echo "${MAPLE_UPLOAD}" $1 2 1eaf:0003 $2 "${MAPLE_UPLOAD}" $1 2 1eaf:0003 $2 fi