mirror of
https://github.com/vshymanskyy/TinyGSM.git
synced 2026-05-15 04:06:10 +00:00
Clean modem name functions, remove non-functional factory reset from SIM70xx
Signed-off-by: Sara Damiano <sdamiano@stroudcenter.org>
This commit is contained in:
@@ -17,7 +17,21 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Ai-Thinker"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_A7)
|
||||
#define MODEM_MODEL "A7"
|
||||
#else
|
||||
#define MODEM_MODEL "A6"
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -166,12 +180,7 @@ class TinyGsmA6 : public TinyGsmModem<TinyGsmA6>,
|
||||
sendAT(GF("GSN")); // Not CGSN
|
||||
String res;
|
||||
if (waitResponse(1000L, res) != 1) { return ""; }
|
||||
// Do the replaces twice so we cover both \r and \r\n type endings
|
||||
res.replace("\r\nOK\r\n", "");
|
||||
res.replace("\rOK\r", "");
|
||||
res.replace("\r\n", " ");
|
||||
res.replace("\r", " ");
|
||||
res.trim();
|
||||
cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -222,9 +231,7 @@ class TinyGsmA6 : public TinyGsmModem<TinyGsmA6>,
|
||||
sendAT(GF("+CIFSR"));
|
||||
String res;
|
||||
if (waitResponse(10000L, res) != 1) { return ""; }
|
||||
res.replace(AT_NL "OK" AT_NL, "");
|
||||
res.replace(AT_NL, "");
|
||||
res.trim();
|
||||
cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,17 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "SIMCom"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "A7672x"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -210,21 +220,6 @@ class TinyGsmA7672X : public TinyGsmModem<TinyGsmA7672X>,
|
||||
}
|
||||
}
|
||||
|
||||
String getModemNameImpl() {
|
||||
String name = "A7672SA-LASE";
|
||||
|
||||
sendAT(GF("+CGMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return name; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.replace("_", " ");
|
||||
res2.trim();
|
||||
|
||||
name = res2;
|
||||
DBG("### Modem:", name);
|
||||
return name;
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() {
|
||||
sendAT(GF("&F")); // Factory + Reset
|
||||
waitResponse();
|
||||
|
||||
@@ -17,7 +17,21 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Quectel"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_BG95) || defined(TINY_GSM_MODEM_BG95SSL)
|
||||
#define MODEM_MODEL "BG95"
|
||||
#else
|
||||
#define MODEM_MODEL "BG96"
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
|
||||
@@ -17,7 +17,21 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Espressif"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_ESP8266)
|
||||
#define MODEM_MODEL "ESP8266"
|
||||
#else
|
||||
#define MODEM_MODEL "ESP32"
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -164,29 +178,6 @@ class TinyGsmESP8266 : public TinyGsmModem<TinyGsmESP8266>,
|
||||
return true;
|
||||
}
|
||||
|
||||
String getModemNameImpl() {
|
||||
return "ESP8266";
|
||||
}
|
||||
|
||||
// Gets the modem serial number
|
||||
String getModemSerialNumberImpl() TINY_GSM_ATTR_NOT_AVAILABLE;
|
||||
// Gets the modem hardware version
|
||||
String getModemHardwareVersionImpl() TINY_GSM_ATTR_NOT_AVAILABLE;
|
||||
|
||||
// Gets the modem firmware version
|
||||
String getModemFirmwareVersionImpl() {
|
||||
sendAT(GF("GMR")); // GMR instead of CGMR
|
||||
String res;
|
||||
if (waitResponse(1000L, res) != 1) { return ""; }
|
||||
// Do the replaces twice so we cover both \r and \r\n type endings
|
||||
res.replace("\r\nOK\r\n", "");
|
||||
res.replace("\rOK\r", "");
|
||||
res.replace("\r\n", " ");
|
||||
res.replace("\r", " ");
|
||||
res.trim();
|
||||
return res;
|
||||
}
|
||||
|
||||
bool setBaudImpl(uint32_t baud) {
|
||||
sendAT(GF("+UART_CUR="), baud, "8,1,0,0");
|
||||
if (waitResponse() != 1) {
|
||||
@@ -201,21 +192,54 @@ class TinyGsmESP8266 : public TinyGsmModem<TinyGsmESP8266>,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() {
|
||||
sendAT(GF("+RESTORE"));
|
||||
return waitResponse() == 1;
|
||||
}
|
||||
|
||||
String getModemInfoImpl() {
|
||||
sendAT(GF("+GMR"));
|
||||
String res;
|
||||
if (waitResponse(1000L, res) != 1) { return ""; }
|
||||
res.replace(AT_NL "OK" AT_NL, "");
|
||||
res.replace(AT_NL, " ");
|
||||
res.trim();
|
||||
cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Gets the modem hardware version
|
||||
String getModemManufacturerImpl() {
|
||||
return MODEM_MANUFACTURER;
|
||||
}
|
||||
|
||||
// Gets the modem hardware version
|
||||
String getModemModelImpl() {
|
||||
String model = MODEM_MODEL;
|
||||
sendAT(GF("+GMR"));
|
||||
streamSkipUntil('\n'); // skip the AT version
|
||||
streamSkipUntil('\n'); // skip the SDK version
|
||||
streamSkipUntil('\n'); // skip the compile time
|
||||
// read the hardware from the Bin version
|
||||
streamSkipUntil('('); // skip the text "Bin version"
|
||||
String wroom = stream.readStringUntil(
|
||||
')'); // read the WRoom version in the parethesis
|
||||
streamSkipUntil('('); // skip the bin version itself
|
||||
if (waitResponse(1000L) == 1) { // wait for the ending OK
|
||||
return wroom;
|
||||
}
|
||||
return model;
|
||||
}
|
||||
|
||||
// Gets the modem firmware version
|
||||
String getModemRevisionImpl() {
|
||||
sendAT(GF("GMR")); // GMR instead of CGMR
|
||||
String res;
|
||||
if (waitResponse(1000L, res) != 1) { return ""; }
|
||||
cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Gets the modem serial number
|
||||
String getModemSerialNumberImpl() TINY_GSM_ATTR_NOT_AVAILABLE;
|
||||
|
||||
bool factoryDefaultImpl() {
|
||||
sendAT(GF("+RESTORE"));
|
||||
return waitResponse() == 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Power functions
|
||||
*/
|
||||
|
||||
@@ -17,7 +17,17 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Neoway"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "M590"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -161,9 +171,31 @@ class TinyGsmM590 : public TinyGsmModem<TinyGsmM590>,
|
||||
return factory + String(" ") + model;
|
||||
}
|
||||
|
||||
// This is extracted from the modem info
|
||||
String getModemManufacturerImpl() {
|
||||
sendAT(GF("I"));
|
||||
String factory = stream.readStringUntil('\n'); // read the factory
|
||||
factory.trim();
|
||||
streamSkipUntil('\n'); // skip the model
|
||||
streamSkipUntil('\n'); // skip the revision
|
||||
if (waitResponse() == 1) { return factory; }
|
||||
return MODEM_MANUFACTURER;
|
||||
}
|
||||
|
||||
// This is extracted from the modem info
|
||||
String getModemModelImpl() {
|
||||
sendAT(GF("I"));
|
||||
streamSkipUntil('\n'); // skip the factory
|
||||
String model = stream.readStringUntil('\n'); // read the model
|
||||
model.trim();
|
||||
streamSkipUntil('\n'); // skip the revision
|
||||
if (waitResponse() == 1) { return model; }
|
||||
return MODEM_MODEL;
|
||||
}
|
||||
|
||||
// Gets the modem firmware version
|
||||
// This is extracted from the modem info
|
||||
String getModemFirmwareVersionImpl() {
|
||||
String getModemRevisionImpl() {
|
||||
sendAT(GF("I"));
|
||||
streamSkipUntil('\n'); // skip the factory
|
||||
streamSkipUntil('\n'); // skip the model
|
||||
|
||||
@@ -18,7 +18,17 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Quectel"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "M95"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
|
||||
@@ -20,7 +20,21 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Quectel"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_MC60E)
|
||||
#define MODEM_MODEL "MC60E"
|
||||
#else
|
||||
#define MODEM_MODEL "MC60"
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
|
||||
@@ -17,7 +17,25 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "SIMCom"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_SIM5320)
|
||||
#define MODEM_MODEL "SIM5320";
|
||||
#elif defined(TINY_GSM_MODEM_SIM5300)
|
||||
#define MODEM_MODEL "SIM5300";
|
||||
#elif defined(TINY_GSM_MODEM_SIM7100)
|
||||
#define MODEM_MODEL "SIM7100";
|
||||
#else
|
||||
#define MODEM_MODEL "SIM5360";
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -174,21 +192,6 @@ class TinyGsmSim5360 : public TinyGsmModem<TinyGsmSim5360>,
|
||||
}
|
||||
}
|
||||
|
||||
String getModemNameImpl() {
|
||||
String name = "SIMCom SIM5360";
|
||||
|
||||
sendAT(GF("+CGMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return name; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.replace("_", " ");
|
||||
res2.trim();
|
||||
|
||||
name = res2;
|
||||
DBG("### Modem:", name);
|
||||
return name;
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() { // these commands aren't supported
|
||||
return false;
|
||||
}
|
||||
@@ -270,9 +273,7 @@ class TinyGsmSim5360 : public TinyGsmModem<TinyGsmSim5360>,
|
||||
// sendAT(GF("+CGPADDR=1")); // Show PDP address
|
||||
String res;
|
||||
if (waitResponse(10000L, res) != 1) { return ""; }
|
||||
res.replace(AT_NL "OK" AT_NL, "");
|
||||
res.replace(AT_NL, "");
|
||||
res.trim();
|
||||
cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
@@ -168,9 +168,7 @@ class TinyGsmSim7000 : public TinyGsmSim70xx<TinyGsmSim7000>,
|
||||
sendAT(GF("+CIFSR;E0"));
|
||||
String res;
|
||||
if (waitResponse(10000L, res) != 1) { return ""; }
|
||||
res.replace(AT_NL "OK" AT_NL, "");
|
||||
res.replace(AT_NL, "");
|
||||
res.trim();
|
||||
cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
@@ -195,19 +195,6 @@ class TinyGsmSim7080 : public TinyGsmSim70xx<TinyGsmSim7080>,
|
||||
while (stream.available()) { waitResponse(15, nullptr, nullptr); }
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() {
|
||||
sendAT(GF("&FZE0")); // Factory + Reset + Echo Off + Write
|
||||
waitResponse();
|
||||
sendAT(GF("+IPR=0")); // Auto-baud
|
||||
waitResponse();
|
||||
sendAT(GF("+IFC=0,0")); // No Flow Control
|
||||
waitResponse();
|
||||
sendAT(GF("+ICF=3,3")); // 8 data 0 parity 1 stop
|
||||
waitResponse();
|
||||
sendAT(GF("+CSCLK=0")); // Disable Slow Clock
|
||||
return waitResponse() == 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Power functions
|
||||
*/
|
||||
|
||||
@@ -14,7 +14,27 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "SIMCom"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_SIM7070)
|
||||
#define MODEM_MODEL "SIM7070";
|
||||
#elif defined(TINY_GSM_MODEM_SIM7080)
|
||||
#define MODEM_MODEL "SIM7080";
|
||||
#elif defined(TINY_GSM_MODEM_SIM7090)
|
||||
#define MODEM_MODEL "SIM7090";
|
||||
#elif defined(TINY_GSM_MODEM_SIM7000) || defined(TINY_GSM_MODEM_SIM7000SSL)
|
||||
#define MODEM_MODEL "SIM7000";
|
||||
#else
|
||||
#define MODEM_MODEL "SIM70xx";
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmGPRS.tpp"
|
||||
@@ -60,34 +80,8 @@ class TinyGsmSim70xx : public TinyGsmModem<SIM70xxType>,
|
||||
* Basic functions
|
||||
*/
|
||||
protected:
|
||||
String getModemNameImpl() {
|
||||
String name = "SIMCom SIM7000";
|
||||
|
||||
thisModem().sendAT(GF("+GMM"));
|
||||
String res2;
|
||||
if (thisModem().waitResponse(5000L, res2) != 1) { return name; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.replace("_", " ");
|
||||
res2.trim();
|
||||
|
||||
name = res2;
|
||||
DBG("### Modem:", name);
|
||||
return name;
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() { // these commands aren't supported
|
||||
thisModem().sendAT(GF("&FZE0&W")); // Factory + Reset + Echo Off + Write
|
||||
thisModem().waitResponse();
|
||||
thisModem().sendAT(GF("+IPR=0")); // Auto-baud
|
||||
thisModem().waitResponse();
|
||||
thisModem().sendAT(GF("+IFC=0,0")); // No Flow Control
|
||||
thisModem().waitResponse();
|
||||
thisModem().sendAT(GF("+ICF=3,3")); // 8 data 0 parity 1 stop
|
||||
thisModem().waitResponse();
|
||||
thisModem().sendAT(GF("+CSCLK=0")); // Disable Slow Clock
|
||||
thisModem().waitResponse();
|
||||
thisModem().sendAT(GF("&W")); // Write configuration
|
||||
return thisModem().waitResponse() == 1;
|
||||
bool factoryDefaultImpl() {
|
||||
return false
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -17,7 +17,23 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "SIMCom"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_SIM7500)
|
||||
#define MODEM_MODEL "SIM7500";
|
||||
#elif defined(TINY_GSM_MODEM_SIM7800)
|
||||
#define MODEM_MODEL "SIM7800";
|
||||
#else
|
||||
#define MODEM_MODEL "SIM7600";
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -178,21 +194,6 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
|
||||
}
|
||||
}
|
||||
|
||||
String getModemNameImpl() {
|
||||
String name = "SIMCom SIM7600";
|
||||
|
||||
sendAT(GF("+CGMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return name; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.replace("_", " ");
|
||||
res2.trim();
|
||||
|
||||
name = res2;
|
||||
DBG("### Modem:", name);
|
||||
return name;
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() { // these commands aren't supported
|
||||
return false;
|
||||
}
|
||||
@@ -283,8 +284,7 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
|
||||
// sendAT(GF("+CGPADDR=1")); // Show PDP address
|
||||
String res;
|
||||
if (waitResponse(10000L, res) != 1) { return ""; }
|
||||
res.replace(AT_NL "OK" AT_NL, "");
|
||||
res.replace(AT_NL, "");
|
||||
cleanResponseString(res);
|
||||
res.trim();
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,25 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "unknown"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#if defined(TINY_GSM_MODEM_SIM808)
|
||||
#define MODEM_MODEL "SIM808";
|
||||
#elif defined(TINY_GSM_MODEM_SIM868)
|
||||
#define MODEM_MODEL "SIM868";
|
||||
#elif defined(TINY_GSM_MODEM_SIM900)
|
||||
#define MODEM_MODEL "SIM900";
|
||||
#else
|
||||
#define MODEM_MODEL "SIM800";
|
||||
#endif
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -193,30 +211,6 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
|
||||
}
|
||||
}
|
||||
|
||||
String getModemNameImpl() {
|
||||
String name = "";
|
||||
#if defined(TINY_GSM_MODEM_SIM800)
|
||||
name = "SIMCom SIM800";
|
||||
#elif defined(TINY_GSM_MODEM_SIM808)
|
||||
name = "SIMCom SIM808";
|
||||
#elif defined(TINY_GSM_MODEM_SIM868)
|
||||
name = "SIMCom SIM868";
|
||||
#elif defined(TINY_GSM_MODEM_SIM900)
|
||||
name = "SIMCom SIM900";
|
||||
#endif
|
||||
|
||||
sendAT(GF("+GMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return name; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.replace("_", " ");
|
||||
res2.trim();
|
||||
|
||||
name = res2;
|
||||
DBG("### Modem:", name);
|
||||
return name;
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() {
|
||||
sendAT(GF("&FZE0&W")); // Factory + Reset + Echo Off + Write
|
||||
waitResponse();
|
||||
@@ -299,9 +293,7 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
|
||||
sendAT(GF("+CIFSR;E0"));
|
||||
String res;
|
||||
if (waitResponse(10000L, res) != 1) { return ""; }
|
||||
res.replace(AT_NL "OK" AT_NL, "");
|
||||
res.replace(AT_NL, "");
|
||||
res.trim();
|
||||
cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,17 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "u-blox"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "SARA-R4"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -261,25 +271,14 @@ class TinyGsmSaraR4 : public TinyGsmModem<TinyGsmSaraR4>,
|
||||
|
||||
// only difference in implementation is the warning on the wrong type
|
||||
String getModemNameImpl() {
|
||||
sendAT(GF("+CGMI"));
|
||||
String res1;
|
||||
if (waitResponse(1000L, res1) != 1) { return "u-blox Cellular Modem"; }
|
||||
res1.replace(AT_NL "OK" AT_NL, "");
|
||||
res1.trim();
|
||||
|
||||
sendAT(GF("+GMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return "u-blox Cellular Modem"; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.trim();
|
||||
|
||||
String name = res1 + String(' ') + res2;
|
||||
String manufacturer = getModemManufacturer();
|
||||
String model = getModemModel();
|
||||
String name = manufacturer + String(" ") + model;
|
||||
DBG("### Modem:", name);
|
||||
if (!name.startsWith("u-blox SARA-R4") &&
|
||||
!name.startsWith("u-blox SARA-N4")) {
|
||||
DBG("### WARNING: You are using the wrong TinyGSM modem!");
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,17 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "u-blox"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "SARA-R5"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -222,26 +232,15 @@ class TinyGsmSaraR5 : public TinyGsmModem<TinyGsmSaraR5>,
|
||||
|
||||
// only difference in implementation is the warning on the wrong type
|
||||
String getModemNameImpl() {
|
||||
sendAT(GF("+CGMI"));
|
||||
String res1;
|
||||
if (waitResponse(1000L, res1) != 1) { return "u-blox Cellular Modem"; }
|
||||
res1.replace(AT_NL "OK" AT_NL, "");
|
||||
res1.trim();
|
||||
|
||||
sendAT(GF("+GMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return "u-blox Cellular Modem"; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.trim();
|
||||
|
||||
String name = res1 + String(' ') + res2;
|
||||
String manufacturer = getModemManufacturer();
|
||||
String model = getModemModel();
|
||||
String name = manufacturer + String(" ") + model;
|
||||
if (name.startsWith("u-blox SARA-R4") ||
|
||||
name.startsWith("u-blox SARA-N4")) {
|
||||
DBG("### WARNING: You are using the wrong TinyGSM modem!");
|
||||
} else if (name.startsWith("u-blox SARA-N2")) {
|
||||
DBG("### SARA N2 NB-IoT modems not supported!");
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,17 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Sequans"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "Monarch"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -233,26 +243,6 @@ class TinyGsmSequansMonarch
|
||||
}
|
||||
}
|
||||
|
||||
String getModemNameImpl() {
|
||||
sendAT(GF("+CGMI"));
|
||||
String res1;
|
||||
if (waitResponse(1000L, res1) != 1) { return "unknown"; }
|
||||
res1.replace("\r\nOK\r\n", "");
|
||||
res1.replace("\rOK\r", "");
|
||||
res1.trim();
|
||||
|
||||
sendAT(GF("+CGMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return "unknown"; }
|
||||
res2.replace("\r\nOK\r\n", "");
|
||||
res2.replace("\rOK\r", "");
|
||||
res2.trim();
|
||||
|
||||
String name = res1 + String(' ') + res2;
|
||||
DBG("### Modem:", name);
|
||||
return name;
|
||||
}
|
||||
|
||||
bool factoryDefaultImpl() {
|
||||
sendAT(GF("&F0")); // Factory
|
||||
waitResponse();
|
||||
|
||||
@@ -17,7 +17,17 @@
|
||||
#ifdef AT_NL
|
||||
#undef AT_NL
|
||||
#endif
|
||||
#define AT_NL "\r\n" // NOTE: define before including TinyGsmModem!
|
||||
#define AT_NL "\r\n"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "u-blox"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "unknown"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmTCP.tpp"
|
||||
@@ -206,26 +216,15 @@ class TinyGsmUBLOX : public TinyGsmModem<TinyGsmUBLOX>,
|
||||
|
||||
// only difference in implementation is the warning on the wrong type
|
||||
String getModemNameImpl() {
|
||||
sendAT(GF("+CGMI"));
|
||||
String res1;
|
||||
if (waitResponse(1000L, res1) != 1) { return "u-blox Cellular Modem"; }
|
||||
res1.replace(AT_NL "OK" AT_NL, "");
|
||||
res1.trim();
|
||||
|
||||
sendAT(GF("+GMM"));
|
||||
String res2;
|
||||
if (waitResponse(1000L, res2) != 1) { return "u-blox Cellular Modem"; }
|
||||
res2.replace(AT_NL "OK" AT_NL, "");
|
||||
res2.trim();
|
||||
|
||||
String name = res1 + String(' ') + res2;
|
||||
String manufacturer = getModemManufacturer();
|
||||
String model = getModemModel();
|
||||
String name = manufacturer + String(" ") + model;
|
||||
if (name.startsWith("u-blox SARA-R4") ||
|
||||
name.startsWith("u-blox SARA-N4")) {
|
||||
DBG("### WARNING: You are using the wrong TinyGSM modem!");
|
||||
} else if (name.startsWith("u-blox SARA-N2")) {
|
||||
DBG("### SARA N2 NB-IoT modems not supported!");
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,16 @@
|
||||
#endif
|
||||
#define AT_NL "\r"
|
||||
|
||||
#ifdef MODEM_MANUFACTURER
|
||||
#undef MODEM_MANUFACTURER
|
||||
#endif
|
||||
#define MODEM_MANUFACTURER "Digi"
|
||||
|
||||
#ifdef MODEM_MODEL
|
||||
#undef MODEM_MODEL
|
||||
#endif
|
||||
#define MODEM_MODEL "XBee"
|
||||
|
||||
#include "TinyGsmModem.tpp"
|
||||
#include "TinyGsmWifi.tpp"
|
||||
#include "TinyGsmGPRS.tpp"
|
||||
@@ -383,6 +393,16 @@ class TinyGsmXBee : public TinyGsmModem<TinyGsmXBee>,
|
||||
return getBeeName();
|
||||
}
|
||||
|
||||
String getModemModelImpl() {
|
||||
switch (beeType) {
|
||||
case XBEE_S6B_WIFI: return "XBee Wi-Fi";
|
||||
case XBEE_LTE1_VZN: return "XBee Cellular LTE Cat 1";
|
||||
case XBEE_3G: return "XBee Cellular 3G";
|
||||
case XBEE3_LTE1_ATT: return "XBee3 Cellular LTE CAT 1";
|
||||
case XBEE3_LTEM_ATT: return "XBee3 Cellular LTE-M";
|
||||
default: return "XBee Unknown";
|
||||
}
|
||||
}
|
||||
// Gets the modem serial number
|
||||
String getModemSerialNumberImpl() {
|
||||
String xbeeSnLow =
|
||||
@@ -393,12 +413,12 @@ class TinyGsmXBee : public TinyGsmModem<TinyGsmXBee>,
|
||||
}
|
||||
|
||||
// Gets the modem hardware version
|
||||
String getModemHardwareVersionImpl() {
|
||||
String getModemModelImpl() {
|
||||
return sendATGetString(GF("HV"));
|
||||
}
|
||||
|
||||
// Gets the modem firmware version
|
||||
String getModemFirmwareVersionImpl() {
|
||||
String getModemRevisionImpl() {
|
||||
return sendATGetString(GF("VR"));
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,14 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MODEM_MANUFACTURER
|
||||
#define MODEM_MANUFACTURER "unknown"
|
||||
#endif
|
||||
|
||||
#ifndef MODEM_MODEL
|
||||
#define MODEM_MODEL "unknown"
|
||||
#endif
|
||||
|
||||
static const char GSM_OK[] TINY_GSM_PROGMEM = AT_OK AT_NL;
|
||||
static const char GSM_ERROR[] TINY_GSM_PROGMEM = AT_ERROR AT_NL;
|
||||
|
||||
@@ -96,7 +104,7 @@ class TinyGsmModem {
|
||||
return waitResponse(1000L, r1, r2, r3, r4, r5, r6, r7);
|
||||
}
|
||||
|
||||
// Asks for modem information via the V.25TER standard ATI command
|
||||
// Asks for modem information via the 3GPP TS 27.007 standard ATI command
|
||||
// NOTE: The actual value and style of the response is quite varied
|
||||
String getModemInfo() {
|
||||
return thisModem().getModemInfoImpl();
|
||||
@@ -105,18 +113,22 @@ class TinyGsmModem {
|
||||
String getModemName() {
|
||||
return thisModem().getModemNameImpl();
|
||||
}
|
||||
// Gets the modem manufacturer
|
||||
String getModemManufacturer() {
|
||||
return thisModem().getModemManufacturerImpl();
|
||||
}
|
||||
// Gets the modem hardware version
|
||||
String getModemModel() {
|
||||
return thisModem().getModemModelImpl();
|
||||
}
|
||||
// Gets the modem firmware version
|
||||
String getModemRevision() {
|
||||
return thisModem().getModemRevisionImpl();
|
||||
}
|
||||
// Gets the modem serial number
|
||||
String getModemSerialNumber() {
|
||||
return thisModem().getModemSerialNumberImpl();
|
||||
}
|
||||
// Gets the modem hardware version
|
||||
String getModemHardwareVersion() {
|
||||
return thisModem().getModemHardwareVersionImpl();
|
||||
}
|
||||
// Gets the modem firmware version
|
||||
String getModemFirmwareVersion() {
|
||||
return thisModem().getModemFirmwareVersionImpl();
|
||||
}
|
||||
bool factoryDefault() {
|
||||
return thisModem().factoryDefaultImpl();
|
||||
}
|
||||
@@ -278,7 +290,15 @@ class TinyGsmModem {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected:
|
||||
inline void cleanResponseString(String& res) {
|
||||
// Do the replaces twice so we cover both \r and \r\n type endings
|
||||
res.replace("\r\nOK\r\n", "");
|
||||
res.replace("\rOK\r", "");
|
||||
res.replace("\r\n", " ");
|
||||
res.replace("\r", " ");
|
||||
res.trim();
|
||||
}
|
||||
|
||||
static inline IPAddress TinyGsmIpFromString(const String& strIP) {
|
||||
int Parts[4] = {
|
||||
0,
|
||||
@@ -411,77 +431,56 @@ class TinyGsmModem {
|
||||
|
||||
|
||||
String getModemInfoImpl() {
|
||||
thisModem().sendAT(GF("I"));
|
||||
thisModem().sendAT(GF("I")); // 3GPP TS 27.007
|
||||
String res;
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return ""; }
|
||||
// Do the replaces twice so we cover both \r and \r\n type endings
|
||||
res.replace("\r\nOK\r\n", "");
|
||||
res.replace("\rOK\r", "");
|
||||
res.replace("\r\n", " ");
|
||||
res.replace("\r", " ");
|
||||
res.trim();
|
||||
thisModem().cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
String getModemNameImpl() {
|
||||
thisModem().sendAT(GF("+CGMI"));
|
||||
String res1;
|
||||
if (thisModem().waitResponse(1000L, res1) != 1) { return "unknown"; }
|
||||
res1.replace("\r\nOK\r\n", "");
|
||||
res1.replace("\rOK\r", "");
|
||||
res1.trim();
|
||||
|
||||
thisModem().sendAT(GF("+GMM"));
|
||||
String res2;
|
||||
if (thisModem().waitResponse(1000L, res2) != 1) { return "unknown"; }
|
||||
res2.replace("\r\nOK\r\n", "");
|
||||
res2.replace("\rOK\r", "");
|
||||
res2.trim();
|
||||
|
||||
String name = res1 + String(' ') + res2;
|
||||
String manufacturer = getModemManufacturer();
|
||||
String model = getModemModel();
|
||||
String name = manufacturer + String(" ") + model;
|
||||
DBG("### Modem:", name);
|
||||
return name;
|
||||
}
|
||||
|
||||
// Gets the modem serial number
|
||||
String getModemSerialNumberImpl() {
|
||||
thisModem().sendAT(GF("CGSN"));
|
||||
// Gets the modem manufacturer
|
||||
String getModemManufacturerImpl() {
|
||||
String manufacturer = MODEM_MANUFACTURER;
|
||||
thisModem().sendAT(GF("+CGMI")); // 3GPP TS 27.007 standard
|
||||
String res;
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return ""; }
|
||||
// Do the replaces twice so we cover both \r and \r\n type endings
|
||||
res.replace("\r\nOK\r\n", "");
|
||||
res.replace("\rOK\r", "");
|
||||
res.replace("\r\n", " ");
|
||||
res.replace("\r", " ");
|
||||
res.trim();
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return manf; }
|
||||
thisModem().cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Gets the modem hardware version
|
||||
String getModemHardwareVersionImpl() {
|
||||
thisModem().sendAT(GF("CGMM"));
|
||||
String getModemModelImpl() {
|
||||
String model = MODEM_MODEL;
|
||||
thisModem().sendAT(GF("+CGMM")); // 3GPP TS 27.007 standard
|
||||
String res;
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return ""; }
|
||||
// Do the replaces twice so we cover both \r and \r\n type endings
|
||||
res.replace("\r\nOK\r\n", "");
|
||||
res.replace("\rOK\r", "");
|
||||
res.replace("\r\n", " ");
|
||||
res.replace("\r", " ");
|
||||
res.trim();
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return model; }
|
||||
thisModem().cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Gets the modem firmware version
|
||||
String getModemFirmwareVersionImpl() {
|
||||
thisModem().sendAT(GF("CGMR"));
|
||||
String getModemRevisionImpl() {
|
||||
thisModem().sendAT(GF("+CGMR")); // 3GPP TS 27.007 standard
|
||||
String res;
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return ""; }
|
||||
// Do the replaces twice so we cover both \r and \r\n type endings
|
||||
res.replace("\r\nOK\r\n", "");
|
||||
res.replace("\rOK\r", "");
|
||||
res.replace("\r\n", " ");
|
||||
res.replace("\r", " ");
|
||||
res.trim();
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return "unknown"; }
|
||||
thisModem().cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Gets the modem serial number
|
||||
String getModemSerialNumberImpl() {
|
||||
thisModem().sendAT(GF("+CGSN")); // 3GPP TS 27.007 standard
|
||||
String res;
|
||||
if (thisModem().waitResponse(1000L, res) != 1) { return "unknown"; }
|
||||
thisModem().cleanResponseString(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
// #define TINY_GSM_MODEM_MC60
|
||||
// #define TINY_GSM_MODEM_MC60E
|
||||
// #define TINY_GSM_MODEM_ESP8266
|
||||
// #define TINY_GSM_MODEM_ESP32
|
||||
// #define TINY_GSM_MODEM_XBEE
|
||||
// #define TINY_GSM_MODEM_SEQUANS_MONARCH
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
// #define TINY_GSM_MODEM_MC60
|
||||
// #define TINY_GSM_MODEM_MC60E
|
||||
// #define TINY_GSM_MODEM_ESP8266
|
||||
// #define TINY_GSM_MODEM_ESP32
|
||||
// #define TINY_GSM_MODEM_XBEE
|
||||
// #define TINY_GSM_MODEM_SEQUANS_MONARCH
|
||||
|
||||
|
||||
@@ -14,12 +14,7 @@
|
||||
// #define TINY_GSM_MODEM_SIM808
|
||||
// #define TINY_GSM_MODEM_SIM868
|
||||
// #define TINY_GSM_MODEM_SIM900
|
||||
// #define TINY_GSM_MODEM_SIM7000
|
||||
// #define TINY_GSM_MODEM_SIM7000SSL
|
||||
// #define TINY_GSM_MODEM_SIM7080
|
||||
// #define TINY_GSM_MODEM_SIM5360
|
||||
// #define TINY_GSM_MODEM_SIM7600
|
||||
// #define TINY_GSM_MODEM_A7672X
|
||||
// #define TINY_GSM_MODEM_UBLOX
|
||||
// #define TINY_GSM_MODEM_SARAR4
|
||||
// #define TINY_GSM_MODEM_M95
|
||||
@@ -31,6 +26,7 @@
|
||||
// #define TINY_GSM_MODEM_MC60
|
||||
// #define TINY_GSM_MODEM_MC60E
|
||||
// #define TINY_GSM_MODEM_ESP8266
|
||||
// #define TINY_GSM_MODEM_ESP32
|
||||
// #define TINY_GSM_MODEM_XBEE
|
||||
// #define TINY_GSM_MODEM_SEQUANS_MONARCH
|
||||
|
||||
|
||||
Reference in New Issue
Block a user