From f983c8a906ba8c32d873814b60972d01af42d1b8 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 17 May 2018 07:01:14 +1000 Subject: [PATCH] HAL_F4Light: take account of available bytes in receive_time_constraint_us --- libraries/AP_HAL_F4Light/UARTDriver.cpp | 4 ++-- libraries/AP_HAL_F4Light/UARTDriver.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/AP_HAL_F4Light/UARTDriver.cpp b/libraries/AP_HAL_F4Light/UARTDriver.cpp index 5053dc8cc9..e965ddc5fd 100644 --- a/libraries/AP_HAL_F4Light/UARTDriver.cpp +++ b/libraries/AP_HAL_F4Light/UARTDriver.cpp @@ -149,14 +149,14 @@ void UARTDriver::update_timestamp(){ // called from ISR } // this is mostly a -uint64_t UARTDriver::receive_time_constraint_us(uint16_t nbytes) const { +uint64_t UARTDriver::receive_time_constraint_us(uint16_t nbytes) { // timestamp is 32 bits so read is atomic, in worst case we get 2nd timestamp uint32_t time_from_last_byte = AP_HAL::micros() - _receive_timestamp[_time_idx]; uint32_t transport_time_us = 0; if (_baudrate > 0) { // assume 10 bits per byte - transport_time_us = (1000000UL * 10UL / _baudrate) * nbytes; + transport_time_us = (1000000UL * 10UL / _baudrate) * (nbytes+available()); } return AP_HAL::micros64() - (time_from_last_byte + transport_time_us); } diff --git a/libraries/AP_HAL_F4Light/UARTDriver.h b/libraries/AP_HAL_F4Light/UARTDriver.h index 247220e829..45b3eb7bd5 100644 --- a/libraries/AP_HAL_F4Light/UARTDriver.h +++ b/libraries/AP_HAL_F4Light/UARTDriver.h @@ -53,7 +53,7 @@ public: inline void disable(){ _usart_device = NULL; } // pins used for another needs - uint64_t receive_time_constraint_us(uint16_t nbytes) const override; + uint64_t receive_time_constraint_us(uint16_t nbytes) override; void update_timestamp();