diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2015-01-22 16:23:23 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2015-01-22 16:23:23 +0100 |
commit | 7eaaeb128ea8989818ddd0cb00125eec64c36a3f (patch) | |
tree | ae98edf7d2e905400f9032b56a7d3c98c93f974f /src/drivers/px4io/px4io.cpp | |
parent | 11e5aad16e4981709b434bd2e63bb116e16d2562 (diff) | |
download | px4-firmware-7eaaeb128ea8989818ddd0cb00125eec64c36a3f.tar.gz px4-firmware-7eaaeb128ea8989818ddd0cb00125eec64c36a3f.tar.bz2 px4-firmware-7eaaeb128ea8989818ddd0cb00125eec64c36a3f.zip |
PX4IO driver: Try to talk to IO instead of just waiting for it
Diffstat (limited to 'src/drivers/px4io/px4io.cpp')
-rw-r--r-- | src/drivers/px4io/px4io.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index 556eebab6..2f38bf695 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -618,8 +618,15 @@ PX4IO::init() return ret; /* get some parameters */ - unsigned protocol = io_reg_get(PX4IO_PAGE_CONFIG, PX4IO_P_CONFIG_PROTOCOL_VERSION); + unsigned protocol; + hrt_abstime start_try_time = hrt_absolute_time(); + do { + usleep(2000); + protocol = io_reg_get(PX4IO_PAGE_CONFIG, PX4IO_P_CONFIG_PROTOCOL_VERSION); + } while (protocol == _io_reg_get_error && (hrt_elapsed_time(&start_try_time) < 700U * 1000U)) + + /* if the error still persists after timing out, we give up */ if (protocol == _io_reg_get_error) { log("failed to communicate with IO"); mavlink_log_emergency(_mavlink_fd, "[IO] failed to communicate with IO, abort."); |