|
|
@ -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; i<len_confirmed; i++) { |
|
|
|
size_t len_read = 0; |
|
|
|
for (size_t i=0; i<TinyGsmMin(len_confirmed, len_requested) ; i++) { |
|
|
|
#ifdef TINY_GSM_USE_HEX |
|
|
|
while (stream.available() < 2) { TINY_GSM_YIELD(); } |
|
|
|
char buf[4] = { 0, }; |
|
|
|
buf[0] = stream.read(); |
|
|
|
len_read++; |
|
|
|
buf[1] = stream.read(); |
|
|
|
char c = strtol(buf, NULL, 16); |
|
|
|
len_read++; |
|
|
|
#else |
|
|
|
while (!stream.available()) { TINY_GSM_YIELD(); } |
|
|
|
char c = stream.read(); |
|
|
|
len_read++; |
|
|
|
#endif |
|
|
|
sockets[mux]->rx.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) { |
|
|
|