Skip to content

Commit 4ed591e

Browse files
authored
added printf
1 parent c1fe7c1 commit 4ed591e

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

Diff for: cores/arduino/Print.cpp

+30
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,36 @@ size_t Print::write(const uint8_t *buffer, size_t size)
4141
return n;
4242
}
4343

44+
size_t Print::printf(const char *format, ...)
45+
{
46+
char loc_buf[64];
47+
char * temp = loc_buf;
48+
va_list arg;
49+
va_list copy;
50+
va_start(arg, format);
51+
va_copy(copy, arg);
52+
int len = vsnprintf(temp, sizeof(loc_buf), format, copy);
53+
va_end(copy);
54+
if(len < 0) {
55+
va_end(arg);
56+
return 0;
57+
};
58+
if((unsigned)len >= sizeof(loc_buf)){
59+
temp = (char*) malloc(len+1);
60+
if(temp == NULL) {
61+
va_end(arg);
62+
return 0;
63+
}
64+
len = vsnprintf(temp, len+1, format, arg);
65+
}
66+
va_end(arg);
67+
len = write((uint8_t*)temp, len);
68+
if(temp != loc_buf){
69+
free(temp);
70+
}
71+
return len;
72+
}
73+
4474
size_t Print::print(const __FlashStringHelper *ifsh)
4575
{
4676
PGM_P p = reinterpret_cast<PGM_P>(ifsh);

0 commit comments

Comments
 (0)