ao-bringup: Allow dfu_util to "fail" while flashing chaoskey
[fw/altos] / ao-bringup / turnon_telemini
index 4450d6f6e57b2af10cfa5faded166cc2eac44310..23031481dac46aa2c5f79d5589767c5f6e683f43 100755 (executable)
@@ -1,48 +1,76 @@
 #!/bin/sh
 
-if [ -x ../ao-tools/ao-load/ao-load ]; then
-       AOLOAD=../ao-tools/ao-load/ao-load
-elif [ -x /usr/bin/ao-load ]; then
-       AOLOAD=/usr/bin/ao-load
+if [ -x /usr/bin/dfu-util ]; then
+    DFU_UTIL=/usr/bin/dfu-util
 else
-       echo "Can't find ao-load!  Aborting."
-       exit 1
+    echo "Can't find dfu-util! Aborting."
+    exit 1
 fi
 
-if [ -x ../ao-tools/ao-rawload/ao-rawload ]; then
-       RAWLOAD=../ao-tools/ao-rawload/ao-rawload
-elif [ -x /usr/bin/ao-rawload ]; then
-       RAWLOAD=/usr/bin/ao-rawload
+if which ao-usbload > /dev/null; then
+       USBLOAD=`which ao-usbload`
 else
-       echo "Can't find ao-rawload!  Aborting."
+       echo "Can't find ao-usbload!  Aborting."
        exit 1
 fi
 
-echo "TeleMini v1.0 Turn-On and Calibration Program"
-echo "Copyright 2011 by Bdale Garbee.  Released under GPL v2"
+VERSION=3.0
+PRODUCT=TeleMini
+
+echo "$PRODUCT v$VERSION Turn-On and Calibration Program"
+echo "Copyright 2017 by Keith Packard.  Released under GPL v2 or later"
 echo
 echo "Expectations:"
-echo "\tTeleMini v1.0 powered from LiPo"
-echo "\t\twith TeleDongle (on /dev/ttyACM0) cabled to debug header"
-echo "\t\twith frequency counter able to sample RF output"
+echo "\t$PRODUCT v$VERSION powered from USB"
 echo
-echo -n "TeleMini serial number: "
-read SERIAL
+echo -n "$PRODUCT-$VERSION serial number: "
+
+case $# in
+    1)
+       SERIAL="$1"
+       echo "$PRODUCT-$VERSION serial number: $SERIAL" 
+       ;;
+    0)
+       echo -n "$PRODUCT-$VERSION serial number: "
+       read SERIAL
+       ;;
+    *)
+       echo "Usage: $0 <serial-number>" 1>&2
+       exit 1;
+       ;;
+esac
+
+FLASH_FILE=~/altusmetrumllc/Binaries/loaders/telemini-v$VERSION-altos-flash-*.bin
+ALTOS_FILE=~/altusmetrumllc/Binaries/telemini-v$VERSION-*.elf
+#FLASH_FILE=../src/telemini-v3.0/flash-loader/telemini-v$VERSION-altos-flash-*.bin
+#ALTOS_FILE=../src/telemini-v3.0/telemini-v$VERSION-*.elf
+
+$DFU_UTIL -a 0 -s 0x08000000:leave -D $FLASH_FILE || exit 1
 
-echo $RAWLOAD
+sleep 2
+
+$USBLOAD --serial=$SERIAL $ALTOS_FILE || exit 1
+
+sleep 3
+
+dev=`ao-list | awk '/'"$PRODUCT"'-v'"$VERSION"'/ { print $3; exit(0); }'`
+
+case "$dev" in
+/dev/tty*)
+       echo "$PRODUCT found on $dev"
+       ;;
+*)
+       echo 'No '"$PRODUCT"'-v'"$VERSION"' found'
+       exit 1
+       ;;
+esac
 
-$RAWLOAD -D 100 -r ao_led_blink.ihx
-echo "LEDs should be blinking"
-sleep 5
+echo 'E 0' > $dev
 
-$RAWLOAD -D 100 -r ao_radio_xmit.ihx
-echo -n "Generating RF carrier.  Please enter measured frequency: "
-read FREQ
+SERIAL=$SERIAL ./cal-freq $dev
 
-CAL_VALUE=`nickle -e "floor(434.55 / $FREQ * 1186611 + 0.5)"`
+echo 'E 1' > $dev
 
-echo "Programming flash with cal value " $CAL_VALUE
-$AOLOAD -D 100 --cal $CAL_VALUE /usr/share/altos/stable/telemini-v1.0*.ihx $SERIAL
+./test-telemini
 
-echo "Serial number "$SERIAL" programmed with RF cal value "$CAL_VALUE
-echo "Unplug and replug USB, cu to the board, confirm freq and record power"
+exit $?