diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-01-24 17:30:40 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-01-24 17:30:40 +0100 |
commit | 73a483c2657d97619021b85759bc742f637cfff4 (patch) | |
tree | 735f76230d9dfa207ec25fceaf066b832e6caf28 | |
parent | 1960f7d6c5c502860ad4f2520eae364a4abfe9e7 (diff) | |
download | px4-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.
-rw-r--r-- | src/drivers/px4io/px4io_uploader.cpp | 11 |
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 */ |