From 7b40ee2f3342bd0b768e5c65e800eeb10b16b355 Mon Sep 17 00:00:00 2001 From: Sara Damiano Date: Tue, 18 Feb 2020 17:54:04 -0500 Subject: [PATCH] Check possible mux numbers Signed-off-by: Sara Damiano --- examples/AllFunctions/AllFunctions.ino | 24 ++++++++++++++---------- src/TinyGsmClientBG96.h | 16 ++++++++++------ src/TinyGsmClientESP8266.h | 14 +++++++++----- src/TinyGsmClientM590.h | 12 ++++++++---- src/TinyGsmClientM95.h | 14 +++++++++----- src/TinyGsmClientMC60.h | 14 +++++++++----- src/TinyGsmClientSIM5360.h | 10 +++++++--- src/TinyGsmClientSIM7000.h | 14 +++++++++----- src/TinyGsmClientSIM7600.h | 12 ++++++++---- src/TinyGsmClientSIM800.h | 14 +++++++++----- src/TinyGsmClientSaraR4.h | 14 +++++++++----- src/TinyGsmClientSequansMonarch.h | 6 +++++- src/TinyGsmClientUBLOX.h | 16 ++++++++++------ src/TinyGsmClientXBee.h | 6 +++--- src/TinyGsmSSL.tpp | 2 +- 15 files changed, 120 insertions(+), 68 deletions(-) diff --git a/examples/AllFunctions/AllFunctions.ino b/examples/AllFunctions/AllFunctions.ino index 7582ae7..241bd0c 100644 --- a/examples/AllFunctions/AllFunctions.ino +++ b/examples/AllFunctions/AllFunctions.ino @@ -220,7 +220,7 @@ void loop() { #endif #if TINY_GSM_TEST_TCP && defined TINY_GSM_MODEM_HAS_TCP - TinyGsmClient client(modem); + TinyGsmClient client(modem, 0); const int port = 80; DBG("Connecting to ", server); if (!client.connect(server, port)) { @@ -232,16 +232,18 @@ void loop() { client.print("Connection: close\r\n\r\n"); // Wait for data to arrive - while (client.connected() && !client.available()) { + uint32_t start = millis(); + while (client.connected() && !client.available() && + millis() - start < 30000L) { delay(100); }; // Read data - uint32_t timeout = millis(); - while (client.connected() && millis() - timeout < 5000L) { + start = millis(); + while (client.connected() && millis() - start < 5000L) { while (client.available()) { SerialMon.write(client.read()); - timeout = millis(); + start = millis(); } } client.stop(); @@ -249,7 +251,7 @@ void loop() { #endif #if TINY_GSM_TEST_SSL && defined TINY_GSM_MODEM_HAS_SSL - TinyGsmClientSecure secureClient(modem); + TinyGsmClientSecure secureClient(modem, 1); const int securePort = 443; DBG("Connecting to ", server); if (!secureClient.connect(server, securePort)) { @@ -261,16 +263,18 @@ void loop() { secureClient.print("Connection: close\r\n\r\n"); // Wait for data to arrive - while (secureClient.connected() && !secureClient.available()) { + uint32_t startS = millis(); + while (secureClient.connected() && !secureClient.available() && + millis() - startS < 30000L) { delay(100); }; // Read data - uint32_t timeoutS = millis(); - while (secureClient.connected() && millis() - timeoutS < 5000L) { + startS = millis(); + while (secureClient.connected() && millis() - startS < 5000L) { while (secureClient.available()) { SerialMon.write(secureClient.read()); - timeoutS = millis(); + startS = millis(); } } secureClient.stop(); diff --git a/src/TinyGsmClientBG96.h b/src/TinyGsmClientBG96.h index ca391c8..1951ff4 100644 --- a/src/TinyGsmClientBG96.h +++ b/src/TinyGsmClientBG96.h @@ -65,19 +65,23 @@ class TinyGsmBG96 : public TinyGsmModem, public: GsmClientBG96() {} - explicit GsmClientBG96(TinyGsmBG96& modem, uint8_t mux = 1) { + explicit GsmClientBG96(TinyGsmBG96& modem, uint8_t mux = 0) { init(&modem, mux); } - bool init(TinyGsmBG96* modem, uint8_t mux = 1) { + bool init(TinyGsmBG96* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; got_data = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -119,7 +123,7 @@ class TinyGsmBG96 : public TinyGsmModem, public: GsmClientSecure() {} - GsmClientSecure(TinyGsmBG96& modem, uint8_t mux = 1) + GsmClientSecure(TinyGsmBG96& modem, uint8_t mux = 0) : public GsmClient(modem, mux) {} @@ -298,7 +302,7 @@ class TinyGsmBG96 : public TinyGsmModem, */ protected: bool modemConnect(const char* host, uint16_t port, uint8_t mux, - bool ssl = false, int timeout_s = 20) { + bool ssl = false, int timeout_s = 150) { if (ssl) { DBG("SSL not yet supported on this module!"); } uint32_t timeout_ms = ((uint32_t)timeout_s) * 1000; diff --git a/src/TinyGsmClientESP8266.h b/src/TinyGsmClientESP8266.h index 209f00a..fc57cf7 100644 --- a/src/TinyGsmClientESP8266.h +++ b/src/TinyGsmClientESP8266.h @@ -57,16 +57,20 @@ class TinyGsmESP8266 : public TinyGsmModem, public: GsmClientESP8266() {} - explicit GsmClientESP8266(TinyGsmESP8266& modem, uint8_t mux = 1) { + explicit GsmClientESP8266(TinyGsmESP8266& modem, uint8_t mux = 0) { init(&modem, mux); } - bool init(TinyGsmESP8266* modem, uint8_t mux = 1) { + bool init(TinyGsmESP8266* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_connected = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -107,7 +111,7 @@ class TinyGsmESP8266 : public TinyGsmModem, public: GsmClientSecureESP8266() {} - explicit GsmClientSecureESP8266(TinyGsmESP8266& modem, uint8_t mux = 1) + explicit GsmClientSecureESP8266(TinyGsmESP8266& modem, uint8_t mux = 0) : GsmClientESP8266(modem, mux) {} public: diff --git a/src/TinyGsmClientM590.h b/src/TinyGsmClientM590.h index 750d797..7da804a 100644 --- a/src/TinyGsmClientM590.h +++ b/src/TinyGsmClientM590.h @@ -59,16 +59,20 @@ class TinyGsmM590 : public TinyGsmModem, public: GsmClientM590() {} - explicit GsmClientM590(TinyGsmM590& modem, uint8_t mux = 1) { + explicit GsmClientM590(TinyGsmM590& modem, uint8_t mux = 0) { init(&modem, mux); } - bool init(TinyGsmM590* modem, uint8_t mux = 1) { + bool init(TinyGsmM590* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_connected = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } diff --git a/src/TinyGsmClientM95.h b/src/TinyGsmClientM95.h index 3d7d2b6..cc7a480 100644 --- a/src/TinyGsmClientM95.h +++ b/src/TinyGsmClientM95.h @@ -69,17 +69,21 @@ class TinyGsmM95 : public TinyGsmModem, public: GsmClientM95() {} - explicit GsmClientM95(TinyGsmM95& modem, uint8_t mux = 1) { + explicit GsmClientM95(TinyGsmM95& modem, uint8_t mux = 0) { init(&modem, mux); } - bool init(TinyGsmM95* modem, uint8_t mux = 1) { + bool init(TinyGsmM95* modem, uint8_t 0) { this->at = modem; - this->mux = mux; sock_available = 0; sock_connected = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -123,7 +127,7 @@ class TinyGsmM95 : public TinyGsmModem, public: GsmClientSecure() {} - GsmClientSecure(TinyGsmm95& modem, uint8_t mux = 1) + GsmClientSecure(TinyGsmm95& modem, uint8_t mux = 0) : GsmClient(modem, mux) {} diff --git a/src/TinyGsmClientMC60.h b/src/TinyGsmClientMC60.h index 59c42af..8314316 100644 --- a/src/TinyGsmClientMC60.h +++ b/src/TinyGsmClientMC60.h @@ -68,17 +68,21 @@ class TinyGsmMC60 : public TinyGsmModem, public: GsmClientMC60() {} - explicit GsmClientMC60(TinyGsmMC60& modem, uint8_t mux = 1) { + explicit GsmClientMC60(TinyGsmMC60& modem, uint8_t mux = 0) { init(&modem, mux); } - bool init(TinyGsmMC60* modem, uint8_t mux = 1) { + bool init(TinyGsmMC60* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; sock_connected = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -122,7 +126,7 @@ class TinyGsmMC60 : public TinyGsmModem, public: GsmClientSecure() {} - GsmClientSecure(TinyGsmMC60& modem, uint8_t mux = 1) + GsmClientSecure(TinyGsmMC60& modem, uint8_t mux = 0) : GsmClient(modem, mux) {} diff --git a/src/TinyGsmClientSIM5360.h b/src/TinyGsmClientSIM5360.h index 6a8d17f..a53a725 100644 --- a/src/TinyGsmClientSIM5360.h +++ b/src/TinyGsmClientSIM5360.h @@ -74,13 +74,17 @@ class TinyGsmSim5360 : public TinyGsmModem, bool init(TinyGsmSim5360* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; got_data = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -122,7 +126,7 @@ class TinyGsmSim5360 : public TinyGsmModem, public: GsmClientSecureSim5360() {} - explicit GsmClientSecureSim5360(TinyGsmSim5360& modem, uint8_t mux = 1) + explicit GsmClientSecureSim5360(TinyGsmSim5360& modem, uint8_t mux = 0) : GsmClientSim5360(modem, mux) {} public: diff --git a/src/TinyGsmClientSIM7000.h b/src/TinyGsmClientSIM7000.h index b278b88..6bb23ba 100644 --- a/src/TinyGsmClientSIM7000.h +++ b/src/TinyGsmClientSIM7000.h @@ -65,19 +65,23 @@ class TinyGsmSim7000 : public TinyGsmModem, public: GsmClientSim7000() {} - explicit GsmClientSim7000(TinyGsmSim7000& modem, uint8_t mux = 1) { + explicit GsmClientSim7000(TinyGsmSim7000& modem, uint8_t mux = 0) { init(&modem, mux); } - bool init(TinyGsmSim7000* modem, uint8_t mux = 1) { + bool init(TinyGsmSim7000* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; got_data = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -119,7 +123,7 @@ class TinyGsmSim7000 : public TinyGsmModem, public: GsmClientSecure() {} - GsmClientSecure(TinyGsmSim7000& modem, uint8_t mux = 1) + GsmClientSecure(TinyGsmSim7000& modem, uint8_t mux = 0) : public GsmClient(modem, mux) {} diff --git a/src/TinyGsmClientSIM7600.h b/src/TinyGsmClientSIM7600.h index e4103ee..75a562d 100644 --- a/src/TinyGsmClientSIM7600.h +++ b/src/TinyGsmClientSIM7600.h @@ -77,13 +77,17 @@ class TinyGsmSim7600 : public TinyGsmModem, bool init(TinyGsmSim7600* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; got_data = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -120,12 +124,12 @@ class TinyGsmSim7600 : public TinyGsmModem, */ /*TODO(?)) - class GsmClientSecureSIM7000 : public GsmClientSim7000 + class GsmClientSecureSIM7600 : public GsmClientSim7600 { public: GsmClientSecure() {} - GsmClientSecure(TinyGsmSim7000& modem, uint8_t mux = 1) + GsmClientSecure(TinyGsmSim7600& modem, uint8_t mux = 0) : public GsmClient(modem, mux) {} diff --git a/src/TinyGsmClientSIM800.h b/src/TinyGsmClientSIM800.h index 5285b19..df5f3de 100644 --- a/src/TinyGsmClientSIM800.h +++ b/src/TinyGsmClientSIM800.h @@ -71,19 +71,23 @@ class TinyGsmSim800 : public TinyGsmModem, public: GsmClientSim800() {} - explicit GsmClientSim800(TinyGsmSim800& modem, uint8_t mux = 1) { + explicit GsmClientSim800(TinyGsmSim800& modem, uint8_t mux = 0) { init(&modem, mux); } - bool init(TinyGsmSim800* modem, uint8_t mux = 1) { + bool init(TinyGsmSim800* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; got_data = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } @@ -123,7 +127,7 @@ class TinyGsmSim800 : public TinyGsmModem, public: GsmClientSecureSim800() {} - explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 1) + explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 0) : GsmClientSim800(modem, mux) {} public: diff --git a/src/TinyGsmClientSaraR4.h b/src/TinyGsmClientSaraR4.h index e9b55fb..601f2a8 100644 --- a/src/TinyGsmClientSaraR4.h +++ b/src/TinyGsmClientSaraR4.h @@ -80,20 +80,24 @@ class TinyGsmSaraR4 : public TinyGsmModem, bool init(TinyGsmSaraR4* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; got_data = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } public: virtual int connect(const char* host, uint16_t port, int timeout_s) { - stop(); + // stop(); // DON'T stop! TINY_GSM_YIELD(); rx.clear(); @@ -168,12 +172,12 @@ class TinyGsmSaraR4 : public TinyGsmModem, public: GsmClientSecureR4() {} - explicit GsmClientSecureR4(TinyGsmSaraR4& modem, uint8_t mux = 1) + explicit GsmClientSecureR4(TinyGsmSaraR4& modem, uint8_t mux = 0) : GsmClientSaraR4(modem, mux) {} public: int connect(const char* host, uint16_t port, int timeout_s) override { - stop(); + // stop(); // DON'T stop! TINY_GSM_YIELD(); rx.clear(); uint8_t oldMux = mux; diff --git a/src/TinyGsmClientSequansMonarch.h b/src/TinyGsmClientSequansMonarch.h index 891e0de..7f77394 100644 --- a/src/TinyGsmClientSequansMonarch.h +++ b/src/TinyGsmClientSequansMonarch.h @@ -85,7 +85,6 @@ class TinyGsmSequansMonarch bool init(TinyGsmSequansMonarch* modem, uint8_t mux = 1) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; @@ -93,6 +92,11 @@ class TinyGsmSequansMonarch // adjust for zero indexed socket array vs Sequans' 1 indexed mux numbers // using modulus will force 6 back to 0 + if (mux >= 1 && mux <= TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT) + 1; + } at->sockets[mux % TINY_GSM_MUX_COUNT] = this; return true; diff --git a/src/TinyGsmClientUBLOX.h b/src/TinyGsmClientUBLOX.h index b486370..c0bd5e3 100644 --- a/src/TinyGsmClientUBLOX.h +++ b/src/TinyGsmClientUBLOX.h @@ -80,20 +80,24 @@ class TinyGsmUBLOX : public TinyGsmModem, bool init(TinyGsmUBLOX* modem, uint8_t mux = 0) { this->at = modem; - this->mux = mux; sock_available = 0; prev_check = 0; sock_connected = false; got_data = false; - at->sockets[mux] = this; + if (mux < TINY_GSM_MUX_COUNT) { + this->mux = mux; + } else { + this->mux = (mux % TINY_GSM_MUX_COUNT); + } + at->sockets[this->mux] = this; return true; } public: virtual int connect(const char* host, uint16_t port, int timeout_s) { - stop(); + // stop(); // DON'T stop! TINY_GSM_YIELD(); rx.clear(); @@ -135,12 +139,12 @@ class TinyGsmUBLOX : public TinyGsmModem, public: GsmClientSecureUBLOX() {} - explicit GsmClientSecureUBLOX(TinyGsmUBLOX& modem, uint8_t mux = 1) + explicit GsmClientSecureUBLOX(TinyGsmUBLOX& modem, uint8_t mux = 0) : GsmClientUBLOX(modem, mux) {} public: int connect(const char* host, uint16_t port, int timeout_s) override { - stop(); + // stop(); // DON'T stop! TINY_GSM_YIELD(); rx.clear(); uint8_t oldMux = mux; @@ -288,7 +292,7 @@ class TinyGsmUBLOX : public TinyGsmModem, protected: bool gprsConnectImpl(const char* apn, const char* user = NULL, const char* pwd = NULL) { - gprsDisconnect(); + // gprsDisconnect(); sendAT(GF("+CGATT=1")); // attach to GPRS if (waitResponse(360000L) != 1) { return false; } diff --git a/src/TinyGsmClientXBee.h b/src/TinyGsmClientXBee.h index 788c134..b08d5c2 100644 --- a/src/TinyGsmClientXBee.h +++ b/src/TinyGsmClientXBee.h @@ -97,12 +97,12 @@ class TinyGsmXBee : public TinyGsmModem, init(&modem, mux); } - bool init(TinyGsmXBee* modem, uint8_t mux = 0) { + bool init(TinyGsmXBee* modem, uint8_t) { this->at = modem; - this->mux = mux; + this->mux = 0; sock_connected = false; - at->sockets[mux] = this; + at->sockets[0] = this; return true; } diff --git a/src/TinyGsmSSL.tpp b/src/TinyGsmSSL.tpp index d503fbc..f33a579 100644 --- a/src/TinyGsmSSL.tpp +++ b/src/TinyGsmSSL.tpp @@ -47,7 +47,7 @@ class TinyGsmSSL { public: GsmClientSecureSim800() {} - explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 1) + explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 0) : GsmClientSim800(modem, mux) {} public: