From c035eef845c0eba4906ae8e1c09673de5d8aee48 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 2 Oct 2013 17:36:54 +1000 Subject: [PATCH] HAL_SITL: implement a dummy buffered write --- libraries/AP_HAL_AVR_SITL/Console.cpp | 3 +++ libraries/AP_HAL_AVR_SITL/Console.h | 1 + libraries/AP_HAL_AVR_SITL/UARTDriver.cpp | 9 +++++++++ libraries/AP_HAL_AVR_SITL/UARTDriver.h | 1 + 4 files changed, 14 insertions(+) diff --git a/libraries/AP_HAL_AVR_SITL/Console.cpp b/libraries/AP_HAL_AVR_SITL/Console.cpp index 2e369c5905..8a079c350d 100644 --- a/libraries/AP_HAL_AVR_SITL/Console.cpp +++ b/libraries/AP_HAL_AVR_SITL/Console.cpp @@ -59,5 +59,8 @@ size_t SITLConsoleDriver::write(uint8_t c) return _base_uart->write(c); } +size_t SITLConsoleDriver::write(const uint8_t *buffer, size_t size) { + return _base_uart->write(buffer, size); +} #endif diff --git a/libraries/AP_HAL_AVR_SITL/Console.h b/libraries/AP_HAL_AVR_SITL/Console.h index 42c278df99..93625abd6f 100644 --- a/libraries/AP_HAL_AVR_SITL/Console.h +++ b/libraries/AP_HAL_AVR_SITL/Console.h @@ -24,6 +24,7 @@ public: /* Implementations of Print virtual methods */ size_t write(uint8_t c); + size_t write(const uint8_t *buffer, size_t size); private: AP_HAL::UARTDriver* _base_uart; diff --git a/libraries/AP_HAL_AVR_SITL/UARTDriver.cpp b/libraries/AP_HAL_AVR_SITL/UARTDriver.cpp index 9f79afe303..fca750a119 100644 --- a/libraries/AP_HAL_AVR_SITL/UARTDriver.cpp +++ b/libraries/AP_HAL_AVR_SITL/UARTDriver.cpp @@ -174,6 +174,15 @@ size_t SITLUARTDriver::write(uint8_t c) return send(_fd, &c, 1, flags); } +size_t SITLUARTDriver::write(const uint8_t *buffer, size_t size) +{ + size_t n = 0; + while (size--) { + n += write(*buffer++); + } + return n; +} + /* start a TCP connection for the serial port. If wait_for_connection is true then block until a client connects diff --git a/libraries/AP_HAL_AVR_SITL/UARTDriver.h b/libraries/AP_HAL_AVR_SITL/UARTDriver.h index 861a77b213..36599426f2 100644 --- a/libraries/AP_HAL_AVR_SITL/UARTDriver.h +++ b/libraries/AP_HAL_AVR_SITL/UARTDriver.h @@ -46,6 +46,7 @@ public: /* Implementations of Print virtual methods */ size_t write(uint8_t c); + size_t write(const uint8_t *buffer, size_t size); // file descriptor, exposed so SITL_State::loop_hook() can use it int _fd;