From ef11cf03ef0d67d86107d2e2ff19bc3fa793a81e Mon Sep 17 00:00:00 2001 From: Bascy Date: Wed, 5 Jan 2022 21:07:05 +0100 Subject: [PATCH 1/2] Added createClient() methods to Sim7000 and Sim7000SSL (#623) --- src/TinyGsmClientSIM7000.h | 18 ++++++++++++++++++ src/TinyGsmClientSIM7000SSL.h | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/TinyGsmClientSIM7000.h b/src/TinyGsmClientSIM7000.h index e7088457..5fcdc230 100644 --- a/src/TinyGsmClientSIM7000.h +++ b/src/TinyGsmClientSIM7000.h @@ -38,6 +38,11 @@ class TinyGsmSim7000 : public TinyGsmSim70xx, init(&modem, mux); } + virtual ~GsmClientSim7000() { + stop(); + at->sockets[mux] = nullptr; + } + bool init(TinyGsmSim7000* modem, uint8_t mux = 0) { this->at = modem; sock_available = 0; @@ -56,6 +61,19 @@ class TinyGsmSim7000 : public TinyGsmSim70xx, } public: + + GsmClientSim7000* createClient() { + for (uint8_t idx = 0; idx < TINY_GSM_MUX_COUNT; idx++) { + if (!sockets[idx]) { + GsmClientSim7000* client = new GsmClientSim7000(); + client->init(this, idx); + return client; + } + } + DBG(GF("ERROR: Cannot create client, TINYGSM_MUX_COUNT ["), TINY_GSM_MUX_COUNT, GF("] exceeded.")); + return nullptr; + } + virtual int connect(const char* host, uint16_t port, int timeout_s) { stop(); TINY_GSM_YIELD(); diff --git a/src/TinyGsmClientSIM7000SSL.h b/src/TinyGsmClientSIM7000SSL.h index 2f88e893..6f873c5b 100644 --- a/src/TinyGsmClientSIM7000SSL.h +++ b/src/TinyGsmClientSIM7000SSL.h @@ -41,6 +41,23 @@ class TinyGsmSim7000SSL init(&modem, mux); } + virtual ~GsmClientSim7000SSL() { + stop(); + at->sockets[mux] = nullptr; + } + + GsmClientSim7000SSL* createClient() { + for (uint8_t idx = 0; idx < TINY_GSM_MUX_COUNT; idx++) { + if (!sockets[idx]) { + GsmClientSim7000SSL* client = new GsmClientSim7000SSL(); + client->init(this, idx); + return client; + } + } + DBG(GF("ERROR: Cannot create client, TINYGSM_MUX_COUNT ["), TINY_GSM_MUX_COUNT, GF("] exceeded.")); + return nullptr; + } + bool init(TinyGsmSim7000SSL* modem, uint8_t mux = 0) { this->at = modem; sock_available = 0; From d78705671228a1113c08af1bf91ce9ed21508282 Mon Sep 17 00:00:00 2001 From: Bascy Date: Tue, 18 Jan 2022 21:08:40 +0100 Subject: [PATCH 2/2] Add ssl parameter to createClient() --- src/TinyGsmClientSIM7000SSL.h | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/TinyGsmClientSIM7000SSL.h b/src/TinyGsmClientSIM7000SSL.h index 6f873c5b..bf14cb39 100644 --- a/src/TinyGsmClientSIM7000SSL.h +++ b/src/TinyGsmClientSIM7000SSL.h @@ -46,18 +46,6 @@ class TinyGsmSim7000SSL at->sockets[mux] = nullptr; } - GsmClientSim7000SSL* createClient() { - for (uint8_t idx = 0; idx < TINY_GSM_MUX_COUNT; idx++) { - if (!sockets[idx]) { - GsmClientSim7000SSL* client = new GsmClientSim7000SSL(); - client->init(this, idx); - return client; - } - } - DBG(GF("ERROR: Cannot create client, TINYGSM_MUX_COUNT ["), TINY_GSM_MUX_COUNT, GF("] exceeded.")); - return nullptr; - } - bool init(TinyGsmSim7000SSL* modem, uint8_t mux = 0) { this->at = modem; sock_available = 0; @@ -139,6 +127,20 @@ class TinyGsmSim7000SSL certificates() { memset(sockets, 0, sizeof(sockets)); } + + GsmClientSim7000SSL* createClient(bool ssl = false) { + for (uint8_t idx = 0; idx < TINY_GSM_MUX_COUNT; idx++) { + if (!sockets[idx]) { + GsmClientSim7000SSL* client = ssl + ? new GsmClientSecureSIM7000SSL() + : new GsmClientSim7000SSL(); + client->init(this, idx); + return client; + } + } + DBG(GF("ERROR: Cannot create client, TINYGSM_MUX_COUNT ["), TINY_GSM_MUX_COUNT, GF("] exceeded.")); + return nullptr; + } /* * Basic functions