Check possible mux numbers

Signed-off-by: Sara Damiano <sdamiano@stroudcenter.org>
This commit is contained in:
Sara Damiano
2020-02-18 17:54:04 -05:00
parent da5c7b4233
commit 7b40ee2f33
15 changed files with 120 additions and 68 deletions

View File

@@ -220,7 +220,7 @@ void loop() {
#endif #endif
#if TINY_GSM_TEST_TCP && defined TINY_GSM_MODEM_HAS_TCP #if TINY_GSM_TEST_TCP && defined TINY_GSM_MODEM_HAS_TCP
TinyGsmClient client(modem); TinyGsmClient client(modem, 0);
const int port = 80; const int port = 80;
DBG("Connecting to ", server); DBG("Connecting to ", server);
if (!client.connect(server, port)) { if (!client.connect(server, port)) {
@@ -232,16 +232,18 @@ void loop() {
client.print("Connection: close\r\n\r\n"); client.print("Connection: close\r\n\r\n");
// Wait for data to arrive // Wait for data to arrive
while (client.connected() && !client.available()) { uint32_t start = millis();
while (client.connected() && !client.available() &&
millis() - start < 30000L) {
delay(100); delay(100);
}; };
// Read data // Read data
uint32_t timeout = millis(); start = millis();
while (client.connected() && millis() - timeout < 5000L) { while (client.connected() && millis() - start < 5000L) {
while (client.available()) { while (client.available()) {
SerialMon.write(client.read()); SerialMon.write(client.read());
timeout = millis(); start = millis();
} }
} }
client.stop(); client.stop();
@@ -249,7 +251,7 @@ void loop() {
#endif #endif
#if TINY_GSM_TEST_SSL && defined TINY_GSM_MODEM_HAS_SSL #if TINY_GSM_TEST_SSL && defined TINY_GSM_MODEM_HAS_SSL
TinyGsmClientSecure secureClient(modem); TinyGsmClientSecure secureClient(modem, 1);
const int securePort = 443; const int securePort = 443;
DBG("Connecting to ", server); DBG("Connecting to ", server);
if (!secureClient.connect(server, securePort)) { if (!secureClient.connect(server, securePort)) {
@@ -261,16 +263,18 @@ void loop() {
secureClient.print("Connection: close\r\n\r\n"); secureClient.print("Connection: close\r\n\r\n");
// Wait for data to arrive // Wait for data to arrive
while (secureClient.connected() && !secureClient.available()) { uint32_t startS = millis();
while (secureClient.connected() && !secureClient.available() &&
millis() - startS < 30000L) {
delay(100); delay(100);
}; };
// Read data // Read data
uint32_t timeoutS = millis(); startS = millis();
while (secureClient.connected() && millis() - timeoutS < 5000L) { while (secureClient.connected() && millis() - startS < 5000L) {
while (secureClient.available()) { while (secureClient.available()) {
SerialMon.write(secureClient.read()); SerialMon.write(secureClient.read());
timeoutS = millis(); startS = millis();
} }
} }
secureClient.stop(); secureClient.stop();

View File

@@ -65,19 +65,23 @@ class TinyGsmBG96 : public TinyGsmModem<TinyGsmBG96>,
public: public:
GsmClientBG96() {} GsmClientBG96() {}
explicit GsmClientBG96(TinyGsmBG96& modem, uint8_t mux = 1) { explicit GsmClientBG96(TinyGsmBG96& modem, uint8_t mux = 0) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmBG96* modem, uint8_t mux = 1) { bool init(TinyGsmBG96* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
got_data = 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; return true;
} }
@@ -119,7 +123,7 @@ class TinyGsmBG96 : public TinyGsmModem<TinyGsmBG96>,
public: public:
GsmClientSecure() {} GsmClientSecure() {}
GsmClientSecure(TinyGsmBG96& modem, uint8_t mux = 1) GsmClientSecure(TinyGsmBG96& modem, uint8_t mux = 0)
: public GsmClient(modem, mux) : public GsmClient(modem, mux)
{} {}
@@ -298,7 +302,7 @@ class TinyGsmBG96 : public TinyGsmModem<TinyGsmBG96>,
*/ */
protected: protected:
bool modemConnect(const char* host, uint16_t port, uint8_t mux, 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!"); } if (ssl) { DBG("SSL not yet supported on this module!"); }
uint32_t timeout_ms = ((uint32_t)timeout_s) * 1000; uint32_t timeout_ms = ((uint32_t)timeout_s) * 1000;

View File

@@ -57,16 +57,20 @@ class TinyGsmESP8266 : public TinyGsmModem<TinyGsmESP8266>,
public: public:
GsmClientESP8266() {} GsmClientESP8266() {}
explicit GsmClientESP8266(TinyGsmESP8266& modem, uint8_t mux = 1) { explicit GsmClientESP8266(TinyGsmESP8266& modem, uint8_t mux = 0) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmESP8266* modem, uint8_t mux = 1) { bool init(TinyGsmESP8266* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_connected = false; 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; return true;
} }
@@ -107,7 +111,7 @@ class TinyGsmESP8266 : public TinyGsmModem<TinyGsmESP8266>,
public: public:
GsmClientSecureESP8266() {} GsmClientSecureESP8266() {}
explicit GsmClientSecureESP8266(TinyGsmESP8266& modem, uint8_t mux = 1) explicit GsmClientSecureESP8266(TinyGsmESP8266& modem, uint8_t mux = 0)
: GsmClientESP8266(modem, mux) {} : GsmClientESP8266(modem, mux) {}
public: public:

View File

@@ -59,16 +59,20 @@ class TinyGsmM590 : public TinyGsmModem<TinyGsmM590>,
public: public:
GsmClientM590() {} GsmClientM590() {}
explicit GsmClientM590(TinyGsmM590& modem, uint8_t mux = 1) { explicit GsmClientM590(TinyGsmM590& modem, uint8_t mux = 0) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmM590* modem, uint8_t mux = 1) { bool init(TinyGsmM590* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_connected = false; 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; return true;
} }

View File

@@ -69,17 +69,21 @@ class TinyGsmM95 : public TinyGsmModem<TinyGsmM95>,
public: public:
GsmClientM95() {} GsmClientM95() {}
explicit GsmClientM95(TinyGsmM95& modem, uint8_t mux = 1) { explicit GsmClientM95(TinyGsmM95& modem, uint8_t mux = 0) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmM95* modem, uint8_t mux = 1) { bool init(TinyGsmM95* modem, uint8_t 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
sock_connected = false; 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; return true;
} }
@@ -123,7 +127,7 @@ class TinyGsmM95 : public TinyGsmModem<TinyGsmM95>,
public: public:
GsmClientSecure() {} GsmClientSecure() {}
GsmClientSecure(TinyGsmm95& modem, uint8_t mux = 1) GsmClientSecure(TinyGsmm95& modem, uint8_t mux = 0)
: GsmClient(modem, mux) : GsmClient(modem, mux)
{} {}

View File

@@ -68,17 +68,21 @@ class TinyGsmMC60 : public TinyGsmModem<TinyGsmMC60>,
public: public:
GsmClientMC60() {} GsmClientMC60() {}
explicit GsmClientMC60(TinyGsmMC60& modem, uint8_t mux = 1) { explicit GsmClientMC60(TinyGsmMC60& modem, uint8_t mux = 0) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmMC60* modem, uint8_t mux = 1) { bool init(TinyGsmMC60* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
sock_connected = false; 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; return true;
} }
@@ -122,7 +126,7 @@ class TinyGsmMC60 : public TinyGsmModem<TinyGsmMC60>,
public: public:
GsmClientSecure() {} GsmClientSecure() {}
GsmClientSecure(TinyGsmMC60& modem, uint8_t mux = 1) GsmClientSecure(TinyGsmMC60& modem, uint8_t mux = 0)
: GsmClient(modem, mux) : GsmClient(modem, mux)
{} {}

View File

@@ -74,13 +74,17 @@ class TinyGsmSim5360 : public TinyGsmModem<TinyGsmSim5360>,
bool init(TinyGsmSim5360* modem, uint8_t mux = 0) { bool init(TinyGsmSim5360* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
got_data = 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; return true;
} }
@@ -122,7 +126,7 @@ class TinyGsmSim5360 : public TinyGsmModem<TinyGsmSim5360>,
public: public:
GsmClientSecureSim5360() {} GsmClientSecureSim5360() {}
explicit GsmClientSecureSim5360(TinyGsmSim5360& modem, uint8_t mux = 1) explicit GsmClientSecureSim5360(TinyGsmSim5360& modem, uint8_t mux = 0)
: GsmClientSim5360(modem, mux) {} : GsmClientSim5360(modem, mux) {}
public: public:

View File

@@ -65,19 +65,23 @@ class TinyGsmSim7000 : public TinyGsmModem<TinyGsmSim7000>,
public: public:
GsmClientSim7000() {} GsmClientSim7000() {}
explicit GsmClientSim7000(TinyGsmSim7000& modem, uint8_t mux = 1) { explicit GsmClientSim7000(TinyGsmSim7000& modem, uint8_t mux = 0) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmSim7000* modem, uint8_t mux = 1) { bool init(TinyGsmSim7000* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
got_data = 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; return true;
} }
@@ -119,7 +123,7 @@ class TinyGsmSim7000 : public TinyGsmModem<TinyGsmSim7000>,
public: public:
GsmClientSecure() {} GsmClientSecure() {}
GsmClientSecure(TinyGsmSim7000& modem, uint8_t mux = 1) GsmClientSecure(TinyGsmSim7000& modem, uint8_t mux = 0)
: public GsmClient(modem, mux) : public GsmClient(modem, mux)
{} {}

View File

@@ -77,13 +77,17 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
bool init(TinyGsmSim7600* modem, uint8_t mux = 0) { bool init(TinyGsmSim7600* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
got_data = 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; return true;
} }
@@ -120,12 +124,12 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
*/ */
/*TODO(?)) /*TODO(?))
class GsmClientSecureSIM7000 : public GsmClientSim7000 class GsmClientSecureSIM7600 : public GsmClientSim7600
{ {
public: public:
GsmClientSecure() {} GsmClientSecure() {}
GsmClientSecure(TinyGsmSim7000& modem, uint8_t mux = 1) GsmClientSecure(TinyGsmSim7600& modem, uint8_t mux = 0)
: public GsmClient(modem, mux) : public GsmClient(modem, mux)
{} {}

View File

@@ -71,19 +71,23 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
public: public:
GsmClientSim800() {} GsmClientSim800() {}
explicit GsmClientSim800(TinyGsmSim800& modem, uint8_t mux = 1) { explicit GsmClientSim800(TinyGsmSim800& modem, uint8_t mux = 0) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmSim800* modem, uint8_t mux = 1) { bool init(TinyGsmSim800* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
got_data = 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; return true;
} }
@@ -123,7 +127,7 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
public: public:
GsmClientSecureSim800() {} GsmClientSecureSim800() {}
explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 1) explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 0)
: GsmClientSim800(modem, mux) {} : GsmClientSim800(modem, mux) {}
public: public:

View File

@@ -80,20 +80,24 @@ class TinyGsmSaraR4 : public TinyGsmModem<TinyGsmSaraR4>,
bool init(TinyGsmSaraR4* modem, uint8_t mux = 0) { bool init(TinyGsmSaraR4* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
got_data = 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; return true;
} }
public: public:
virtual int connect(const char* host, uint16_t port, int timeout_s) { virtual int connect(const char* host, uint16_t port, int timeout_s) {
stop(); // stop(); // DON'T stop!
TINY_GSM_YIELD(); TINY_GSM_YIELD();
rx.clear(); rx.clear();
@@ -168,12 +172,12 @@ class TinyGsmSaraR4 : public TinyGsmModem<TinyGsmSaraR4>,
public: public:
GsmClientSecureR4() {} GsmClientSecureR4() {}
explicit GsmClientSecureR4(TinyGsmSaraR4& modem, uint8_t mux = 1) explicit GsmClientSecureR4(TinyGsmSaraR4& modem, uint8_t mux = 0)
: GsmClientSaraR4(modem, mux) {} : GsmClientSaraR4(modem, mux) {}
public: public:
int connect(const char* host, uint16_t port, int timeout_s) override { int connect(const char* host, uint16_t port, int timeout_s) override {
stop(); // stop(); // DON'T stop!
TINY_GSM_YIELD(); TINY_GSM_YIELD();
rx.clear(); rx.clear();
uint8_t oldMux = mux; uint8_t oldMux = mux;

View File

@@ -85,7 +85,6 @@ class TinyGsmSequansMonarch
bool init(TinyGsmSequansMonarch* modem, uint8_t mux = 1) { bool init(TinyGsmSequansMonarch* modem, uint8_t mux = 1) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
@@ -93,6 +92,11 @@ class TinyGsmSequansMonarch
// adjust for zero indexed socket array vs Sequans' 1 indexed mux numbers // adjust for zero indexed socket array vs Sequans' 1 indexed mux numbers
// using modulus will force 6 back to 0 // 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; at->sockets[mux % TINY_GSM_MUX_COUNT] = this;
return true; return true;

View File

@@ -80,20 +80,24 @@ class TinyGsmUBLOX : public TinyGsmModem<TinyGsmUBLOX>,
bool init(TinyGsmUBLOX* modem, uint8_t mux = 0) { bool init(TinyGsmUBLOX* modem, uint8_t mux = 0) {
this->at = modem; this->at = modem;
this->mux = mux;
sock_available = 0; sock_available = 0;
prev_check = 0; prev_check = 0;
sock_connected = false; sock_connected = false;
got_data = 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; return true;
} }
public: public:
virtual int connect(const char* host, uint16_t port, int timeout_s) { virtual int connect(const char* host, uint16_t port, int timeout_s) {
stop(); // stop(); // DON'T stop!
TINY_GSM_YIELD(); TINY_GSM_YIELD();
rx.clear(); rx.clear();
@@ -135,12 +139,12 @@ class TinyGsmUBLOX : public TinyGsmModem<TinyGsmUBLOX>,
public: public:
GsmClientSecureUBLOX() {} GsmClientSecureUBLOX() {}
explicit GsmClientSecureUBLOX(TinyGsmUBLOX& modem, uint8_t mux = 1) explicit GsmClientSecureUBLOX(TinyGsmUBLOX& modem, uint8_t mux = 0)
: GsmClientUBLOX(modem, mux) {} : GsmClientUBLOX(modem, mux) {}
public: public:
int connect(const char* host, uint16_t port, int timeout_s) override { int connect(const char* host, uint16_t port, int timeout_s) override {
stop(); // stop(); // DON'T stop!
TINY_GSM_YIELD(); TINY_GSM_YIELD();
rx.clear(); rx.clear();
uint8_t oldMux = mux; uint8_t oldMux = mux;
@@ -288,7 +292,7 @@ class TinyGsmUBLOX : public TinyGsmModem<TinyGsmUBLOX>,
protected: protected:
bool gprsConnectImpl(const char* apn, const char* user = NULL, bool gprsConnectImpl(const char* apn, const char* user = NULL,
const char* pwd = NULL) { const char* pwd = NULL) {
gprsDisconnect(); // gprsDisconnect();
sendAT(GF("+CGATT=1")); // attach to GPRS sendAT(GF("+CGATT=1")); // attach to GPRS
if (waitResponse(360000L) != 1) { return false; } if (waitResponse(360000L) != 1) { return false; }

View File

@@ -97,12 +97,12 @@ class TinyGsmXBee : public TinyGsmModem<TinyGsmXBee>,
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsmXBee* modem, uint8_t mux = 0) { bool init(TinyGsmXBee* modem, uint8_t) {
this->at = modem; this->at = modem;
this->mux = mux; this->mux = 0;
sock_connected = false; sock_connected = false;
at->sockets[mux] = this; at->sockets[0] = this;
return true; return true;
} }

View File

@@ -47,7 +47,7 @@ class TinyGsmSSL {
public: public:
GsmClientSecureSim800() {} GsmClientSecureSim800() {}
explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 1) explicit GsmClientSecureSim800(TinyGsmSim800& modem, uint8_t mux = 0)
: GsmClientSim800(modem, mux) {} : GsmClientSim800(modem, mux) {}
public: public: