Browse Source

Merge branch master

v_master
Sara Damiano 6 years ago
parent
commit
1af668126e
20 changed files with 100 additions and 126 deletions
  1. +19
    -10
      .travis.yml
  2. BIN
      extras/doc/Quectel_M95_GSM_Specification_V3.1.pdf
  3. BIN
      extras/doc/SIM800 AT Commands v1.10.pdf
  4. BIN
      extras/doc/SIM800 Hardware Design V1.08.pdf
  5. BIN
      extras/doc/SIM800 Series Software Upgrade Application Note V1.00.pdf
  6. BIN
      extras/doc/SIM800+Series Bluetooth Application Note V1.04.pdf
  7. BIN
      extras/doc/SIM800+Series Email Application Note V1.00.pdf
  8. +1
    -1
      library.json
  9. +1
    -1
      library.properties
  10. +6
    -17
      src/TinyGsmClientA6.h
  11. +5
    -11
      src/TinyGsmClientBG96.h
  12. +8
    -14
      src/TinyGsmClientESP8266.h
  13. +4
    -14
      src/TinyGsmClientM590.h
  14. +8
    -17
      src/TinyGsmClientM95.h
  15. +6
    -14
      src/TinyGsmClientMC60.h
  16. +3
    -10
      src/TinyGsmClientSIM800.h
  17. +28
    -14
      src/TinyGsmClientUBLOX.h
  18. +4
    -2
      src/TinyGsmClientXBee.h
  19. +6
    -0
      src/TinyGsmCommon.h
  20. +1
    -1
      tools/test_build/test_build.ino

+ 19
- 10
.travis.yml View File

@ -18,23 +18,30 @@ env:
- PLATFORMIO_CI_SRC=tools/FactoryReset
# Arduino test
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM800' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM900' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_A6' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_M590' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_BG96' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_ESP8266' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_UBLOX' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_BG96' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_M95' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_M590' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_MC60' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM800' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM900' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM808' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_UBLOX' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_XBEE' --project-option='framework=arduino' --board=uno --board=leonardo --board=yun --board=megaatmega2560 --board=genuino101 --board=mkr1000USB --board=zero --board=teensy31 --board=bluepill_f103c8 --board=uno_pic32 --board=esp01 --board=nodemcuv2 --board=esp32dev --board=mayfly"
# Energia test
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM800' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM900' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_A6' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_M590' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_ESP8266' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_UBLOX' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_BG96' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_ESP8266' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_M95' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_M590' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_MC60' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM800' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM900' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_SIM808' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_UBLOX' --project-option='framework=energia' --board=lplm4f120h5qr"
- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_XBEE' --project-option='framework=energia' --board=lplm4f120h5qr"
# Disabled due to a bug in Energia readBytes implementation
#- PLATFORMIO_CI_SRC=tools/test_build PLATFORMIO_CI_ARGS="--project-option='build_flags=-D TINY_GSM_MODEM_XBEE' --project-option='framework=energia' --board=lplm4f120h5qr"
@ -58,5 +65,7 @@ install:
- platformio lib -g install 89 415 1202 1286
- platformio lib -g update
- platformio lib update
- platformio lib list
- platformio lib -g list
script: make travis-build

BIN
extras/doc/Quectel_M95_GSM_Specification_V3.1.pdf View File


BIN
extras/doc/SIM800 AT Commands v1.10.pdf View File


BIN
extras/doc/SIM800 Hardware Design V1.08.pdf View File


BIN
extras/doc/SIM800 Series Software Upgrade Application Note V1.00.pdf View File


BIN
extras/doc/SIM800+Series Bluetooth Application Note V1.04.pdf View File


BIN
extras/doc/SIM800+Series Email Application Note V1.00.pdf View File


+ 1
- 1
library.json View File

@ -1,6 +1,6 @@
{
"name": "TinyGSM",
"version": "0.4.2",
"version": "0.4.3",
"description": "A small Arduino library for GPRS modules, that just works. Includes examples for Blynk, MQTT, File Download, and Web Client. Supports many GSM and wifi modules with AT command interfaces.",
"keywords": "GSM, AT commands, AT, SIM800, SIM900, A6, A7, M590, ESP8266, SIM800A, SIM800C, SIM800L, SIM800H, SIM808, SIM868, SIM900A, SIM900D, SIM908, SIM968, M95, MC60, MC60E, BG96, ublox",
"authors":


+ 1
- 1
library.properties View File

@ -1,5 +1,5 @@
name=TinyGSM
version=0.4.2
version=0.4.3
author=Volodymyr Shymanskyy
maintainer=Volodymyr Shymanskyy
sentence=A small Arduino library for GPRS modules, that just works.


+ 6
- 17
src/TinyGsmClientA6.h View File

@ -12,10 +12,6 @@
//#define TINY_GSM_DEBUG Serial
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 256
#endif
#define TINY_GSM_MUX_COUNT 8
#include <TinyGsmCommon.h>
@ -125,8 +121,7 @@ public:
virtual int read(uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
size_t cnt = 0;
uint32_t _startMillis = millis();
while (cnt < size && millis() - _startMillis < _timeout) {
while (cnt < size && sock_connected) {
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) {
rx.get(buf, chunk);
@ -135,9 +130,8 @@ public:
continue;
}
// TODO: Read directly into user buffer?
if (!rx.size() && sock_connected) {
if (!rx.size()) {
at->maintain();
//break;
}
}
return cnt;
@ -189,7 +183,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -197,12 +190,11 @@ public:
if (waitResponse() != 1) {
return false;
}
sendAT(GF("+CMEE=0"));
sendAT(GF("+CMEE=0")); // Turn of verbose errors
waitResponse();
sendAT(GF("+CMER=3,0,0,2"));
sendAT(GF("+CMER=3,0,0,2")); // Set unsolicited result code output destination
waitResponse();
DBG(GF("### Modem:"), getModemName());
getSimStatus();
return true;
}
@ -223,10 +215,7 @@ public:
bool testAT(unsigned long timeout = 10000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;


+ 5
- 11
src/TinyGsmClientBG96.h View File

@ -13,10 +13,6 @@
//#define TINY_GSM_DEBUG Serial
//#define TINY_GSM_USE_HEX
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 64
#endif
#define TINY_GSM_MUX_COUNT 12
#include <TinyGsmCommon.h>
@ -213,7 +209,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -221,6 +216,7 @@ public:
if (waitResponse() != 1) {
return false;
}
DBG(GF("### Modem:"), getModemName());
getSimStatus();
return true;
}
@ -236,10 +232,7 @@ public:
bool testAT(unsigned long timeout = 10000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;
@ -308,8 +301,9 @@ public:
}
bool poweroff() {
sendAT(GF("+QPOWD"));
return waitResponse(GF("POWERED DOWN")) == 1; // TODO
sendAT(GF("+QPOWD=1"));
waitResponse(300); // returns OK first
return waitResponse(300, GF("POWERED DOWN")) == 1;
}
bool radioOff() {


+ 8
- 14
src/TinyGsmClientESP8266.h View File

@ -12,10 +12,6 @@
//#define TINY_GSM_DEBUG Serial
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 512
#endif
#define TINY_GSM_MUX_COUNT 5
#include <TinyGsmCommon.h>
@ -122,8 +118,7 @@ public:
virtual int read(uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
size_t cnt = 0;
uint32_t _startMillis = millis();
while (cnt < size && millis() - _startMillis < _timeout) {
while (cnt < size && sock_connected) {
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) {
rx.get(buf, chunk);
@ -132,9 +127,8 @@ public:
continue;
}
// TODO: Read directly into user buffer?
if (!rx.size() && sock_connected) {
if (!rx.size()) {
at->maintain();
//break;
}
}
return cnt;
@ -206,7 +200,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -222,6 +215,7 @@ public:
if (waitResponse() != 1) {
return false;
}
DBG(GF("### Modem:"), getModemName());
return true;
}
@ -236,10 +230,7 @@ public:
bool testAT(unsigned long timeout = 10000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;
@ -297,7 +288,10 @@ public:
return init();
}
bool poweroff() TINY_GSM_ATTR_NOT_IMPLEMENTED;
bool poweroff() {
sendAT(GF("+GSLP=0")); // Power down indefinitely - until manually reset!
return waitResponse() == 1;
}
bool radioOff() TINY_GSM_ATTR_NOT_IMPLEMENTED;


+ 4
- 14
src/TinyGsmClientM590.h View File

@ -12,10 +12,6 @@
//#define TINY_GSM_DEBUG Serial
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 256
#endif
#define TINY_GSM_MUX_COUNT 2
#include <TinyGsmCommon.h>
@ -122,8 +118,7 @@ public:
virtual int read(uint8_t *buf, size_t size) {
TINY_GSM_YIELD();
size_t cnt = 0;
uint32_t _startMillis = millis();
while (cnt < size && millis() - _startMillis < _timeout) {
while (cnt < size && sock_connected) {
size_t chunk = TinyGsmMin(size-cnt, rx.size());
if (chunk > 0) {
rx.get(buf, chunk);
@ -132,9 +127,8 @@ public:
continue;
}
// TODO: Read directly into user buffer?
if (!rx.size() && sock_connected) {
if (!rx.size()) {
at->maintain();
//break;
}
}
return cnt;
@ -186,7 +180,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -198,7 +191,7 @@ public:
sendAT(GF("+CMEE=2"));
waitResponse();
#endif
DBG(GF("### Modem:"), getModemName());
getSimStatus();
return true;
}
@ -214,10 +207,7 @@ public:
bool testAT(unsigned long timeout = 10000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;


+ 8
- 17
src/TinyGsmClientM95.h View File

@ -13,10 +13,6 @@
//#define TINY_GSM_DEBUG Serial
//#define TINY_GSM_USE_HEX
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 64
#endif
#define TINY_GSM_MUX_COUNT 6
#include <TinyGsmCommon.h>
@ -137,7 +133,7 @@ public:
// TODO: Read directly into user buffer?
at->maintain();
if (sock_available > 0) {
at->modemRead(rx.free(), mux);
sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux);
} else {
break;
}
@ -213,7 +209,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -225,7 +220,7 @@ public:
sendAT(GF("+CMEE=2"));
waitResponse();
#endif
DBG(GF("### Modem:"), getModemName());
getSimStatus();
return true;
}
@ -241,10 +236,7 @@ public:
bool testAT(unsigned long timeout = 10000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;
@ -316,8 +308,8 @@ public:
}
bool poweroff() {
sendAT(GF("+QPOWD"));
return waitResponse(GF("POWERED DOWN")) == 1; // TODO
sendAT(GF("+QPOWD=1"));
return waitResponse(300, GF("NORMAL POWER DOWN")) == 1;
}
bool radioOff() {
@ -329,6 +321,8 @@ public:
return true;
}
bool sleepEnable(bool enable = true) TINY_GSM_ATTR_NOT_IMPLEMENTED;
/*
* SIM card functions
*/
@ -644,14 +638,11 @@ public:
protected:
bool modemConnect(const char* host, uint16_t port, uint8_t mux, bool ssl = false) {
sendAT(GF("+QIOPEN="), GF("\"TCP"), GF("\",\""), host, GF("\","), port);
sendAT(GF("+QIOPEN="), mux, GF("\"TCP"), GF("\",\""), host, GF("\","), port);
int rsp = waitResponse(75000L,
GF("CONNECT OK" GSM_NL),
GF("CONNECT FAIL" GSM_NL),
GF("ALREADY CONNECT" GSM_NL));
if ( rsp != 1 ) {
return false;
}
return (1 == rsp);
}


+ 6
- 14
src/TinyGsmClientMC60.h View File

@ -16,10 +16,6 @@
//#define TINY_GSM_DEBUG Serial
//#define TINY_GSM_USE_HEX
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 64
#endif
#define TINY_GSM_MUX_COUNT 6
#include <TinyGsmCommon.h>
@ -141,7 +137,7 @@ public:
// TODO: Read directly into user buffer?
at->maintain();
if (sock_available > 0) {
at->modemRead(rx.free(), mux);
sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux);
} else {
break;
}
@ -217,7 +213,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -227,6 +222,7 @@ public:
if (waitResponse() != 1) {
return false;
}
DBG(GF("### Modem:"), getModemName());
getSimStatus();
return true;
}
@ -247,10 +243,7 @@ public:
bool testAT(unsigned long timeout = 10000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;
@ -350,6 +343,8 @@ public:
return true;
}
bool sleepEnable(bool enable = true) TINY_GSM_ATTR_NOT_IMPLEMENTED;
/*
* SIM card functions
*/
@ -671,14 +666,11 @@ public:
protected:
bool modemConnect(const char* host, uint16_t port, uint8_t mux, bool ssl = false) {
sendAT(GF("+QIOPEN="), GF("\"TCP"), GF("\",\""), host, GF("\","), port);
sendAT(GF("+QIOPEN="), mux, GF("\"TCP"), GF("\",\""), host, GF("\","), port);
int rsp = waitResponse(75000L,
GF("CONNECT OK" GSM_NL),
GF("CONNECT FAIL" GSM_NL),
GF("ALREADY CONNECT" GSM_NL));
if ( rsp != 1 ) {
return false;
}
return (1 == rsp);
}


+ 3
- 10
src/TinyGsmClientSIM800.h View File

@ -13,10 +13,6 @@
//#define TINY_GSM_DEBUG Serial
//#define TINY_GSM_USE_HEX
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 64
#endif
#define TINY_GSM_MUX_COUNT 5
#include <TinyGsmCommon.h>
@ -150,7 +146,7 @@ public:
// TODO: Read directly into user buffer?
at->maintain();
if (sock_available > 0) {
at->modemRead(rx.free(), mux);
sock_available -= at->modemRead(TinyGsmMin((uint16_t)rx.free(), sock_available), mux);
} else {
break;
}
@ -227,7 +223,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -237,6 +232,7 @@ public:
if (waitResponse() != 1) {
return false;
}
DBG(GF("### Modem:"), getModemName());
getSimStatus();
return true;
}
@ -262,10 +258,7 @@ public:
//streamWrite(GF("AAAAA" GSM_NL)); // TODO: extra A's to help detect the baud rate
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;


+ 28
- 14
src/TinyGsmClientUBLOX.h View File

@ -12,10 +12,6 @@
//#define TINY_GSM_DEBUG Serial
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 64
#endif
#define TINY_GSM_MUX_COUNT 5
#include <TinyGsmCommon.h>
@ -212,7 +208,6 @@ public:
*/
bool init(const char* pin = NULL) {
DBG(GF("### Modem Defined:"), getModemName());
if (!testAT()) {
return false;
}
@ -220,6 +215,7 @@ public:
if (waitResponse() != 1) {
return false;
}
DBG(GF("### Modem:"), getModemName());
int ret = getSimStatus();
if (ret != SIM_READY && pin != NULL && strlen(pin) > 0) {
simUnlock(pin);
@ -228,7 +224,25 @@ public:
}
String getModemName() {
return "u-blox Cellular Modem";
sendAT(GF("+CGMI"));
String res1;
if (waitResponse(1000L, res1) != 1) {
return "u-blox Cellular Modem";
}
res1.replace(GSM_NL "OK" GSM_NL, "");
res1.replace(GSM_NL, " ");
res1.trim();
sendAT(GF("+GMM"));
String res2;
if (waitResponse(1000L, res2) != 1) {
return "u-blox Cellular Modem";
}
res2.replace(GSM_NL "OK" GSM_NL, "");
res2.replace(GSM_NL, " ");
res2.trim();
return res1 + String(' ') + res2;
}
void setBaud(unsigned long baud) {
@ -238,10 +252,7 @@ public:
bool testAT(unsigned long timeout = 10000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF(""));
if (waitResponse(200) == 1) {
delay(100);
return true;
}
if (waitResponse(200) == 1) return true;
delay(100);
}
return false;
@ -307,7 +318,10 @@ public:
return init();
}
bool poweroff() TINY_GSM_ATTR_NOT_IMPLEMENTED;
bool poweroff() {
sendAT(GF("+CPWROFF"));
return waitResponse(40000L) == 1;
}
bool radioOff() {
sendAT(GF("+CFUN=0"));
@ -568,8 +582,8 @@ public:
protected:
bool modemConnect(const char* host, uint16_t port, uint8_t* mux, bool ssl = false) {
sendAT(GF("+USOCR=6"));
if (waitResponse(GF(GSM_NL "+USOCR:")) != 1) {
sendAT(GF("+USOCR=6")); // create a socket
if (waitResponse(GF(GSM_NL "+USOCR:")) != 1) { // reply is +USOCR: ## of socket created
return false;
}
*mux = stream.readStringUntil('\n').toInt();
@ -588,7 +602,7 @@ protected:
//sendAT(GF("+USOSO="), *mux, GF(",6,2,30000"));
//waitResponse();
sendAT(GF("+USOCO="), *mux, ",\"", host, "\",", port);
sendAT(GF("+USOCO="), *mux, ",\"", host, "\",", port); // connect on socket
int rsp = waitResponse(75000L);
return (1 == rsp);
}


+ 4
- 2
src/TinyGsmClientXBee.h View File

@ -276,9 +276,9 @@ public:
{
sendAT();
if (waitResponse(200) == 1) {
exitCommand();
return true;
}
exitCommand();
}
delay(100);
}
@ -402,7 +402,9 @@ public:
exitCommand();
}
bool poweroff() TINY_GSM_ATTR_NOT_IMPLEMENTED;
bool poweroff() { // Not supported
return false;
}
bool radioOff() TINY_GSM_ATTR_NOT_IMPLEMENTED;


+ 6
- 0
src/TinyGsmCommon.h View File

@ -31,6 +31,10 @@
#define TINY_GSM_YIELD() { delay(0); }
#endif
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 256
#endif
#define TINY_GSM_ATTR_NOT_AVAILABLE __attribute__((error("Not available on this modem type")))
#define TINY_GSM_ATTR_NOT_IMPLEMENTED __attribute__((error("Not implemented")))
@ -239,6 +243,7 @@ public:
*/
virtual bool restart() = 0;
virtual bool poweroff() = 0;
/*
* SIM card functions - only apply to cellular modems
@ -282,6 +287,7 @@ public:
return false;
}
virtual bool gprsDisconnect() { return false; }
virtual bool isGprsConnected() { return false; }
/*
* IP Address functions


+ 1
- 1
tools/test_build/test_build.ino View File

@ -3,7 +3,7 @@
* DO NOT USE THIS - this is just a compilation test!
*
**************************************************************/
#define TINY_GSM_MODEM_SIM800
// #define TINY_GSM_MODEM_SIM800
#include <TinyGsmClient.h>


Loading…
Cancel
Save