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.
This commit is contained in:
Sara Damiano
2018-09-24 15:46:14 -04:00
parent 69c1824539
commit 1aad1a9a1d
6 changed files with 9 additions and 15 deletions

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;

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;

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;

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;
}

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;
}

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;
}