From 8b605069f7b4b0ef0ff1d03b80789f6753d70624 Mon Sep 17 00:00:00 2001 From: Wilfried Chauveau Date: Wed, 6 Mar 2019 11:16:10 +0000 Subject: [PATCH] add vprintf to Rawserial. --- drivers/RawSerial.cpp | 10 ++++++++-- drivers/RawSerial.h | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/RawSerial.cpp b/drivers/RawSerial.cpp index b473fddae4..1424c6c9af 100644 --- a/drivers/RawSerial.cpp +++ b/drivers/RawSerial.cpp @@ -63,9 +63,16 @@ int RawSerial::puts(const char *str) // length is above a certain threshold, otherwise we use just the stack. int RawSerial::printf(const char *format, ...) { - lock(); std::va_list arg; va_start(arg, format); + int len = this->vprintf(format, arg); + va_end(arg); + return len; +} + +int RawSerial::vprintf(const char *format, std::va_list arg) +{ + lock(); // ARMCC microlib does not properly handle a size of 0. // As a workaround supply a dummy buffer with a size of 1. char dummy_buf[1]; @@ -80,7 +87,6 @@ int RawSerial::printf(const char *format, ...) puts(temp); delete[] temp; } - va_end(arg); unlock(); return len; } diff --git a/drivers/RawSerial.h b/drivers/RawSerial.h index 4841eb9038..0e6c9c7c8f 100644 --- a/drivers/RawSerial.h +++ b/drivers/RawSerial.h @@ -25,6 +25,7 @@ #include "drivers/SerialBase.h" #include "hal/serial_api.h" #include "platform/NonCopyable.h" +#include namespace mbed { /** \addtogroup drivers */ @@ -89,6 +90,7 @@ public: int puts(const char *str); int printf(const char *format, ...) MBED_PRINTF_METHOD(1, 2); + int vprintf(const char *format, std::va_list arg); #if !(DOXYGEN_ONLY) protected: