From 2de7630a25d875986b79f406e2dcc41cf754d9b5 Mon Sep 17 00:00:00 2001 From: Bernd Giesecke Date: Mon, 30 Sep 2019 17:33:26 +0800 Subject: [PATCH] Added printf to Print class to have Serial.printf() functionality --- cores/arduino/Print.cpp | 10 ++++++++++ cores/arduino/Print.h | 4 ++++ 2 files changed, 14 insertions(+) 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 */ } };