Skip to content

Commit afd713e

Browse files
committed
another missing change
1 parent 03a9b2d commit afd713e

File tree

6 files changed

+69
-54
lines changed

6 files changed

+69
-54
lines changed

cores/esp8266/HardwareSerial.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,14 +136,14 @@ class HardwareSerial: public Stream
136136
return uart_peek_char(_uart);
137137
}
138138

139-
virtual bool hasPeekBufferAPI () const override
139+
bool hasPeekBufferAPI () const override
140140
{
141141
return true;
142142
}
143143

144144
// return a pointer to available data buffer (size = available())
145145
// semantic forbids any kind of read() before calling peekConsume()
146-
const char* peekBuffer () override
146+
const void* peekBuffer () override
147147
{
148148
return uart_peek_buffer(_uart);
149149
}

cores/esp8266/Print.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class Print {
5656
size_t write(const char *str) {
5757
if(str == NULL)
5858
return 0;
59-
return write((const uint8_t *) str, strlen_P(str));
59+
return write((const uint8_t *) str, strlen(str));
6060
}
6161
virtual size_t write(const uint8_t *buffer, size_t size);
6262
size_t write(const char *buffer, size_t size) {

cores/esp8266/Stream.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ class Stream: public Print {
134134
// semantic forbids any kind of ::read()
135135
// - after calling peekBuffer()
136136
// - and before calling peekConsume()
137-
virtual const char* peekBuffer () { return nullptr; }
137+
virtual const void* peekBuffer () { return nullptr; }
138138

139139
// consumes bytes after peekBuffer() use
140140
// (then ::read() is allowed)

cores/esp8266/StreamDev.h

+33-29
Original file line numberDiff line numberDiff line change
@@ -34,64 +34,64 @@ class StreamNull: public Stream
3434
public:
3535

3636
// Print
37-
virtual size_t write(uint8_t) override
37+
size_t write(uint8_t) override
3838
{
3939
return 1;
4040
}
4141

42-
virtual size_t write(const uint8_t* buffer, size_t size) override
42+
size_t write(const uint8_t* buffer, size_t size) override
4343
{
4444
(void)buffer;
4545
(void)size;
4646
return size;
4747
}
4848

49-
virtual int availableForWrite() override
49+
int availableForWrite() override
5050
{
5151
return std::numeric_limits<int16_t>::max();
5252
}
5353

5454
// Stream
55-
virtual int available() override
55+
int available() override
5656
{
5757
return 0;
5858
}
5959

60-
virtual int read() override
60+
int read() override
6161
{
6262
return -1;
6363
}
6464

65-
virtual int peek() override
65+
int peek() override
6666
{
6767
return -1;
6868
}
6969

70-
virtual size_t readBytes(char* buffer, size_t len) override
70+
size_t readBytes(char* buffer, size_t len) override
7171
{
7272
(void)buffer;
7373
(void)len;
7474
return 0;
7575
}
7676

77-
virtual int read(uint8_t* buffer, size_t len) override
77+
int read(uint8_t* buffer, size_t len) override
7878
{
7979
(void)buffer;
8080
(void)len;
8181
return 0;
8282
}
8383

84-
virtual bool outputCanTimeout() override
84+
bool outputCanTimeout() override
8585
{
8686
return false;
8787
}
8888

89-
virtual bool inputCanTimeout() override
89+
bool inputCanTimeout() override
9090
{
9191
return false;
9292
}
9393

94-
virtual ssize_t streamRemaining() override
94+
ssize_t streamRemaining() override
9595
{
9696
return 0;
9797
}
@@ -113,34 +113,34 @@ class StreamZero: public StreamNull
113113
StreamZero(char zero = 0): _zero(zero) { }
114114

115115
// Stream
116-
virtual int available() override
116+
int available() override
117117
{
118118
return std::numeric_limits<int16_t>::max();
119119
}
120120

121-
virtual int read() override
121+
int read() override
122122
{
123123
return _zero;
124124
}
125125

126-
virtual int peek() override
126+
int peek() override
127127
{
128128
return _zero;
129129
}
130130

131-
virtual size_t readBytes(char* buffer, size_t len) override
131+
size_t readBytes(char* buffer, size_t len) override
132132
{
133133
memset(buffer, _zero, len);
134134
return len;
135135
}
136136

137-
virtual int read(uint8_t* buffer, size_t len) override
137+
int read(uint8_t* buffer, size_t len) override
138138
{
139139
memset((char*)buffer, _zero, len);
140140
return len;
141141
}
142142

143-
virtual ssize_t streamRemaining() override
143+
ssize_t streamRemaining() override
144144
{
145145
return std::numeric_limits<int16_t>::max();
146146
}
@@ -160,7 +160,11 @@ class StreamConstPtr: public StreamNull
160160
size_t _peekPointer = 0;
161161

162162
public:
163-
StreamConstPtr(const String&& string) = delete; // prevents passing String temporary, use ctor(buffer,size) if you know what you are doing
163+
// prevents passing String temporary, use ctor(buffer,size) if you know what you are doing
164+
StreamConstPtr(const String&&) = delete;
165+
StreamConstPtr(String&&) = delete;
166+
167+
// reference arbitrary pointer
164168
StreamConstPtr(const String& string): _buffer(string.c_str()), _size(string.length()), _byteAddressable(true) { }
165169
StreamConstPtr(const char* buffer, size_t size): _buffer(buffer), _size(size), _byteAddressable(__byteAddressable(buffer)) { }
166170
StreamConstPtr(const uint8_t* buffer, size_t size): _buffer((const char*)buffer), _size(size), _byteAddressable(__byteAddressable(buffer)) { }
@@ -173,24 +177,24 @@ class StreamConstPtr: public StreamNull
173177
}
174178

175179
// Stream
176-
virtual int available() override
180+
int available() override
177181
{
178182
return peekAvailable();
179183
}
180184

181-
virtual int read() override
185+
int read() override
182186
{
183187
// valid with dram, iram and flash
184188
return _peekPointer < _size ? pgm_read_byte(&_buffer[_peekPointer++]) : -1;
185189
}
186190

187-
virtual int peek() override
191+
int peek() override
188192
{
189193
// valid with dram, iram and flash
190194
return _peekPointer < _size ? pgm_read_byte(&_buffer[_peekPointer]) : -1;
191195
}
192196

193-
virtual size_t readBytes(char* buffer, size_t len) override
197+
size_t readBytes(char* buffer, size_t len) override
194198
{
195199
if (_peekPointer >= _size)
196200
{
@@ -202,33 +206,33 @@ class StreamConstPtr: public StreamNull
202206
return cpylen;
203207
}
204208

205-
virtual int read(uint8_t* buffer, size_t len) override
209+
int read(uint8_t* buffer, size_t len) override
206210
{
207211
return readBytes((char*)buffer, len);
208212
}
209213

210-
virtual ssize_t streamRemaining() override
214+
ssize_t streamRemaining() override
211215
{
212216
return _size;
213217
}
214218

215219
// peekBuffer
216-
virtual bool hasPeekBufferAPI() const override
220+
bool hasPeekBufferAPI() const override
217221
{
218-
return _byteAddressable;
222+
return true;
219223
}
220224

221-
virtual size_t peekAvailable() override
225+
size_t peekAvailable() override
222226
{
223227
return _peekPointer < _size ? _size - _peekPointer : 0;
224228
}
225229

226-
virtual const char* peekBuffer() override
230+
const void* peekBuffer() override
227231
{
228232
return _peekPointer < _size ? _buffer + _peekPointer : nullptr;
229233
}
230234

231-
virtual void peekConsume(size_t consume) override
235+
void peekConsume(size_t consume) override
232236
{
233237
_peekPointer += consume;
234238
}

cores/esp8266/StreamSend.cpp

+15-4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@
2222
#include <Arduino.h>
2323
#include <StreamDev.h>
2424

25+
namespace {
26+
27+
// 'last' is memchr result, always in advance of current
28+
size_t last_consume(size_t previous, const void* last, const void* current)
29+
{
30+
return std::min(previous, static_cast<size_t>(
31+
reinterpret_cast<intptr_t>(last) - reinterpret_cast<intptr_t>(current)));
32+
}
33+
34+
} // namespace
35+
2536
size_t Stream::sendGeneric(Stream* to, const ssize_t len, const int readUntilChar,
2637
const esp8266::polledTimeout::oneShotFastMs::timeType timeoutMs)
2738
{
@@ -132,18 +143,18 @@ Stream::SendGenericPeekBuffer(Print* to, const ssize_t len, const int readUntilC
132143
}
133144
if (w)
134145
{
135-
const char* directbuf = peekBuffer();
146+
const auto* directbuf = peekBuffer();
136147
bool foundChar = false;
137148
if (readUntilChar >= 0)
138149
{
139-
const char* last = (const char*)memchr(directbuf, readUntilChar, w);
150+
const auto* last = memchr(directbuf, readUntilChar, w);
140151
if (last)
141152
{
142-
w = std::min((size_t)(last - directbuf), w);
153+
w = last_consume(w, last, directbuf);
143154
foundChar = true;
144155
}
145156
}
146-
if (w && ((w = to->write(directbuf, w))))
157+
if (w && ((w = to->write((const uint8_t*)directbuf, w))))
147158
{
148159
peekConsume(w);
149160
written += w;

cores/esp8266/StreamString.h

+17-17
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,18 @@ class S2Stream: public Stream
3939

4040
S2Stream(String* string, int peekPointer = -1) : string(string), peekPointer(peekPointer) { }
4141

42-
virtual int available() override
42+
// Stream
43+
int available() override
4344
{
4445
return string->length();
4546
}
4647

47-
virtual int availableForWrite() override
48+
int availableForWrite() override
4849
{
4950
return std::numeric_limits<int16_t>::max();
5051
}
5152

52-
virtual int read() override
53+
int read() override
5354
{
5455
if (peekPointer < 0)
5556
{
@@ -71,12 +72,12 @@ class S2Stream: public Stream
7172
return -1;
7273
}
7374

74-
virtual size_t write(uint8_t data) override
75+
size_t write(uint8_t data) override
7576
{
7677
return string->concat((char)data);
7778
}
7879

79-
virtual int read(uint8_t* buffer, size_t len) override
80+
int read(uint8_t* buffer, size_t len) override
8081
{
8182
if (peekPointer < 0)
8283
{
@@ -99,12 +100,12 @@ class S2Stream: public Stream
99100
return l;
100101
}
101102

102-
virtual size_t write(const uint8_t* buffer, size_t len) override
103+
size_t write(const uint8_t* buffer, size_t len) override
103104
{
104105
return string->concat((const char*)buffer, len) ? len : 0;
105106
}
106107

107-
virtual int peek() override
108+
int peek() override
108109
{
109110
if (peekPointer < 0)
110111
{
@@ -121,29 +122,28 @@ class S2Stream: public Stream
121122
return -1;
122123
}
123124

124-
virtual void flush() override
125+
void flush() override
125126
{
126127
// nothing to do
127128
}
128129

129-
virtual bool inputCanTimeout() override
130+
bool inputCanTimeout() override
130131
{
131132
return false;
132133
}
133134

134-
virtual bool outputCanTimeout() override
135+
bool outputCanTimeout() override
135136
{
136137
return false;
137138
}
138139

139-
//// Stream's peekBufferAPI
140-
141-
virtual bool hasPeekBufferAPI() const override
140+
// peekBufferAPI
141+
bool hasPeekBufferAPI() const override
142142
{
143143
return true;
144144
}
145145

146-
virtual size_t peekAvailable()
146+
size_t peekAvailable()
147147
{
148148
if (peekPointer < 0)
149149
{
@@ -152,7 +152,7 @@ class S2Stream: public Stream
152152
return string->length() - peekPointer;
153153
}
154154

155-
virtual const char* peekBuffer() override
155+
const void* peekBuffer() override
156156
{
157157
if (peekPointer < 0)
158158
{
@@ -165,7 +165,7 @@ class S2Stream: public Stream
165165
return nullptr;
166166
}
167167

168-
virtual void peekConsume(size_t consume) override
168+
void peekConsume(size_t consume) override
169169
{
170170
if (peekPointer < 0)
171171
{
@@ -179,7 +179,7 @@ class S2Stream: public Stream
179179
}
180180
}
181181

182-
virtual ssize_t streamRemaining() override
182+
ssize_t streamRemaining() override
183183
{
184184
return peekPointer < 0 ? string->length() : string->length() - peekPointer;
185185
}

0 commit comments

Comments
 (0)