aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/px4io
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-01-24 17:30:40 +0100
committerLorenz Meier <lm@inf.ethz.ch>2014-01-24 17:30:40 +0100
commit73a483c2657d97619021b85759bc742f637cfff4 (patch)
tree735f76230d9dfa207ec25fceaf066b832e6caf28 /src/drivers/px4io
parent1960f7d6c5c502860ad4f2520eae364a4abfe9e7 (diff)
downloadpx4-firmware-73a483c2657d97619021b85759bc742f637cfff4.tar.gz
px4-firmware-73a483c2657d97619021b85759bc742f637cfff4.tar.bz2
px4-firmware-73a483c2657d97619021b85759bc742f637cfff4.zip
Finally fix the timing race between the IO driver, IO uploader and the on-IO firmware by making the uploader tolerant of timing offsets.
Diffstat (limited to 'src/drivers/px4io')
-rw-r--r--src/drivers/px4io/px4io_uploader.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/drivers/px4io/px4io_uploader.cpp b/src/drivers/px4io/px4io_uploader.cpp
index d9f991210..dd8abbac5 100644
--- a/src/drivers/px4io/px4io_uploader.cpp
+++ b/src/drivers/px4io/px4io_uploader.cpp
@@ -121,8 +121,15 @@ PX4IO_Uploader::upload(const char *filenames[])
cfsetspeed(&t, 115200);
tcsetattr(_io_fd, TCSANOW, &t);
- /* look for the bootloader */
- ret = sync();
+ /* look for the bootloader for 150 ms */
+ for (int i = 0; i < 15; i++) {
+ ret = sync();
+ if (ret == OK) {
+ break;
+ } else {
+ usleep(10000);
+ }
+ }
if (ret != OK) {
/* this is immediately fatal */