Reordered some functions in the XBee
This commit is contained in:
@@ -724,6 +724,11 @@ public:
|
|||||||
Utilities
|
Utilities
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void streamClear(void) {
|
||||||
|
TINY_GSM_YIELD();
|
||||||
|
while (stream.available()) { stream.read(); }
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void streamWrite(T last) {
|
void streamWrite(T last) {
|
||||||
stream.print(last);
|
stream.print(last);
|
||||||
@@ -735,50 +740,6 @@ public:
|
|||||||
streamWrite(tail...);
|
streamWrite(tail...);
|
||||||
}
|
}
|
||||||
|
|
||||||
void streamClear(void) {
|
|
||||||
TINY_GSM_YIELD();
|
|
||||||
while (stream.available()) { stream.read(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
bool commandMode(int retries = 2) {
|
|
||||||
int triesMade = 0;
|
|
||||||
bool success = false;
|
|
||||||
streamClear(); // Empty everything in the buffer before starting
|
|
||||||
while (!success and triesMade < retries) {
|
|
||||||
// Cannot send anything for 1 "guard time" before entering command mode
|
|
||||||
// Default guard time is 1s, but the init fxn decreases it to 250 ms
|
|
||||||
delay(guardTime);
|
|
||||||
streamWrite(GF("+++")); // enter command mode
|
|
||||||
DBG("+++");
|
|
||||||
success = (1 == waitResponse(guardTime*2));
|
|
||||||
triesMade ++;
|
|
||||||
}
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool writeChanges(void) {
|
|
||||||
sendAT(GF("WR")); // Write changes to flash
|
|
||||||
if (1 != waitResponse()) return false;
|
|
||||||
sendAT(GF("AC")); // Apply changes
|
|
||||||
if (1 != waitResponse()) return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void exitCommand(void) {
|
|
||||||
sendAT(GF("CN")); // Exit command mode
|
|
||||||
waitResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
String readResponse(uint32_t timeout = 1000) {
|
|
||||||
TINY_GSM_YIELD();
|
|
||||||
unsigned long startMillis = millis();
|
|
||||||
while (!stream.available() && millis() - startMillis < timeout) {};
|
|
||||||
String res = stream.readStringUntil('\r'); // lines end with carriage returns
|
|
||||||
res.trim();
|
|
||||||
DBG("<<< ", res);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename... Args>
|
template<typename... Args>
|
||||||
void sendAT(Args... cmd) {
|
void sendAT(Args... cmd) {
|
||||||
streamWrite("AT", cmd..., GSM_NL);
|
streamWrite("AT", cmd..., GSM_NL);
|
||||||
@@ -843,6 +804,7 @@ finish:
|
|||||||
DBG("<<< ", data);
|
DBG("<<< ", data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DBG('<', index, '>');
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -860,6 +822,45 @@ finish:
|
|||||||
return waitResponse(1000, r1, r2, r3, r4, r5);
|
return waitResponse(1000, r1, r2, r3, r4, r5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool commandMode(int retries = 2) {
|
||||||
|
int triesMade = 0;
|
||||||
|
bool success = false;
|
||||||
|
streamClear(); // Empty everything in the buffer before starting
|
||||||
|
while (!success and triesMade < retries) {
|
||||||
|
// Cannot send anything for 1 "guard time" before entering command mode
|
||||||
|
// Default guard time is 1s, but the init fxn decreases it to 250 ms
|
||||||
|
delay(guardTime);
|
||||||
|
streamWrite(GF("+++")); // enter command mode
|
||||||
|
DBG("+++");
|
||||||
|
success = (1 == waitResponse(guardTime*2));
|
||||||
|
triesMade ++;
|
||||||
|
}
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool writeChanges(void) {
|
||||||
|
sendAT(GF("WR")); // Write changes to flash
|
||||||
|
if (1 != waitResponse()) return false;
|
||||||
|
sendAT(GF("AC")); // Apply changes
|
||||||
|
if (1 != waitResponse()) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void exitCommand(void) {
|
||||||
|
sendAT(GF("CN")); // Exit command mode
|
||||||
|
waitResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
String readResponse(uint32_t timeout = 1000) {
|
||||||
|
TINY_GSM_YIELD();
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
while (!stream.available() && millis() - startMillis < timeout) {};
|
||||||
|
String res = stream.readStringUntil('\r'); // lines end with carriage returns
|
||||||
|
res.trim();
|
||||||
|
DBG("<<< ", res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Stream& stream;
|
Stream& stream;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user