Need more truth-checks
Signed-off-by: Sara Damiano <sdamiano@stroudcenter.org>
This commit is contained in:
@@ -519,7 +519,7 @@ class TinyGsmMC60 : public TinyGsmModem<TinyGsmMC60>,
|
|||||||
index = 6;
|
index = 6;
|
||||||
goto finish;
|
goto finish;
|
||||||
} else if (data.endsWith(
|
} else if (data.endsWith(
|
||||||
GF(GSM_NL "+QIRD:"))) { // TODO(?): QIRD? or QIRDI?
|
GF(GSM_NL "+QIRDI:"))) { // TODO(?): QIRD? or QIRDI?
|
||||||
// +QIRDI: <id>,<sc>,<sid>,<num>,<len>,< tlen>
|
// +QIRDI: <id>,<sc>,<sid>,<num>,<len>,< tlen>
|
||||||
streamSkipUntil(','); // Skip the context
|
streamSkipUntil(','); // Skip the context
|
||||||
streamSkipUntil(','); // Skip the role
|
streamSkipUntil(','); // Skip the role
|
||||||
@@ -529,7 +529,8 @@ class TinyGsmMC60 : public TinyGsmModem<TinyGsmMC60>,
|
|||||||
int8_t num_packets = streamGetIntBefore(',');
|
int8_t num_packets = streamGetIntBefore(',');
|
||||||
// read the length of the current packet
|
// read the length of the current packet
|
||||||
int16_t len_packet = streamGetIntBefore('\n');
|
int16_t len_packet = streamGetIntBefore('\n');
|
||||||
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux] &&
|
||||||
|
num_packets >= 0 && len_packet >= 0) {
|
||||||
sockets[mux]->sock_available = len_packet * num_packets;
|
sockets[mux]->sock_available = len_packet * num_packets;
|
||||||
}
|
}
|
||||||
data = "";
|
data = "";
|
||||||
|
@@ -646,7 +646,7 @@ class TinyGsmSim5360 : public TinyGsmModem<TinyGsmSim5360>,
|
|||||||
int16_t len = streamGetIntBefore('\n');
|
int16_t len = streamGetIntBefore('\n');
|
||||||
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
||||||
sockets[mux]->got_data = true;
|
sockets[mux]->got_data = true;
|
||||||
sockets[mux]->sock_available = len;
|
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
|
||||||
}
|
}
|
||||||
data = "";
|
data = "";
|
||||||
// DBG("### Got Data:", len, "on", mux);
|
// DBG("### Got Data:", len, "on", mux);
|
||||||
|
@@ -677,7 +677,7 @@ class TinyGsmSim7000 : public TinyGsmModem<TinyGsmSim7000>,
|
|||||||
int16_t len = streamGetIntBefore('\n');
|
int16_t len = streamGetIntBefore('\n');
|
||||||
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
||||||
sockets[mux]->got_data = true;
|
sockets[mux]->got_data = true;
|
||||||
sockets[mux]->sock_available = len;
|
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
|
||||||
}
|
}
|
||||||
data = "";
|
data = "";
|
||||||
// DBG("### Got Data:", len, "on", mux);
|
// DBG("### Got Data:", len, "on", mux);
|
||||||
|
@@ -736,7 +736,7 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
|
|||||||
int16_t len = streamGetIntBefore('\n');
|
int16_t len = streamGetIntBefore('\n');
|
||||||
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
||||||
sockets[mux]->got_data = true;
|
sockets[mux]->got_data = true;
|
||||||
sockets[mux]->sock_available = len;
|
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
|
||||||
}
|
}
|
||||||
data = "";
|
data = "";
|
||||||
// DBG("### Got Data:", len, "on", mux);
|
// DBG("### Got Data:", len, "on", mux);
|
||||||
|
@@ -652,7 +652,7 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
|
|||||||
int16_t len = streamGetIntBefore('\n');
|
int16_t len = streamGetIntBefore('\n');
|
||||||
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
||||||
sockets[mux]->got_data = true;
|
sockets[mux]->got_data = true;
|
||||||
sockets[mux]->sock_available = len;
|
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
|
||||||
}
|
}
|
||||||
data = "";
|
data = "";
|
||||||
// DBG("### Got Data:", len, "on", mux);
|
// DBG("### Got Data:", len, "on", mux);
|
||||||
|
@@ -828,7 +828,8 @@ class TinyGsmSaraR4 : public TinyGsmModem<TinyGsmSaraR4>,
|
|||||||
int16_t len = streamGetIntBefore('\n');
|
int16_t len = streamGetIntBefore('\n');
|
||||||
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
||||||
sockets[mux]->got_data = true;
|
sockets[mux]->got_data = true;
|
||||||
sockets[mux]->sock_available = len;
|
// max size is 1024
|
||||||
|
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
|
||||||
}
|
}
|
||||||
data = "";
|
data = "";
|
||||||
DBG("### URC Data Received:", len, "on", mux);
|
DBG("### URC Data Received:", len, "on", mux);
|
||||||
|
@@ -760,7 +760,8 @@ class TinyGsmUBLOX : public TinyGsmModem<TinyGsmUBLOX>,
|
|||||||
int16_t len = streamGetIntBefore('\n');
|
int16_t len = streamGetIntBefore('\n');
|
||||||
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
|
||||||
sockets[mux]->got_data = true;
|
sockets[mux]->got_data = true;
|
||||||
sockets[mux]->sock_available = len;
|
// max size is 1024
|
||||||
|
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
|
||||||
}
|
}
|
||||||
data = "";
|
data = "";
|
||||||
DBG("### URC Data Received:", len, "on", mux);
|
DBG("### URC Data Received:", len, "on", mux);
|
||||||
|
@@ -268,10 +268,11 @@ class TinyGsmModem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline int16_t streamGetIntBefore(char lastChar) {
|
inline int16_t streamGetIntBefore(char lastChar) {
|
||||||
char buf[6];
|
char buf[7];
|
||||||
size_t bytesRead = thisModem().stream.readBytesUntil(
|
size_t bytesRead = thisModem().stream.readBytesUntil(
|
||||||
lastChar, buf, static_cast<size_t>(6));
|
lastChar, buf, static_cast<size_t>(7));
|
||||||
if (bytesRead) {
|
// if we read 7 or more bytes, it's an overflow
|
||||||
|
if (bytesRead && bytesRead < 7) {
|
||||||
buf[bytesRead] = '\0';
|
buf[bytesRead] = '\0';
|
||||||
int16_t res = atoi(buf);
|
int16_t res = atoi(buf);
|
||||||
return res;
|
return res;
|
||||||
|
Reference in New Issue
Block a user