Deactivate contexts on Monarch

Signed-off-by: Sara Damiano <sdamiano@stroudcenter.org>
This commit is contained in:
Sara Damiano
2020-07-23 15:06:22 -04:00
parent 234a20e894
commit e1c9c2517b
3 changed files with 17 additions and 18 deletions

1
.gitignore vendored
View File

@@ -24,6 +24,7 @@ extra_envs.ini
lib/readme.txt lib/readme.txt
include/readme.txt include/readme.txt
.atomrc.cson .atomrc.cson
.history
# VSCode # VSCode
.vscode/* .vscode/*

View File

@@ -383,7 +383,7 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
sendAT(GF("+CIPSHUT")); sendAT(GF("+CIPSHUT"));
if (waitResponse(60000L) != 1) { return false; } if (waitResponse(60000L) != 1) { return false; }
sendAT(GF("+CGATT=0")); // Deactivate the bearer context sendAT(GF("+CGATT=0")); // Detach from GPRS
if (waitResponse(60000L) != 1) { return false; } if (waitResponse(60000L) != 1) { return false; }
return true; return true;
@@ -396,9 +396,7 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
// May not return the "+CCID" before the number // May not return the "+CCID" before the number
String getSimCCIDImpl() { String getSimCCIDImpl() {
sendAT(GF("+CCID")); sendAT(GF("+CCID"));
if (waitResponse(GF(GSM_NL)) != 1) { if (waitResponse(GF(GSM_NL)) != 1) { return ""; }
return "";
}
String res = stream.readStringUntil('\n'); String res = stream.readStringUntil('\n');
waitResponse(); waitResponse();
// Trim out the CCID header in case it is there // Trim out the CCID header in case it is there
@@ -739,7 +737,7 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
} }
public: public:
Stream& stream; Stream& stream;
protected: protected:
GsmClientSim800* sockets[TINY_GSM_MUX_COUNT]; GsmClientSim800* sockets[TINY_GSM_MUX_COUNT];

View File

@@ -367,8 +367,12 @@ class TinyGsmSequansMonarch
} }
bool gprsDisconnectImpl() { bool gprsDisconnectImpl() {
// Detach from PS network
sendAT(GF("+CGATT=0")); sendAT(GF("+CGATT=0"));
if (waitResponse(60000L) != 1) { return false; } if (waitResponse(60000L) != 1) { return false; }
// Dectivate all PDP contexts
sendAT(GF("+CGACT=0"));
if (waitResponse(60000L) != 1) { return false; }
return true; return true;
} }
@@ -572,9 +576,7 @@ class TinyGsmSequansMonarch
// six possible sockets. // six possible sockets.
sendAT(GF("+SQNSS")); sendAT(GF("+SQNSS"));
for (int muxNo = 1; muxNo <= TINY_GSM_MUX_COUNT; muxNo++) { for (int muxNo = 1; muxNo <= TINY_GSM_MUX_COUNT; muxNo++) {
if (waitResponse(GFP(GSM_OK), GF(GSM_NL "+SQNSS: ")) != 2) { if (waitResponse(GFP(GSM_OK), GF(GSM_NL "+SQNSS: ")) != 2) { break; }
break;
}
uint8_t status = 0; uint8_t status = 0;
// if (streamGetIntBefore(',') != muxNo) { // check the mux no // if (streamGetIntBefore(',') != muxNo) { // check the mux no
// DBG("### Warning: misaligned mux numbers!"); // DBG("### Warning: misaligned mux numbers!");
@@ -593,9 +595,9 @@ class TinyGsmSequansMonarch
// SOCK_OPENING = 6, // SOCK_OPENING = 6,
GsmClientSequansMonarch* sock = sockets[mux % TINY_GSM_MUX_COUNT]; GsmClientSequansMonarch* sock = sockets[mux % TINY_GSM_MUX_COUNT];
if (sock) { if (sock) {
sock->sock_connected = sock->sock_connected = ((status != SOCK_CLOSED) &&
((status != SOCK_CLOSED) && (status != SOCK_INCOMING) && (status != SOCK_INCOMING) &&
(status != SOCK_OPENING)); (status != SOCK_OPENING));
} }
} }
waitResponse(); // Should be an OK at the end waitResponse(); // Should be an OK at the end
@@ -624,7 +626,7 @@ class TinyGsmSequansMonarch
String r5s(r5); r5s.trim(); String r5s(r5); r5s.trim();
DBG("### ..:", r1s, ",", r2s, ",", r3s, ",", r4s, ",", r5s);*/ DBG("### ..:", r1s, ",", r2s, ",", r3s, ",", r4s, ",", r5s);*/
data.reserve(64); data.reserve(64);
uint8_t index = 0; uint8_t index = 0;
uint32_t startMillis = millis(); uint32_t startMillis = millis();
do { do {
TINY_GSM_YIELD(); TINY_GSM_YIELD();
@@ -654,11 +656,11 @@ class TinyGsmSequansMonarch
index = 5; index = 5;
goto finish; goto finish;
} else if (data.endsWith(GF(GSM_NL "+SQNSRING:"))) { } else if (data.endsWith(GF(GSM_NL "+SQNSRING:"))) {
int8_t mux = streamGetIntBefore(','); int8_t mux = streamGetIntBefore(',');
int16_t len = streamGetIntBefore('\n'); int16_t len = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && if (mux >= 0 && mux < TINY_GSM_MUX_COUNT &&
sockets[mux % TINY_GSM_MUX_COUNT]) { sockets[mux % TINY_GSM_MUX_COUNT]) {
sockets[mux % TINY_GSM_MUX_COUNT]->got_data = true; sockets[mux % TINY_GSM_MUX_COUNT]->got_data = true;
sockets[mux % TINY_GSM_MUX_COUNT]->sock_available = len; sockets[mux % TINY_GSM_MUX_COUNT]->sock_available = len;
} }
data = ""; data = "";
@@ -677,9 +679,7 @@ class TinyGsmSequansMonarch
finish: finish:
if (!index) { if (!index) {
data.trim(); data.trim();
if (data.length()) { if (data.length()) { DBG("### Unhandled:", data); }
DBG("### Unhandled:", data);
}
data = ""; data = "";
} }
// data.replace(GSM_NL, "/"); // data.replace(GSM_NL, "/");
@@ -717,7 +717,7 @@ class TinyGsmSequansMonarch
protected: protected:
GsmClientSequansMonarch* sockets[TINY_GSM_MUX_COUNT]; GsmClientSequansMonarch* sockets[TINY_GSM_MUX_COUNT];
const char* gsmNL = GSM_NL; const char* gsmNL = GSM_NL;
}; };
#endif // SRC_TINYGSMCLIENTSEQUANSMONARCH_H_ #endif // SRC_TINYGSMCLIENTSEQUANSMONARCH_H_