diff --git a/src/drivers/gps/devices b/src/drivers/gps/devices index bbdd5767a9..91e3dbb296 160000 --- a/src/drivers/gps/devices +++ b/src/drivers/gps/devices @@ -1 +1 @@ -Subproject commit bbdd5767a961cc17bdcc577c79b1c708d2a7999a +Subproject commit 91e3dbb296d74b2a6d4f8f3c7f2fddd3c6705495 diff --git a/src/drivers/gps/gps.cpp b/src/drivers/gps/gps.cpp index ba6f24070f..cc303d5c3b 100644 --- a/src/drivers/gps/gps.cpp +++ b/src/drivers/gps/gps.cpp @@ -85,7 +85,8 @@ using namespace device; using namespace time_literals; #define TIMEOUT_1HZ 1300 //!< Timeout time in mS, 1000 mS (1Hz) + 300 mS delta for error -#define TIMEOUT_5HZ 500 //!< Timeout time in mS, 200 mS (5Hz) + 300 mS delta for error +#define TIMEOUT_5HZ 500 //!< Timeout time in mS, 200 mS (5Hz) + 300 mS delta for error +#define TIMEOUT_DUMP_ADD 450 //!< Additional time in mS to account for RTCM3 parsing and dumping #define RATE_MEASUREMENT_PERIOD 5_s enum class gps_driver_mode_t { @@ -965,6 +966,12 @@ GPS::run() receive_timeout = TIMEOUT_1HZ; } + if (_dump_communication_mode != gps_dump_comm_mode_t::Disabled) { + /* Dumping the RTCM3/UBX data requires additional parsing and storing of data via uORB. + * Without additional time this can lead to timeouts. */ + receive_timeout += TIMEOUT_DUMP_ADD; + } + while ((helper_ret = _helper->receive(receive_timeout)) > 0 && !should_exit()) { if (helper_ret & 1) {