1
1
#! /bin/sh
2
2
3
+ dbg_print () {
4
+ if [ " x$verbosity " == " xverbose" ]; then
5
+ echo " $@ "
6
+ fi
7
+ }
8
+
9
+ error_out () {
10
+ echo " $@ "
11
+ exit 1
12
+ }
13
+
3
14
setup () {
4
15
# ARG 1: Path to directory which contains dfu-util executable
5
16
dfu_util_dir=$1
6
17
# ARG 2: Elf file to upload
7
18
payload_elf=$2
8
19
# ARG 3: TTY port to use
9
20
tty_port_id=$3
21
+ # ARG 4: quiet/verbose
22
+ verbosity=$4
10
23
11
24
# Upload the .bin instead of .elf
12
- payload_bin=${payload_elf/ elf/ bin}
13
- echo " Payload:" $payload_bin
25
+ payload_bin=${payload_elf/ . elf/ . bin}
26
+ dbg_print " Payload:" $payload_bin
14
27
15
28
export DYLD_LIBRARY_PATH=$dfu_util_dir :$DYLD_LIBRARY_PATH
16
- DFU=" $dfu_util_dir /dfu-util -d,8087:0ABA"
29
+ dfu_cmd=" $dfu_util_dir /dfu-util -d,8087:0ABA"
30
+
31
+ if [ " x$verbosity " == " xverbose" ] ; then
32
+ dfu_download=" $dfu_cmd -D $payload_bin -v --alt 7 -R"
33
+ else
34
+ dfu_download=" $dfu_cmd -D $payload_bin --alt 7 -R >/dev/null 2>&1"
35
+ fi
17
36
}
18
37
19
38
trap_to_dfu () {
@@ -24,7 +43,7 @@ trap_to_dfu() {
24
43
25
44
# Loop to read from 101 so that it stays on DFU mode afterwards.
26
45
counter=0
27
- until $DFU -a 4 -U $dfu_lock > /dev/null 2>&1
46
+ until $dfu_cmd -a 4 -U $dfu_lock > /dev/null 2>&1
28
47
do
29
48
sleep 0.1
30
49
@@ -41,18 +60,18 @@ trap_to_dfu() {
41
60
}
42
61
43
62
upload () {
44
- $DFU -a 7 -R -D $payload_bin
45
- echo " Sketch will execute in about 5 seconds."
63
+ eval $dfu_download || error_out " ERROR: DFU transfer failed "
64
+ echo " SUCCESS: Sketch will execute in about 5 seconds."
46
65
}
47
66
48
67
main () {
49
68
echo " Starting upload script"
50
69
setup " $@ "
51
70
52
- echo " Waiting for device... "
71
+ dbg_print " Waiting for device... "
53
72
trap_to_dfu
54
73
55
- echo " Using dfu-util to send " $payload_bin
74
+ dbg_print " Using dfu-util to send " $payload_bin
56
75
upload
57
76
58
77
exit 0
0 commit comments