diff --git a/extras/doc/u-blox SARA-G3 DataSheet (UBX-13000993).pdf b/extras/doc/u-blox SARA-G3 DataSheet (UBX-13000993).pdf deleted file mode 100644 index 5281ed9..0000000 Binary files a/extras/doc/u-blox SARA-G3 DataSheet (UBX-13000993).pdf and /dev/null differ diff --git a/extras/doc/u-blox SARA-R4 AT Commands Manual (UBX-17003787).pdf b/extras/doc/u-blox SARA-R4 AT Commands Manual r5 (UBX-17003787).pdf similarity index 100% rename from extras/doc/u-blox SARA-R4 AT Commands Manual (UBX-17003787).pdf rename to extras/doc/u-blox SARA-R4 AT Commands Manual r5 (UBX-17003787).pdf diff --git a/extras/doc/u-blox SARA-R4 SARA-N4 AT Commands Manual r10 (UBC-17003787).pdf b/extras/doc/u-blox SARA-R4 SARA-N4 AT Commands Manual r10 (UBC-17003787).pdf new file mode 100644 index 0000000..cf916ad Binary files /dev/null and b/extras/doc/u-blox SARA-R4 SARA-N4 AT Commands Manual r10 (UBC-17003787).pdf differ diff --git a/extras/doc/u-blox SARA-U2 DataSheet (UBX-13005287).pdf b/extras/doc/u-blox SARA-U2 DataSheet (UBX-13005287).pdf deleted file mode 100644 index 6c9a441..0000000 Binary files a/extras/doc/u-blox SARA-U2 DataSheet (UBX-13005287).pdf and /dev/null differ diff --git a/src/TinyGsmClientXBee.h b/src/TinyGsmClientXBee.h index 0610b84..111e240 100644 --- a/src/TinyGsmClientXBee.h +++ b/src/TinyGsmClientXBee.h @@ -229,10 +229,7 @@ public: if (ret_val) guardTime = 125; sendAT(GF("HS")); // Get the "Hardware Series"; - String res = readResponse(); - char buf[4] = {0,}; // Set up buffer for response - res.toCharArray(buf, 4); - int intRes = strtol(buf, 0, 16); + int intRes = readResponseInt(); beeType = (XBeeType)intRes; exitCommand(); @@ -299,7 +296,7 @@ public: if (!commandMode()) return modemInf; // Try up to 10 times for the init sendAT(GF("HS")); // Get the "Hardware Series" - modemInf += readResponse(); + modemInf += readResponseString(); exitCommand(); return modemInf; @@ -402,7 +399,7 @@ public: String getSimCCID() { if (!commandMode()) return ""; // Return immediately sendAT(GF("S#")); - String res = readResponse(); + String res = readResponseString(); exitCommand(); return res; } @@ -410,7 +407,7 @@ public: String getIMEI() { if (!commandMode()) return ""; // Return immediately sendAT(GF("IM")); - String res = readResponse(); + String res = readResponseString(); exitCommand(); return res; } @@ -423,10 +420,7 @@ public: if (!commandMode()) return REG_UNKNOWN; // Return immediately sendAT(GF("AI")); - String res = readResponse(); - char buf[3] = {0,}; // Set up buffer for response - res.toCharArray(buf, 3); - int intRes = strtol(buf, 0, 16); + int intRes = readResponseInt(); RegStatus stat = REG_UNKNOWN; switch (beeType){ @@ -475,13 +469,18 @@ public: writeChanges(); stat = REG_UNKNOWN; } + else if(intRes == 0x2B) { // 0x2B USB Direct active. + stat = REG_UNKNOWN; + } + else if(intRes == 0x2C) // 0x2C Cellular component is in PSM (power save mode). + stat = REG_UNKNOWN; else if(intRes == 0x2F) { // 0x2F Bypass mode active. sendAT(GF("AP0")); // Set back to transparent mode waitResponse(); writeChanges(); stat = REG_UNKNOWN; } - else if(intRes == 0xFF) // 0xFF Device is currently scanning for the configured SSID. + else if(intRes == 0xFF) // 0xFF Initializing. stat = REG_SEARCHING; else stat = REG_UNKNOWN; break; @@ -495,7 +494,7 @@ public: String getOperator() { if (!commandMode()) return ""; // Return immediately sendAT(GF("MN")); - String res = readResponse(); + String res = readResponseString(); exitCommand(); return res; } @@ -508,11 +507,8 @@ public: if (!commandMode()) return 0; // Return immediately if (beeType == XBEE_S6B_WIFI) sendAT(GF("LM")); // ask for the "link margin" - the dB above sensitivity else sendAT(GF("DB")); // ask for the cell strength in dBm - String res = readResponse(); // it works better if we read in as a string + int intRes = readResponseInt(); exitCommand(); - char buf[3] = {0,}; // Set up buffer for response - res.toCharArray(buf, 3); - int intRes = strtol(buf, 0, 16); if (beeType == XBEE_S6B_WIFI) return -93 + intRes; // the maximum sensitivity is -93dBm else return -1*intRes; // need to convert to negative number } @@ -576,7 +572,7 @@ fail: sendAT(GF("MY")); String IPaddr; IPaddr.reserve(16); // wait for the response - this response can be very slow - IPaddr = readResponse(30000); + IPaddr = readResponseString(30000); exitCommand(); IPaddr.trim(); return IPaddr; @@ -840,7 +836,7 @@ finish: waitResponse(); } - String readResponse(uint32_t timeout = 1000) { + String readResponseString(uint32_t timeout = 1000) { TINY_GSM_YIELD(); unsigned long startMillis = millis(); while (!stream.available() && millis() - startMillis < timeout) {}; @@ -850,6 +846,14 @@ finish: return res; } + int readResponseInt(uint32_t timeout = 1000) { + String res = readResponseString(timeout); + char buf[3] = {0,}; // Set up buffer for response + res.toCharArray(buf, 3); + int intRes = strtol(buf, 0, 16); + return intRes; + } + public: Stream& stream;