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