diff --git a/cores/arduino/Print.cpp b/cores/arduino/Print.cpp index 9fc5c3116..2d5ca358a 100644 --- a/cores/arduino/Print.cpp +++ b/cores/arduino/Print.cpp @@ -183,6 +183,16 @@ size_t Print::println(const Printable& x) return n; } +void Print::printf(const char format[], ...) +{ + char buf[PRINTF_BUF]; + va_list ap; + va_start(ap, format); + vsnprintf(buf, sizeof(buf), format, ap); + write(buf); + va_end(ap); +} + // Private Methods ///////////////////////////////////////////////////////////// size_t Print::printNumber(unsigned long n, uint8_t base) diff --git a/cores/arduino/Print.h b/cores/arduino/Print.h index dfb645cbb..abda4679b 100644 --- a/cores/arduino/Print.h +++ b/cores/arduino/Print.h @@ -21,6 +21,8 @@ #include #include // for size_t +#include // for printf +#define PRINTF_BUF 80 #include "WString.h" #include "Printable.h" @@ -86,6 +88,8 @@ class Print size_t println(const Printable&); size_t println(void); + void printf(const char[], ...); + virtual void flush() { /* Empty implementation for backward compatibility */ } };