Skip to content

Commit d7bec65

Browse files
author
Cruz Monrreal
authored
Merge pull request #10043 from ithinuel/add_vprintf_to_rawserial
add vprintf to Rawserial.
2 parents d3db0a8 + 8b60506 commit d7bec65

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

drivers/RawSerial.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,16 @@ int RawSerial::puts(const char *str)
6363
// length is above a certain threshold, otherwise we use just the stack.
6464
int RawSerial::printf(const char *format, ...)
6565
{
66-
lock();
6766
std::va_list arg;
6867
va_start(arg, format);
68+
int len = this->vprintf(format, arg);
69+
va_end(arg);
70+
return len;
71+
}
72+
73+
int RawSerial::vprintf(const char *format, std::va_list arg)
74+
{
75+
lock();
6976
// ARMCC microlib does not properly handle a size of 0.
7077
// As a workaround supply a dummy buffer with a size of 1.
7178
char dummy_buf[1];
@@ -80,7 +87,6 @@ int RawSerial::printf(const char *format, ...)
8087
puts(temp);
8188
delete[] temp;
8289
}
83-
va_end(arg);
8490
unlock();
8591
return len;
8692
}

drivers/RawSerial.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "drivers/SerialBase.h"
2626
#include "hal/serial_api.h"
2727
#include "platform/NonCopyable.h"
28+
#include <cstdarg>
2829

2930
namespace mbed {
3031
/** \addtogroup drivers */
@@ -89,6 +90,7 @@ class RawSerial: public SerialBase, private NonCopyable<RawSerial> {
8990
int puts(const char *str);
9091

9192
int printf(const char *format, ...) MBED_PRINTF_METHOD(1, 2);
93+
int vprintf(const char *format, std::va_list arg);
9294

9395
#if !(DOXYGEN_ONLY)
9496
protected:

0 commit comments

Comments
 (0)