From b396b2a2e0c41fdf20c9dab43b1b56625cc64e91 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 17 May 2018 07:01:14 +1000 Subject: [PATCH] HAL_Linux: take account of available bytes in receive_time_constraint_us --- libraries/AP_HAL_Linux/UARTDriver.cpp | 4 ++-- libraries/AP_HAL_Linux/UARTDriver.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/AP_HAL_Linux/UARTDriver.cpp b/libraries/AP_HAL_Linux/UARTDriver.cpp index f691f2efe6..e3e518fc82 100644 --- a/libraries/AP_HAL_Linux/UARTDriver.cpp +++ b/libraries/AP_HAL_Linux/UARTDriver.cpp @@ -494,12 +494,12 @@ void UARTDriver::_timer_tick(void) A return value of zero means the HAL does not support this API */ -uint64_t UARTDriver::receive_time_constraint_us(uint16_t nbytes) const +uint64_t UARTDriver::receive_time_constraint_us(uint16_t nbytes) { uint64_t last_receive_us = _receive_timestamp[_receive_timestamp_idx]; if (_baudrate > 0) { // assume 10 bits per byte. - uint32_t transport_time_us = (1000000UL * 10UL / _baudrate) * nbytes; + uint32_t transport_time_us = (1000000UL * 10UL / _baudrate) * (nbytes+available()); last_receive_us -= transport_time_us; } return last_receive_us; diff --git a/libraries/AP_HAL_Linux/UARTDriver.h b/libraries/AP_HAL_Linux/UARTDriver.h index 709ef3162a..434075fcc6 100644 --- a/libraries/AP_HAL_Linux/UARTDriver.h +++ b/libraries/AP_HAL_Linux/UARTDriver.h @@ -62,7 +62,7 @@ public: A return value of zero means the HAL does not support this API */ - uint64_t receive_time_constraint_us(uint16_t nbytes) const override; + uint64_t receive_time_constraint_us(uint16_t nbytes) override; private: AP_HAL::OwnPtr _device;