File tree 2 files changed +32
-1
lines changed
2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -233,6 +233,34 @@ size_t Print::println(const Printable& x)
233
233
return n;
234
234
}
235
235
236
+ static int16_t printf_putchar (char c, FILE *fp)
237
+ {
238
+ ((class Print *)(fdev_get_udata (fp)))->write ((uint8_t )c);
239
+ return 0 ;
240
+ }
241
+
242
+ int16_t Print::printf (const char *format, ...)
243
+ {
244
+ FILE f;
245
+ va_list ap;
246
+
247
+ fdev_setup_stream (&f, printf_putchar, NULL , _FDEV_SETUP_WRITE);
248
+ fdev_set_udata (&f, this );
249
+ va_start (ap, format);
250
+ return vfprintf (&f, format, ap);
251
+ }
252
+
253
+ int16_t Print::printf (const __FlashStringHelper *format, ...)
254
+ {
255
+ FILE f;
256
+ va_list ap;
257
+
258
+ fdev_setup_stream (&f, printf_putchar, NULL , _FDEV_SETUP_WRITE);
259
+ fdev_set_udata (&f, this );
260
+ va_start (ap, format);
261
+ return vfprintf_P (&f, (const char *)format, ap);
262
+ }
263
+
236
264
// Private Methods /////////////////////////////////////////////////////////////
237
265
238
266
size_t Print::printNumber (unsigned long n, uint8_t base)
Original file line number Diff line number Diff line change 20
20
21
21
#include < inttypes.h>
22
22
#include < stdio.h> // for size_t
23
-
23
+ # include < stdarg.h >
24
24
#include " String.h"
25
25
#include " Printable.h"
26
26
@@ -82,5 +82,8 @@ class Print
82
82
size_t println (double , int = 2 );
83
83
size_t println (const Printable&);
84
84
size_t println (void );
85
+
86
+ int16_t printf (const char *format, ...);
87
+ int16_t printf (const __FlashStringHelper *format, ...);
85
88
};
86
89
You can’t perform that action at this time.
0 commit comments