Browse Source

Clean-up of timeouts

For loggers that return data "immediately" (unbuffered, data sent w/o request) read will "maintain" and look for any incoming data as long as the socket is open.  Use timedRead if you want a timeout.

For modems that buffer the response and wait for you to request data, read will stop if socket closes OR if there is no longer any data in the modem's response buffer.
v_master
Sara Damiano 6 years ago
parent
commit
1aad1a9a1d
6 changed files with 9 additions and 15 deletions
  1. +2
    -4
      src/TinyGsmClientA6.h
  2. +2
    -4
      src/TinyGsmClientESP8266.h
  3. +2
    -4
      src/TinyGsmClientM590.h
  4. +1
    -1
      src/TinyGsmClientM95.h
  5. +1
    -1
      src/TinyGsmClientMC60.h
  6. +1
    -1
      src/TinyGsmClientSIM800.h

+ 2
- 4
src/TinyGsmClientA6.h View File

@ -125,8 +125,7 @@ public:
virtual int read(uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
size_t cnt = 0;
uint32_t _startMillis = millis();
while (cnt < size && millis() - _startMillis < _timeout) {
while (cnt < size && sock_connected) {
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) {
rx.get(buf, chunk);
@ -135,9 +134,8 @@ public:
continue;
}
// TODO: Read directly into user buffer?
if (!rx.size() && sock_connected) {
if (!rx.size()) {
at->maintain();
//break;
}
}
return cnt;


+ 2
- 4
src/TinyGsmClientESP8266.h View File

@ -122,8 +122,7 @@ public:
virtual int read(uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
size_t cnt = 0;
uint32_t _startMillis = millis();
while (cnt < size && millis() - _startMillis < _timeout) {
while (cnt < size && sock_connected) {
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) {
rx.get(buf, chunk);
@ -132,9 +131,8 @@ public:
continue;
}
// TODO: Read directly into user buffer?
if (!rx.size() && sock_connected) {
if (!rx.size()) {
at->maintain();
//break;
}
}
return cnt;


+ 2
- 4
src/TinyGsmClientM590.h View File

@ -122,8 +122,7 @@ public:
virtual int read(uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
size_t cnt = 0;
uint32_t _startMillis = millis();
while (cnt < size && millis() - _startMillis < _timeout) {
while (cnt < size && sock_connected) {
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) {
rx.get(buf, chunk);
@ -132,9 +131,8 @@ public:
continue;
}
// TODO: Read directly into user buffer?
if (!rx.size() && sock_connected) {
if (!rx.size()) {
at->maintain();
//break;
}
}
return cnt;


+ 1
- 1
src/TinyGsmClientM95.h View File

@ -137,7 +137,7 @@ public:
// TODO: Read directly into user buffer?
at->maintain();
if (sock_available > 0) {
at->modemRead(rx.free(), mux);
sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux);
} else {
break;
}


+ 1
- 1
src/TinyGsmClientMC60.h View File

@ -141,7 +141,7 @@ public:
// TODO: Read directly into user buffer?
at->maintain();
if (sock_available > 0) {
at->modemRead(rx.free(), mux);
sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux);
} else {
break;
}


+ 1
- 1
src/TinyGsmClientSIM800.h View File

@ -150,7 +150,7 @@ public:
// TODO: Read directly into user buffer?
at->maintain();
if (sock_available > 0) {
at->modemRead(rx.free(), mux);
sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux);
} else {
break;
}


Loading…
Cancel
Save