Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[maple_upload] Copy script from linux to macosx
  • Loading branch information
GrantM11235 committed May 1, 2020
commit 07a262002b5e8cf12ff5f4c8ca8fb99b9d26b8aa
65 changes: 39 additions & 26 deletions macosx/maple_upload.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,47 +6,60 @@ if [ $# -lt 4 ]; then
echo "Usage: $0 $# <dummy_port> <altID> <usbID> <binfile>" >&2
exit 1
fi
altID=$2
usbID=$3
binfile=$4
altID="$2"
usbID="$3"
binfile="$4"
dummy_port_fullpath="/dev/$1"
if [ $# -eq 5 ]; then
dfuse_addr="--dfuse-address $5"
else
dfuse_addr=""
fi

# Get the directory where the script is running.
DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)

# ----------------- Old code to reset the USB - which doesn't seem to work --------
#
#if we can find the Serial device try resetting it and then sleeping for 1 sec while the board reboots
#if [ -e $dummy_port_fullpath ]; then
# echo "resetting " $dummy_port_fullpath
# stty -f $dummy_port_fullpath 1200
# sleep 1
## stty -f $dummy_port_fullpath 1200
## sleep 1
#fi
# ------------------ End of old code -----------------

# ----------------- IMPORTANT -----------------
# The 2nd parameter to upload-reset is the delay after resetting before it exits
# This value is in milliseonds
# You may need to tune this to your system
# 750ms to 1500ms seems to work on my Mac
# This is less critical now that we automatically retry dfu-util

"${DIR}"/upload-reset "${dummy_port_fullpath}" 750

if [ $# -eq 5 ]; then
dfuse_addr="--dfuse-address $5"
else
dfuse_addr=""
if ! "${DIR}/upload-reset" "${dummy_port_fullpath}" 750
then
echo "****************************************" >&2
echo "* Could not automatically reset device *" >&2
echo "* Please manually reset device! *" >&2
echo "****************************************" >&2
sleep 2 # Wait for user to see message.
fi

"${DIR}/dfu-util.sh" -d "${usbID}" -a "${altID}" -D "${binfile}" -R ${dfuse_addr} -R
COUNTER=10
while "${DIR}/dfu-util.sh" -d "${usbID}" -a "${altID}" -D "${binfile}" ${dfuse_addr} -R ; ((ret=$?))
do
if [ $ret -eq 74 ] && [ $((--COUNTER)) -gt 0 ]
then
# I/O error, probably because no DFU device was found
echo "Trying ${COUNTER} more time(s)" >&2
sleep 1
else
exit $ret
fi
done

echo -n Waiting for "${dummy_port_fullpath}" serial...
echo -n "Waiting for ${dummy_port_fullpath} serial..." >&2

COUNTER=0
while [ ! -c "${dummy_port_fullpath}" ] && ((COUNTER++ < 40)); do
COUNTER=40
while [ ! -r "${dummy_port_fullpath}" ] && ((COUNTER--)); do
echo -n "." >&2
sleep 0.1
done

echo Done
if [ $COUNTER -eq -1 ]
then
echo " Timed out." >&2
exit 1
else
echo " Done." >&2
fi