From 78c21aa6ae32fa4b18479d41d96a05e3ed3c63be Mon Sep 17 00:00:00 2001 From: Volodymyr Shymanskyy Date: Tue, 17 Jan 2017 12:09:35 +0200 Subject: [PATCH] Fix #6 --- TinyGsmClientM590.h | 7 +++---- TinyGsmClientSIM800.h | 2 +- TinyGsmCommon.h | 12 ++++++++++++ TinyWiFiClientESP8266.h | 23 ++++++++++++++--------- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/TinyGsmClientM590.h b/TinyGsmClientM590.h index a06e2f6..4fe438e 100644 --- a/TinyGsmClientM590.h +++ b/TinyGsmClientM590.h @@ -53,14 +53,13 @@ class GsmClient : public Client typedef TinyGsmFifo RxFifo; public: - GsmClient() {} - GsmClient(TinyGsm& modem, uint8_t mux = 0) { + GsmClient(TinyGsm& modem, uint8_t mux = 1) { init(&modem, mux); } - bool init(TinyGsm* modem, uint8_t mux = 0) { + bool init(TinyGsm* modem, uint8_t mux = 1) { this->at = modem; this->mux = mux; sock_connected = false; @@ -119,7 +118,7 @@ public: TINY_GSM_YIELD(); size_t cnt = 0; while (cnt < size) { - size_t chunk = min(size-cnt, rx.size()); + size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); buf += chunk; diff --git a/TinyGsmClientSIM800.h b/TinyGsmClientSIM800.h index 658ff76..d92697b 100644 --- a/TinyGsmClientSIM800.h +++ b/TinyGsmClientSIM800.h @@ -122,7 +122,7 @@ public: at->maintain(); size_t cnt = 0; while (cnt < size) { - size_t chunk = min(size-cnt, rx.size()); + size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); buf += chunk; diff --git a/TinyGsmCommon.h b/TinyGsmCommon.h index 7455274..a018d8e 100644 --- a/TinyGsmCommon.h +++ b/TinyGsmCommon.h @@ -56,4 +56,16 @@ namespace { #define DBG(...) #endif +template +const T& TinyGsmMin(const T& a, const T& b) +{ + return (b < a) ? b : a; +} + +template +const T& TinyGsmMax(const T& a, const T& b) +{ + return (b < a) ? a : b; +} + #endif diff --git a/TinyWiFiClientESP8266.h b/TinyWiFiClientESP8266.h index 4ac9ea3..a308e84 100644 --- a/TinyWiFiClientESP8266.h +++ b/TinyWiFiClientESP8266.h @@ -37,24 +37,25 @@ class GsmClient : public Client typedef TinyGsmFifo RxFifo; public: - GsmClient() { - init(NULL, -1); - } + GsmClient() {} - GsmClient(TinyGsm& at, uint8_t mux = 1) { - init(&at, mux); + GsmClient(TinyGsm& modem, uint8_t mux = 1) { + init(&modem, mux); } - bool init(TinyGsm* at, uint8_t mux = 1) { - this->at = at; + bool init(TinyGsm* modem, uint8_t mux = 1) { + this->at = modem; this->mux = mux; - at->sockets[mux] = this; sock_connected = false; + + at->sockets[mux] = this; + return true; } public: virtual int connect(const char *host, uint16_t port) { + TINY_GSM_YIELD(); rx.clear(); sock_connected = at->modemConnect(host, port, mux); return sock_connected; @@ -73,12 +74,14 @@ public: } virtual void stop() { + TINY_GSM_YIELD(); at->sendAT(GF("+CIPCLOSE="), mux); sock_connected = false; at->waitResponse(); } virtual size_t write(const uint8_t *buf, size_t size) { + TINY_GSM_YIELD(); //at->maintain(); return at->modemSend(buf, size, mux); } @@ -88,6 +91,7 @@ public: } virtual int available() { + TINY_GSM_YIELD(); if (!rx.size()) { at->maintain(); } @@ -95,9 +99,10 @@ public: } virtual int read(uint8_t *buf, size_t size) { + TINY_GSM_YIELD(); size_t cnt = 0; while (cnt < size) { - size_t chunk = min(size-cnt, rx.size()); + size_t chunk = TinyGsmMin(size-cnt, rx.size()); if (chunk > 0) { rx.get(buf, chunk); buf += chunk;