From 3a4f570ec62fd35c7b2edf21f9a565b7ffeefe9e Mon Sep 17 00:00:00 2001 From: Tamas DAJKA Date: Wed, 18 Oct 2017 11:42:28 +0200 Subject: [PATCH] Added Autobaud min/max Added (sub)module switches Added PIN define and SIM readiness check Modified GPS to use TINY_GSM_HAS_GPS - more modules has GPS now, will alter header files in another change --- examples/AllFunctions/AllFunctions.ino | 49 +++++++++++++++++++++----- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/examples/AllFunctions/AllFunctions.ino b/examples/AllFunctions/AllFunctions.ino index 38cb365..7f15e6b 100644 --- a/examples/AllFunctions/AllFunctions.ino +++ b/examples/AllFunctions/AllFunctions.ino @@ -16,6 +16,8 @@ // #define TINY_GSM_MODEM_A6 // #define TINY_GSM_MODEM_A7 // #define TINY_GSM_MODEM_M590 +// #define TINY_GSM_MODEM_MC60 +// #define TINY_GSM_MODEM_MC60E // Set serial for debug console (to the Serial Monitor, speed 115200) #define SerialMon Serial @@ -32,6 +34,22 @@ //#define DUMP_AT_COMMANDS #define TINY_GSM_DEBUG SerialMon +#define GSM_AUTOBAUD_MIN 9600 +#define GSM_AUTOBAUD_MAX 38400 + +/* + * Test enabled + */ +#define TINY_GSM_USE_GPRS true +#define TINY_GSM_USE_CALL true +#define TINY_GSM_USE_SMS true +#define TINY_GSM_USE_USSD true +// powerdown modem after tests +#define TINY_GSM_POWERDOWN false + +// set GSM PIN, if any +#define GSM_PIN "" + // Set phone numbers, if you want to test SMS and Calls //#define SMS_TARGET "+380xxxxxxxxx" //#define CALL_TARGET "+380xxxxxxxxx" @@ -62,7 +80,7 @@ void setup() { delay(3000); // Set GSM module baud rate - TinyGsmAutoBaud(SerialAT); + TinyGsmAutoBaud(SerialAT,GSM_AUTOBAUD_MIN,GSM_AUTOBAUD_MAX); } void loop() { @@ -71,6 +89,10 @@ void loop() { // To skip it, call init() instead of restart() DBG("Initializing modem..."); if (!modem.restart()) { + DBG("Failed to restart modem, delayin 10s and retring"); + delay(3000); + // restart autobaud in case GSM just rebooted + TinyGsmAutoBaud(SerialAT,GSM_AUTOBAUD_MIN,GSM_AUTOBAUD_MAX); delay(10000); return; } @@ -78,8 +100,10 @@ void loop() { String modemInfo = modem.getModemInfo(); DBG("Modem:", modemInfo); - // Unlock your SIM card with a PIN - //modem.simUnlock("1234"); + // Unlock your SIM card with a PIN if needed + if ( GSM_PIN && modem.getSimStatus() != 3 ) { + modem.simUnlock(GSM_PIN); + } DBG("Waiting for network..."); if (!modem.waitForNetwork()) { @@ -91,11 +115,13 @@ void loop() { DBG("Network connected"); } +#if TINY_GSM_USE_GPRS DBG("Connecting to", apn); if (!modem.gprsConnect(apn, user, pass)) { delay(10000); return; } +#endif bool res; @@ -107,9 +133,11 @@ void loop() { String cop = modem.getOperator(); DBG("Operator:", cop); - + +#if TINY_GSM_USE_GPRS IPAddress local = modem.localIP(); DBG("Local IP:", local); +#endif int csq = modem.getSignalQuality(); DBG("Signal quality:", csq); @@ -126,20 +154,22 @@ void loop() { String gsmLoc = modem.getGsmLocation(); DBG("GSM location:", gsmLoc); +#if TINY_GSM_USE_USSD String ussd_balance = modem.sendUSSD("*111#"); DBG("Balance (USSD):", ussd_balance); String ussd_phone_num = modem.sendUSSD("*161#"); DBG("Phone number (USSD):", ussd_phone_num); +#endif -#if defined(TINY_GSM_MODEM_SIM808) +#if defined(TINY_GSM_MODEM_HAS_GPS) modem.enableGPS(); String gps_raw = modem.getGPSraw(); modem.disableGPS(); DBG("GPS raw data:", gps_raw); #endif -#if defined(SMS_TARGET) +#if TINY_GSM_USE_SMS && defined(SMS_TARGET) res = modem.sendSMS(SMS_TARGET, String("Hello from ") + imei); DBG("SMS:", res ? "OK" : "fail"); @@ -148,7 +178,7 @@ void loop() { DBG("UTF16 SMS:", res ? "OK" : "fail"); #endif -#if defined(CALL_TARGET) +#if TINY_GSM_USE_CALL && defined(CALL_TARGET) DBG("Calling:", CALL_TARGET); // This is NOT supported on M590 @@ -173,21 +203,24 @@ void loop() { } #endif +#if TINY_GSM_USE_GPRS modem.gprsDisconnect(); if (!modem.isGprsConnected()) { DBG("GPRS disconnected"); } else { DBG("GPRS disconnect: Failed."); } +#endif +#if TINY_GSM_POWERDOWN // Try to power-off (modem may decide to restart automatically) // To turn off modem completely, please use Reset/Enable pins modem.poweroff(); DBG("Poweroff."); +#endif // Do nothing forevermore while (true) { modem.maintain(); } } -