From 9201cbde86c150ef03707265825e7e7af9711399 Mon Sep 17 00:00:00 2001 From: Sara Damiano Date: Mon, 20 May 2019 10:45:08 -0400 Subject: [PATCH] Fix SIMCOM length read/confirmed/requested --- src/TinyGsmClientSIM7000.h | 27 ++++++++------------------- src/TinyGsmClientSIM800.h | 12 ++++++++---- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/src/TinyGsmClientSIM7000.h b/src/TinyGsmClientSIM7000.h index dfb259f..5ca038f 100644 --- a/src/TinyGsmClientSIM7000.h +++ b/src/TinyGsmClientSIM7000.h @@ -807,44 +807,33 @@ protected: size_t len_requested = stream.readStringUntil(',').toInt(); // ^^ Requested number of data bytes (1-1460 bytes)to be read size_t len_confirmed = stream.readStringUntil('\n').toInt(); - if (len_confirmed > len_requested) { + if (len_confirmed < len_requested) { DBG(len_requested - len_confirmed, "fewer bytes confirmed than requested!"); } sockets[mux]->sock_available = len_confirmed; // ^^ Confirmed number of data bytes to be read, which may be less than requested. // 0 indicates that no data can be read. - for (size_t i=0; irx.put(c); } waitResponse(); - DBG("### READ:", len_confirmed, "from", mux); - return len_confirmed; - } - - size_t modemGetAvailable(uint8_t mux) { - sendAT(GF("+CIPRXGET=4,"), mux); - size_t result = 0; - if (waitResponse(GF("+CIPRXGET:")) == 1) { - streamSkipUntil(','); // Skip mode 4 - streamSkipUntil(','); // Skip mux - result = stream.readStringUntil('\n').toInt(); - waitResponse(); - } - if (!result) { - sockets[mux]->sock_connected = modemGetConnected(mux); - } - return result; + DBG("### READ:", len_read, "from", mux); + return len_read; } bool modemGetConnected(uint8_t mux) { diff --git a/src/TinyGsmClientSIM800.h b/src/TinyGsmClientSIM800.h index 934dc81..e6603ad 100644 --- a/src/TinyGsmClientSIM800.h +++ b/src/TinyGsmClientSIM800.h @@ -735,29 +735,33 @@ protected: size_t len_requested = stream.readStringUntil(',').toInt(); // ^^ Requested number of data bytes (1-1460 bytes)to be read size_t len_confirmed = stream.readStringUntil('\n').toInt(); - if (len_confirmed > len_requested) { + if (len_confirmed < len_requested) { DBG(len_requested - len_confirmed, "fewer bytes confirmed than requested!"); } sockets[mux]->sock_available = len_confirmed; // ^^ Confirmed number of data bytes to be read, which may be less than requested. // 0 indicates that no data can be read. - for (size_t i=0; irx.put(c); } waitResponse(); - DBG("### READ:", len_confirmed, "from", mux); - return len_confirmed; + DBG("### READ:", len_read, "from", mux); + return len_read; } size_t modemGetAvailable(uint8_t mux) {