Skip to content

Commit 83c437f

Browse files
committed
Added ESP core printf implementation.
1 parent bc792a9 commit 83c437f

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

Diff for: cores/arduino/Print.cpp

+30
Original file line numberDiff line numberDiff line change
@@ -264,3 +264,33 @@ size_t Print::printFloat(double number, uint8_t digits)
264264

265265
return n;
266266
}
267+
268+
size_t Print::printf(const char *format, ...)
269+
{
270+
char loc_buf[64];
271+
char * temp = loc_buf;
272+
va_list arg;
273+
va_list copy;
274+
va_start(arg, format);
275+
va_copy(copy, arg);
276+
int len = vsnprintf(temp, sizeof(loc_buf), format, copy);
277+
va_end(copy);
278+
if(len < 0) {
279+
va_end(arg);
280+
return 0;
281+
};
282+
if(len >= sizeof(loc_buf)){
283+
temp = (char*) malloc(len+1);
284+
if(temp == NULL) {
285+
va_end(arg);
286+
return 0;
287+
}
288+
len = vsnprintf(temp, len+1, format, arg);
289+
}
290+
va_end(arg);
291+
len = write((uint8_t*)temp, len);
292+
if(temp != loc_buf){
293+
free(temp);
294+
}
295+
return len;
296+
}

Diff for: cores/arduino/Print.h

+2
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ class Print
7474
size_t print(double, int = 2);
7575
size_t print(const Printable&);
7676

77+
size_t printf(const char * format, ...) __attribute__ ((format (printf, 2, 3)));
78+
7779
size_t println(const __FlashStringHelper *);
7880
size_t println(const String &s);
7981
size_t println(const char[]);

0 commit comments

Comments
 (0)