Added more timeouts to XBee to prevent hanging
I'm remarkably good at getting all of these things to hang..
This commit is contained in:
@@ -222,7 +222,9 @@ public:
|
|||||||
String getSimCCID() {
|
String getSimCCID() {
|
||||||
commandMode();
|
commandMode();
|
||||||
sendAT(GF("S#"));
|
sendAT(GF("S#"));
|
||||||
while (!stream.available()) {}; // wait for the response
|
// wait for the response
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < 1000) {};
|
||||||
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
||||||
exitCommand();
|
exitCommand();
|
||||||
return res;
|
return res;
|
||||||
@@ -231,7 +233,9 @@ public:
|
|||||||
String getIMEI() {
|
String getIMEI() {
|
||||||
commandMode();
|
commandMode();
|
||||||
sendAT(GF("IM"));
|
sendAT(GF("IM"));
|
||||||
while (!stream.available()) {}; // wait for the response
|
// wait for the response
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < 1000) {};
|
||||||
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
||||||
exitCommand();
|
exitCommand();
|
||||||
return res;
|
return res;
|
||||||
@@ -240,7 +244,9 @@ public:
|
|||||||
int getSignalQuality() {
|
int getSignalQuality() {
|
||||||
commandMode();
|
commandMode();
|
||||||
sendAT(GF("DB"));
|
sendAT(GF("DB"));
|
||||||
while (!stream.available()) {}; // wait for the response
|
// wait for the response
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < 1000) {};
|
||||||
char buf[4] = { 0, }; // Does not send an OK, just the result
|
char buf[4] = { 0, }; // Does not send an OK, just the result
|
||||||
buf[0] = streamRead();
|
buf[0] = streamRead();
|
||||||
buf[1] = streamRead();
|
buf[1] = streamRead();
|
||||||
@@ -258,7 +264,9 @@ public:
|
|||||||
RegStatus getRegistrationStatus() {
|
RegStatus getRegistrationStatus() {
|
||||||
commandMode();
|
commandMode();
|
||||||
sendAT(GF("AI"));
|
sendAT(GF("AI"));
|
||||||
while (!stream.available()) {}; // wait for the response
|
// wait for the response
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < 1000) {};
|
||||||
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
||||||
exitCommand();
|
exitCommand();
|
||||||
|
|
||||||
@@ -281,7 +289,9 @@ public:
|
|||||||
String getOperator() {
|
String getOperator() {
|
||||||
commandMode();
|
commandMode();
|
||||||
sendAT(GF("MN"));
|
sendAT(GF("MN"));
|
||||||
while (!stream.available()) {}; // wait for the response
|
// wait for the response
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < 1000) {};
|
||||||
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
||||||
exitCommand();
|
exitCommand();
|
||||||
return res;
|
return res;
|
||||||
@@ -292,7 +302,9 @@ public:
|
|||||||
for (unsigned long start = millis(); millis() - start < timeout; ) {
|
for (unsigned long start = millis(); millis() - start < timeout; ) {
|
||||||
commandMode();
|
commandMode();
|
||||||
sendAT(GF("AI"));
|
sendAT(GF("AI"));
|
||||||
while (!stream.available()) {}; // wait for the response
|
// wait for the response
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < 1000) {};
|
||||||
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
String res = streamReadUntil('\r'); // Does not send an OK, just the result
|
||||||
exitCommand();
|
exitCommand();
|
||||||
if (res == GF("0")) {
|
if (res == GF("0")) {
|
||||||
@@ -463,7 +475,9 @@ private:
|
|||||||
int modemConnect(const char* host, uint16_t port, uint8_t mux = 1) {
|
int modemConnect(const char* host, uint16_t port, uint8_t mux = 1) {
|
||||||
sendAT(GF("LA"), host);
|
sendAT(GF("LA"), host);
|
||||||
String IPaddr; IPaddr.reserve(16);
|
String IPaddr; IPaddr.reserve(16);
|
||||||
while (!stream.available()) {}; // wait for the response
|
// wait for the response
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < 1000) {};
|
||||||
IPaddr = streamReadUntil('\r'); // read result
|
IPaddr = streamReadUntil('\r'); // read result
|
||||||
IPAddress ip;
|
IPAddress ip;
|
||||||
ip.fromString(IPaddr);
|
ip.fromString(IPaddr);
|
||||||
|
Reference in New Issue
Block a user