deal with cheap BT dongle that shows multiple copies of unit in lescan output
[fw/altos] / ao-bringup / turnon_telebt
1 #!/bin/sh
2
3 if [ -x /usr/bin/dfu-util ]; then
4     DFU_UTIL=/usr/bin/dfu-util
5 else
6     echo "Can't find dfu-util! Aborting."
7     exit 1
8 fi
9
10 if [ -x /usr/bin/ao-usbload ]; then
11         USBLOAD=/usr/bin/ao-usbload
12 else
13         echo "Can't find ao-usbload!  Aborting."
14         exit 1
15 fi
16
17 VERSION=4.0
18 REPO=~/altusmetrumllc/Binaries
19 PRODUCT=TeleBT
20
21 echo "$PRODUCT v$VERSION Turn-On and Calibration Program"
22 echo "Copyright 2017 by Bdale Garbee.  Released under GPL v3+"
23 echo
24 echo "Expectations:"
25 echo "\t$PRODUCT v$VERSION attached by USB"
26 echo "\t\twith coax from UHF to frequency counter"
27 echo
28
29 case $# in
30     1)
31         SERIAL="$1"
32         echo "$PRODUCT-$VERSION serial number: $SERIAL" 
33         ;;
34     0)
35         echo -n "$PRODUCT-$VERSION serial number: "
36         read SERIAL
37         ;;
38     *)
39         echo "Usage: $0 <serial-number>" 1>&2
40         exit 1;
41         ;;
42 esac
43
44 FLASH_FILE=$REPO/loaders/telebt-v$VERSION-altos-flash-*.bin
45 ALTOS_FILE=$REPO/telebt-v$VERSION-*.elf
46
47 $DFU_UTIL -a 0 -s 0x08000000:leave -D $FLASH_FILE || exit 1
48
49 sleep 2
50
51 $USBLOAD --serial=$SERIAL $ALTOS_FILE || exit 1
52
53 sleep 3
54
55 dev=`ao-list | awk '/'"$PRODUCT"'-v'"$VERSION"'/ { print $3; exit(0); }'`
56
57 case "$dev" in
58 /dev/tty*)
59         echo "$PRODUCT found on $dev"
60         ;;
61 *)
62         echo 'No '"$PRODUCT"'-v'"$VERSION"' found'
63         exit 1
64         ;;
65 esac
66
67 echo 'E 0' > $dev
68
69 SERIAL=$SERIAL ./cal-freq $dev
70
71 echo 'E 1' > $dev
72
73 echo -n "checking BlueTooth functionality... "
74 btdev=`hcitool scan | awk -F \- '/TeleBT/ { print $2 }'`
75 if [ "$btdev" = "$SERIAL" ]; then
76         echo "working!"
77 else
78         echo "device not found"
79         exit 1
80 fi
81
82 echo -n "checking BTLE functionality... "
83 btdev=`sudo timeout -s SIGINT 5s hcitool lescan | awk -F \- '/TeleBT/ { print $2 }' | head -n 1`
84 if [ "$btdev" = "$SERIAL" ]; then
85         echo "working!"
86 else
87         echo "device not found"
88         exit 1
89 fi
90
91 echo "$PRODUCT-v$VERSION $SERIAL is ready to ship"
92
93 exit $?