Browse Source

Fix #6

v_master
Volodymyr Shymanskyy 8 years ago
parent
commit
78c21aa6ae
4 changed files with 30 additions and 14 deletions
  1. +3
    -4
      TinyGsmClientM590.h
  2. +1
    -1
      TinyGsmClientSIM800.h
  3. +12
    -0
      TinyGsmCommon.h
  4. +14
    -9
      TinyWiFiClientESP8266.h

+ 3
- 4
TinyGsmClientM590.h View File

@ -53,14 +53,13 @@ class GsmClient : public Client
typedef TinyGsmFifo<uint8_t, TINY_GSM_RX_BUFFER> RxFifo; typedef TinyGsmFifo<uint8_t, TINY_GSM_RX_BUFFER> RxFifo;
public: public:
GsmClient() {} GsmClient() {}
GsmClient(TinyGsm& modem, uint8_t mux = 0) {
GsmClient(TinyGsm& modem, uint8_t mux = 1) {
init(&modem, mux); init(&modem, mux);
} }
bool init(TinyGsm* modem, uint8_t mux = 0) {
bool init(TinyGsm* modem, uint8_t mux = 1) {
this->at = modem; this->at = modem;
this->mux = mux; this->mux = mux;
sock_connected = false; sock_connected = false;
@ -119,7 +118,7 @@ public:
TINY_GSM_YIELD(); TINY_GSM_YIELD();
size_t cnt = 0; size_t cnt = 0;
while (cnt < size) { while (cnt < size) {
size_t chunk = min(size-cnt, rx.size());
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) { if (chunk > 0) {
rx.get(buf, chunk); rx.get(buf, chunk);
buf += chunk; buf += chunk;


+ 1
- 1
TinyGsmClientSIM800.h View File

@ -122,7 +122,7 @@ public:
at->maintain(); at->maintain();
size_t cnt = 0; size_t cnt = 0;
while (cnt < size) { while (cnt < size) {
size_t chunk = min(size-cnt, rx.size());
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) { if (chunk > 0) {
rx.get(buf, chunk); rx.get(buf, chunk);
buf += chunk; buf += chunk;


+ 12
- 0
TinyGsmCommon.h View File

@ -56,4 +56,16 @@ namespace {
#define DBG(...) #define DBG(...)
#endif #endif
template<class T>
const T& TinyGsmMin(const T& a, const T& b)
{
return (b < a) ? b : a;
}
template<class T>
const T& TinyGsmMax(const T& a, const T& b)
{
return (b < a) ? a : b;
}
#endif #endif

+ 14
- 9
TinyWiFiClientESP8266.h View File

@ -37,24 +37,25 @@ class GsmClient : public Client
typedef TinyGsmFifo<uint8_t, TINY_GSM_RX_BUFFER> RxFifo; typedef TinyGsmFifo<uint8_t, TINY_GSM_RX_BUFFER> RxFifo;
public: 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; this->mux = mux;
at->sockets[mux] = this;
sock_connected = false; sock_connected = false;
at->sockets[mux] = this;
return true; return true;
} }
public: public:
virtual int connect(const char *host, uint16_t port) { virtual int connect(const char *host, uint16_t port) {
TINY_GSM_YIELD();
rx.clear(); rx.clear();
sock_connected = at->modemConnect(host, port, mux); sock_connected = at->modemConnect(host, port, mux);
return sock_connected; return sock_connected;
@ -73,12 +74,14 @@ public:
} }
virtual void stop() { virtual void stop() {
TINY_GSM_YIELD();
at->sendAT(GF("+CIPCLOSE="), mux); at->sendAT(GF("+CIPCLOSE="), mux);
sock_connected = false; sock_connected = false;
at->waitResponse(); at->waitResponse();
} }
virtual size_t write(const uint8_t *buf, size_t size) { virtual size_t write(const uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
//at->maintain(); //at->maintain();
return at->modemSend(buf, size, mux); return at->modemSend(buf, size, mux);
} }
@ -88,6 +91,7 @@ public:
} }
virtual int available() { virtual int available() {
TINY_GSM_YIELD();
if (!rx.size()) { if (!rx.size()) {
at->maintain(); at->maintain();
} }
@ -95,9 +99,10 @@ public:
} }
virtual int read(uint8_t *buf, size_t size) { virtual int read(uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
size_t cnt = 0; size_t cnt = 0;
while (cnt < size) { while (cnt < size) {
size_t chunk = min(size-cnt, rx.size());
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) { if (chunk > 0) {
rx.get(buf, chunk); rx.get(buf, chunk);
buf += chunk; buf += chunk;


Loading…
Cancel
Save