F439_CPP_SPI_RA8875_TFT_LCD_04 1.0
STM32F439 SPI RA8875 7-inch TFT display with FRAM-backed touch calibration, built on the STM32_GFX, STM32_RA8875 and STM32_MB85RS64V libraries
Loading...
Searching...
No Matches
Print.cpp
Go to the documentation of this file.
1
6#include "Print.h"
7
14size_t Print::write(const uint8_t *buffer, size_t size) {
15 size_t n = 0;
16 while (size--) {
17 if (write(*buffer++))
18 n++;
19 else
20 break;
21 }
22 return n;
23}
24
30size_t Print::print(const __FlashStringHelper *ifsh) {
31 return print(reinterpret_cast<const char *>(ifsh));
32}
33
39size_t Print::print(const String &s) { return write(s.c_str(), s.length()); }
40
46size_t Print::print(const char str[]) { return write(str); }
47
53size_t Print::print(char c) { return write((uint8_t)c); }
54
61size_t Print::print(unsigned char b, int base) {
62 return print((unsigned long)b, base);
63}
64
71size_t Print::print(int n, int base) { return print((long)n, base); }
72
79size_t Print::print(unsigned int n, int base) {
80 return print((unsigned long)n, base);
81}
82
89size_t Print::print(long n, int base) {
90 if (base == 0)
91 return write((uint8_t)n);
92 if (base == 10 && n < 0) {
93 size_t t = print('-');
94 return t + printNumber((unsigned long)(-(n + 1)) + 1UL, 10);
95 }
96 return printNumber((unsigned long)n, (uint8_t)base);
97}
98
105size_t Print::print(unsigned long n, int base) {
106 return (base == 0) ? write((uint8_t)n) : printNumber(n, (uint8_t)base);
107}
108
115size_t Print::print(double n, int digits) { return printFloat(n, (uint8_t)digits); }
116
121size_t Print::println(void) { return write("\r\n"); }
122
128size_t Print::println(const __FlashStringHelper *ifsh) {
129 return print(ifsh) + println();
130}
131
137size_t Print::println(const String &s) { return print(s) + println(); }
138
144size_t Print::println(const char c[]) { return print(c) + println(); }
145
151size_t Print::println(char c) { return print(c) + println(); }
152
159size_t Print::println(unsigned char b, int base) {
160 return print(b, base) + println();
161}
162
169size_t Print::println(int num, int base) { return print(num, base) + println(); }
170
177size_t Print::println(unsigned int num, int base) {
178 return print(num, base) + println();
179}
180
187size_t Print::println(long num, int base) { return print(num, base) + println(); }
188
195size_t Print::println(unsigned long num, int base) {
196 return print(num, base) + println();
197}
198
205size_t Print::println(double num, int digits) {
206 return print(num, digits) + println();
207}
208
217size_t Print::printNumber(unsigned long n, uint8_t base) {
218 char buf[8 * sizeof(long) + 1]; // worst case: base 2
219 char *str = &buf[sizeof(buf) - 1];
220 *str = '\0';
221 if (base < 2)
222 base = 10;
223 do {
224 unsigned long m = n;
225 n /= base;
226 char c = (char)(m - base * n);
227 *--str = (c < 10) ? (char)(c + '0') : (char)(c + 'A' - 10);
228 } while (n);
229 return write(str);
230}
231
242size_t Print::printFloat(double number, uint8_t digits) {
243 size_t n = 0;
244 if (isnan(number))
245 return print("nan");
246 if (isinf(number))
247 return print("inf");
248 if (number > 4294967040.0 || number < -4294967040.0)
249 return print("ovf"); // beyond what fits in an unsigned long
250 if (number < 0.0) {
251 n += print('-');
252 number = -number;
253 }
254 // Round to the requested number of digits.
255 double rounding = 0.5;
256 for (uint8_t i = 0; i < digits; ++i)
257 rounding /= 10.0;
258 number += rounding;
259 unsigned long int_part = (unsigned long)number;
260 double remainder = number - (double)int_part;
261 n += print(int_part);
262 if (digits > 0)
263 n += print('.');
264 while (digits-- > 0) {
265 remainder *= 10.0;
266 unsigned int digit = (unsigned int)remainder;
267 n += print(digit);
268 remainder -= digit;
269 }
270 return n;
271}
Arduino-compatible Print base class (independent implementation).
size_t println(void)
Print just a line ending (CR LF).
Definition Print.cpp:121
size_t print(const __FlashStringHelper *ifsh)
Print a flash-resident string, e.g. print(F("text")).
Definition Print.cpp:30
size_t print(unsigned int n, int base=DEC)
Print an unsigned int.
Definition Print.cpp:79
virtual size_t write(uint8_t c)=0
Minimal Arduino-String stand-in (see file description).
Definition WString.h:22
const char * c_str() const
Definition WString.h:49
unsigned int length() const
Definition WString.h:51