@@ -148,47 +148,39 @@ class EthernetClient : public Client {
148
148
149
149
// read via ring buffer
150
150
virtual int read () {
151
- Logger.debug (WIFICLIENT," read-1" );
152
- if (readBuffer.available ()==0 ){
153
- uint8_t buffer[bufferSize];
154
- int len = read ((uint8_t *)buffer, bufferSize);
155
- readBuffer.write (buffer, len);
151
+ int result = -1 ;
152
+ uint8_t c;
153
+ if (readBytes (&c,1 )==1 ){
154
+ result = c;
156
155
}
157
- return readBuffer.read ();
156
+ // Logger.debug(WIFICLIENT,"read-1");
157
+ // if (readBuffer.available()==0){
158
+ // uint8_t buffer[bufferSize];
159
+ // int len = read((uint8_t*)buffer, bufferSize);
160
+ // readBuffer.write(buffer, len);
161
+ // }
162
+ // return readBuffer.read();
163
+ return result;;
158
164
}
159
165
160
- virtual int read (char * buffer, size_t len){
166
+ size_t readBytes (char * buffer, size_t len){
161
167
return read ((uint8_t * )buffer, len);
162
168
}
163
-
164
- // direct read with timeout
165
- virtual int read (uint8_t * buffer, size_t len){
166
- Logger.debug (WIFICLIENT," read" );
167
- int result = 0 ;
168
- if (readBuffer.available ()>0 ){
169
- result = readBuffer.read (buffer, len);
170
- } else {
171
- long timeout = millis () + getTimeout ();
172
- result = sock->read (buffer, len);
173
- while (result<=0 && millis () < timeout){
174
- delay (200 );
175
- result = sock->read (buffer, len);
176
- }
177
- }
178
- char lenStr[16 ];
179
- sprintf (lenStr," %d" ,result);
180
- Logger.debug ( WIFICLIENT," read->" ,lenStr);
181
-
182
- return result;
169
+
170
+ size_t readBytes (uint8_t * buffer, size_t len) override {
171
+ return read (buffer, len);
183
172
}
173
+
174
+ // direct read with timeout
184
175
185
176
// peeks one character
186
177
virtual int peek (){
187
- Logger.debug (WIFICLIENT, " peek" );
188
- if (readBuffer.available ()>0 ){
189
- return readBuffer.peek ();
190
- }
178
+ // Logger.debug(WIFICLIENT, "peek");
179
+ // if (readBuffer.available()>0){
180
+ // return readBuffer.peek();
181
+ // }
191
182
return sock->peek ();
183
+ return -1 ;
192
184
}
193
185
194
186
// close the connection
@@ -204,6 +196,26 @@ class EthernetClient : public Client {
204
196
RingBufferExt writeBuffer;
205
197
bool is_connected;
206
198
199
+ int read (uint8_t * buffer, size_t len) override {
200
+ Logger.debug (WIFICLIENT," read" );
201
+ int result = 0 ;
202
+ // if (readBuffer.available()>0){
203
+ // result = readBuffer.read(buffer, len);
204
+ // } else {
205
+ long timeout = millis () + getTimeout ();
206
+ result = sock->read (buffer, len);
207
+ while (result<=0 && millis () < timeout){
208
+ delay (200 );
209
+ result = sock->read (buffer, len);
210
+ }
211
+ // }
212
+ char lenStr[16 ];
213
+ sprintf (lenStr," %d" ,result);
214
+ Logger.debug ( WIFICLIENT," read->" ,lenStr);
215
+
216
+ return result;
217
+ }
218
+
207
219
bool connectedFast () {
208
220
return is_connected;
209
221
}
0 commit comments