File tree 1 file changed +30
-0
lines changed
1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -41,6 +41,36 @@ size_t Print::write(const uint8_t *buffer, size_t size)
41
41
return n;
42
42
}
43
43
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
+
44
74
size_t Print::print (const __FlashStringHelper *ifsh)
45
75
{
46
76
PGM_P p = reinterpret_cast <PGM_P>(ifsh);
You can’t perform that action at this time.
0 commit comments