1
1
/*
2
2
Print.cpp - Base class that provides print() and println()
3
3
Copyright (c) 2008 David A. Mellis. All right reserved.
4
-
4
+
5
5
This library is free software; you can redistribute it and/or
6
6
modify it under the terms of the GNU Lesser General Public
7
7
License as published by the Free Software Foundation; either
8
8
version 2.1 of the License, or (at your option) any later version.
9
-
9
+
10
10
This library is distributed in the hope that it will be useful,
11
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
13
Lesser General Public License for more details.
14
-
14
+
15
15
You should have received a copy of the GNU Lesser General Public
16
16
License along with this library; if not, write to the Free Software
17
17
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
-
18
+
19
19
Modified 23 November 2006 by David A. Mellis
20
20
Modified December 2014 by Ivan Grokhotkov
21
21
Modified May 2015 by Michael C. Miller - esp8266 progmem support
25
25
#include < stdio.h>
26
26
#include < string.h>
27
27
#include < math.h>
28
- #include " Arduino.h"
28
+ #include < Arduino.h>
29
29
30
30
#include " Print.h"
31
- extern " C" {
32
- #include " c_types.h"
33
- #include " ets_sys.h"
34
- }
35
31
36
32
// Public Methods //////////////////////////////////////////////////////////////
37
33
38
34
/* default implementation: may be overridden */
39
- size_t ICACHE_FLASH_ATTR Print::write (const uint8_t *buffer, size_t size) {
35
+ size_t Print::write (const uint8_t *buffer, size_t size) {
40
36
size_t n = 0 ;
41
37
while (size--) {
42
38
n += write (*buffer++);
@@ -67,7 +63,7 @@ size_t Print::printf(const char *format, ...) {
67
63
return len;
68
64
}
69
65
70
- size_t ICACHE_FLASH_ATTR Print::print (const __FlashStringHelper *ifsh) {
66
+ size_t Print::print (const __FlashStringHelper *ifsh) {
71
67
PGM_P p = reinterpret_cast <PGM_P>(ifsh);
72
68
73
69
size_t n = 0 ;
@@ -79,31 +75,31 @@ size_t ICACHE_FLASH_ATTR Print::print(const __FlashStringHelper *ifsh) {
79
75
return n;
80
76
}
81
77
82
- size_t ICACHE_FLASH_ATTR Print::print (const String &s) {
78
+ size_t Print::print (const String &s) {
83
79
return write (s.c_str (), s.length ());
84
80
}
85
81
86
- size_t ICACHE_FLASH_ATTR Print::print (const char str[]) {
82
+ size_t Print::print (const char str[]) {
87
83
return write (str);
88
84
}
89
85
90
- size_t ICACHE_FLASH_ATTR Print::print (char c) {
86
+ size_t Print::print (char c) {
91
87
return write (c);
92
88
}
93
89
94
- size_t ICACHE_FLASH_ATTR Print::print (unsigned char b, int base) {
90
+ size_t Print::print (unsigned char b, int base) {
95
91
return print ((unsigned long ) b, base);
96
92
}
97
93
98
- size_t ICACHE_FLASH_ATTR Print::print (int n, int base) {
94
+ size_t Print::print (int n, int base) {
99
95
return print ((long ) n, base);
100
96
}
101
97
102
- size_t ICACHE_FLASH_ATTR Print::print (unsigned int n, int base) {
98
+ size_t Print::print (unsigned int n, int base) {
103
99
return print ((unsigned long ) n, base);
104
100
}
105
101
106
- size_t ICACHE_FLASH_ATTR Print::print (long n, int base) {
102
+ size_t Print::print (long n, int base) {
107
103
if (base == 0 ) {
108
104
return write (n);
109
105
} else if (base == 10 ) {
@@ -118,94 +114,94 @@ size_t ICACHE_FLASH_ATTR Print::print(long n, int base) {
118
114
}
119
115
}
120
116
121
- size_t ICACHE_FLASH_ATTR Print::print (unsigned long n, int base) {
117
+ size_t Print::print (unsigned long n, int base) {
122
118
if (base == 0 )
123
119
return write (n);
124
120
else
125
121
return printNumber (n, base);
126
122
}
127
123
128
- size_t ICACHE_FLASH_ATTR Print::print (double n, int digits) {
124
+ size_t Print::print (double n, int digits) {
129
125
return printFloat (n, digits);
130
126
}
131
127
132
- size_t ICACHE_FLASH_ATTR Print::println (const __FlashStringHelper *ifsh) {
128
+ size_t Print::println (const __FlashStringHelper *ifsh) {
133
129
size_t n = print (ifsh);
134
130
n += println ();
135
131
return n;
136
132
}
137
133
138
- size_t ICACHE_FLASH_ATTR Print::print (const Printable& x) {
134
+ size_t Print::print (const Printable& x) {
139
135
return x.printTo (*this );
140
136
}
141
137
142
- size_t ICACHE_FLASH_ATTR Print::println (void ) {
138
+ size_t Print::println (void ) {
143
139
return print (" \r\n " );
144
140
}
145
141
146
- size_t ICACHE_FLASH_ATTR Print::println (const String &s) {
142
+ size_t Print::println (const String &s) {
147
143
size_t n = print (s);
148
144
n += println ();
149
145
return n;
150
146
}
151
147
152
- size_t ICACHE_FLASH_ATTR Print::println (const char c[]) {
148
+ size_t Print::println (const char c[]) {
153
149
size_t n = print (c);
154
150
n += println ();
155
151
return n;
156
152
}
157
153
158
- size_t ICACHE_FLASH_ATTR Print::println (char c) {
154
+ size_t Print::println (char c) {
159
155
size_t n = print (c);
160
156
n += println ();
161
157
return n;
162
158
}
163
159
164
- size_t ICACHE_FLASH_ATTR Print::println (unsigned char b, int base) {
160
+ size_t Print::println (unsigned char b, int base) {
165
161
size_t n = print (b, base);
166
162
n += println ();
167
163
return n;
168
164
}
169
165
170
- size_t ICACHE_FLASH_ATTR Print::println (int num, int base) {
166
+ size_t Print::println (int num, int base) {
171
167
size_t n = print (num, base);
172
168
n += println ();
173
169
return n;
174
170
}
175
171
176
- size_t ICACHE_FLASH_ATTR Print::println (unsigned int num, int base) {
172
+ size_t Print::println (unsigned int num, int base) {
177
173
size_t n = print (num, base);
178
174
n += println ();
179
175
return n;
180
176
}
181
177
182
- size_t ICACHE_FLASH_ATTR Print::println (long num, int base) {
178
+ size_t Print::println (long num, int base) {
183
179
size_t n = print (num, base);
184
180
n += println ();
185
181
return n;
186
182
}
187
183
188
- size_t ICACHE_FLASH_ATTR Print::println (unsigned long num, int base) {
184
+ size_t Print::println (unsigned long num, int base) {
189
185
size_t n = print (num, base);
190
186
n += println ();
191
187
return n;
192
188
}
193
189
194
- size_t ICACHE_FLASH_ATTR Print::println (double num, int digits) {
190
+ size_t Print::println (double num, int digits) {
195
191
size_t n = print (num, digits);
196
192
n += println ();
197
193
return n;
198
194
}
199
195
200
- size_t ICACHE_FLASH_ATTR Print::println (const Printable& x) {
196
+ size_t Print::println (const Printable& x) {
201
197
size_t n = print (x);
202
198
n += println ();
203
199
return n;
204
200
}
205
201
206
202
// Private Methods /////////////////////////////////////////////////////////////
207
203
208
- size_t ICACHE_FLASH_ATTR Print::printNumber (unsigned long n, uint8_t base) {
204
+ size_t Print::printNumber (unsigned long n, uint8_t base) {
209
205
char buf[8 * sizeof (long ) + 1 ]; // Assumes 8-bit chars plus zero byte.
210
206
char *str = &buf[sizeof (buf) - 1 ];
211
207
@@ -225,7 +221,7 @@ size_t ICACHE_FLASH_ATTR Print::printNumber(unsigned long n, uint8_t base) {
225
221
return write (str);
226
222
}
227
223
228
- size_t ICACHE_FLASH_ATTR Print::printFloat (double number, uint8_t digits) {
224
+ size_t Print::printFloat (double number, uint8_t digits) {
229
225
size_t n = 0 ;
230
226
231
227
if (isnan (number))
0 commit comments