From efe1e0170046974233f39e31a0960006d116ba64 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 2 Oct 2013 17:36:01 +1000 Subject: [PATCH] AP_HAL: require a buffer write() function in all ports this makes a sufficient performance difference that it is worth it --- libraries/AP_HAL/Util.cpp | 8 ++++++++ libraries/AP_HAL/utility/Print.cpp | 10 ---------- libraries/AP_HAL/utility/Print.h | 3 +-- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/libraries/AP_HAL/Util.cpp b/libraries/AP_HAL/Util.cpp index 2f9d25f6ee..b0d49bb119 100644 --- a/libraries/AP_HAL/Util.cpp +++ b/libraries/AP_HAL/Util.cpp @@ -15,6 +15,14 @@ public: return 0; } } + size_t write(const uint8_t *buffer, size_t size) { + size_t n = 0; + while (size--) { + n += write(*buffer++); + } + return n; + } + size_t _offs; char* const _str; const size_t _size; diff --git a/libraries/AP_HAL/utility/Print.cpp b/libraries/AP_HAL/utility/Print.cpp index 5e160d2372..73c6171f4d 100644 --- a/libraries/AP_HAL/utility/Print.cpp +++ b/libraries/AP_HAL/utility/Print.cpp @@ -29,16 +29,6 @@ #include "Print.h" using namespace AP_HAL; -/* default implementation: may be overridden */ -size_t Print::write_implementation(const uint8_t *buffer, size_t size) -{ - size_t n = 0; - while (size--) { - n += write(*buffer++); - } - return n; -} - size_t Print::print(const char str[]) { return write(str); diff --git a/libraries/AP_HAL/utility/Print.h b/libraries/AP_HAL/utility/Print.h index a0a55e6878..f27db68ae8 100644 --- a/libraries/AP_HAL/utility/Print.h +++ b/libraries/AP_HAL/utility/Print.h @@ -49,10 +49,9 @@ class AP_HAL::Print { Print() {} virtual size_t write(uint8_t) = 0; + virtual size_t write(const uint8_t *buffer, size_t size) = 0; size_t write(const char *str) { return write((const uint8_t *)str, strlen(str)); } - size_t write(const uint8_t *buffer, size_t size) {return write_implementation(buffer, size);} - virtual size_t write_implementation(const uint8_t *buffer, size_t size); public: size_t print(const char[]); size_t print(char);