mirror of
				https://github.com/KevinMidboe/TinyGSM.git
				synced 2025-10-29 18:00:18 +00:00 
			
		
		
		
	Additional XBee types
This commit is contained in:
		@@ -27,16 +27,21 @@ enum SimStatus {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum RegStatus {
 | 
			
		||||
  REG_UNREGISTERED = 0,
 | 
			
		||||
  REG_OK           = 0,
 | 
			
		||||
  REG_UNREGISTERED = 1,
 | 
			
		||||
  REG_SEARCHING    = 2,
 | 
			
		||||
  REG_DENIED       = 3,
 | 
			
		||||
  REG_OK           = 1,
 | 
			
		||||
  REG_UNKNOWN      = 4,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// These are responses to the HS command to get "hardware series"
 | 
			
		||||
enum XBeeType {
 | 
			
		||||
  XBEE_CELL  = 0,
 | 
			
		||||
  XBEE_WIFI  = 1,
 | 
			
		||||
  XBEE_S6B_WIFI  = 0x601,  // Digi XBee® Wi-Fi
 | 
			
		||||
  XBEE_LTE1_VZN  = 0xB01,  // Digi XBee® Cellular LTE Cat 1
 | 
			
		||||
  XBEE_3G        = 0xB02,  // Digi XBee® Cellular 3G
 | 
			
		||||
  XBEE3_LTE1_ATT = 1,  // Digi XBee3™ Cellular LTE CAT 1  -- HS unknown to SRGD
 | 
			
		||||
  XBEE3_LTEM_ATT = 2,  // Digi XBee3™ Cellular LTE-M  -- HS unknown to SRGD
 | 
			
		||||
  XBEE3_LTENB    = 3,  // Digi XBee3™ Cellular NB-IoT  -- HS unknown to SRGD
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -250,10 +255,12 @@ public:
 | 
			
		||||
    ret_val &= writeChanges();
 | 
			
		||||
    if (ret_val) guardTime = 125;
 | 
			
		||||
 | 
			
		||||
    sendAT(GF("HS"));  // Get the "Hardware Series"; 0x601 for S6B (Wifi)
 | 
			
		||||
    int res = waitResponse(GF("601"));
 | 
			
		||||
    if (res == 1) beeType = XBEE_WIFI;
 | 
			
		||||
    else beeType = XBEE_CELL;
 | 
			
		||||
    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);
 | 
			
		||||
    beeType = (XBeeType)intRes;
 | 
			
		||||
 | 
			
		||||
    exitCommand();
 | 
			
		||||
    return ret_val;
 | 
			
		||||
@@ -322,13 +329,23 @@ public:
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  bool hasSSL() {
 | 
			
		||||
    if (beeType == XBEE_WIFI) return false;
 | 
			
		||||
    if (beeType == XBEE_S6B_WIFI) return false;
 | 
			
		||||
    else return true;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  String getBeeType() {
 | 
			
		||||
    if (beeType == XBEE_WIFI) return "S6B Wifi";
 | 
			
		||||
    else return "Cellular";
 | 
			
		||||
  XBeeType getBeeType() {
 | 
			
		||||
    return beeType;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  String getBeeName() {
 | 
			
		||||
    switch (XBeeType){
 | 
			
		||||
      case XBEE_S6B_WIFI: return "Digi XBee® Wi-Fi";
 | 
			
		||||
      case XBEE_LTE1_VZN: return "Digi XBee® Cellular LTE Cat 1";
 | 
			
		||||
      case XBEE_3G: return "Digi XBee® Cellular 3G";
 | 
			
		||||
      case XBEE3_LTE1_ATT: return "Digi XBee3™ Cellular LTE CAT 1";
 | 
			
		||||
      case XBEE3_LTEM_ATT: return "Digi XBee3™ Cellular LTE-M";
 | 
			
		||||
      case XBEE3_LTENB: return "Digi XBee3™ Cellular NB-IoT";
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
@@ -367,11 +384,11 @@ public:
 | 
			
		||||
    if (!commandMode()) return;  // Return immediately
 | 
			
		||||
    sendAT(GF("SM"),1);  // Pin sleep
 | 
			
		||||
    waitResponse();
 | 
			
		||||
    if (beeType == XBEE_WIFI && !maintainAssociation) {
 | 
			
		||||
    if (beeType == XBEE_S6B_WIFI && !maintainAssociation) {
 | 
			
		||||
        sendAT(GF("SO"),200);  // For lowest power, dissassociated deep sleep
 | 
			
		||||
        waitResponse();
 | 
			
		||||
    }
 | 
			
		||||
    else if (!maintainAssociation){
 | 
			
		||||
    else if ((!maintainAssociation){
 | 
			
		||||
        sendAT(GF("SO"),1);  // For lowest power, dissassociated deep sleep
 | 
			
		||||
                             // Not supported by all modules, will return "ERROR"
 | 
			
		||||
        waitResponse();
 | 
			
		||||
@@ -437,7 +454,7 @@ public:
 | 
			
		||||
    RegStatus stat = REG_UNKNOWN;
 | 
			
		||||
 | 
			
		||||
    switch (beeType){
 | 
			
		||||
      case XBEE_WIFI: {
 | 
			
		||||
      case XBEE_S6B_WIFI: {
 | 
			
		||||
        if(intRes == 0x00)  // 0x00 Successfully joined an access point, established IP addresses and IP listening sockets
 | 
			
		||||
          stat = REG_OK;
 | 
			
		||||
        else if(intRes == 0x01)  // 0x01 Wi-Fi transceiver initialization in progress.
 | 
			
		||||
@@ -467,7 +484,7 @@ public:
 | 
			
		||||
        else stat = REG_UNKNOWN;
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      case XBEE_CELL: {
 | 
			
		||||
      default: {
 | 
			
		||||
        if(intRes == 0x00)  // 0x00 Connected to the Internet.
 | 
			
		||||
          stat = REG_OK;
 | 
			
		||||
        else if(intRes == 0x22)  // 0x22 Registering to cellular network.
 | 
			
		||||
@@ -503,14 +520,14 @@ public:
 | 
			
		||||
 | 
			
		||||
  int getSignalQuality() {
 | 
			
		||||
    if (!commandMode()) return 0;  // Return immediately
 | 
			
		||||
    if (beeType == XBEE_WIFI) sendAT(GF("LM"));  // ask for the "link margin" - the dB above sensitivity
 | 
			
		||||
    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
 | 
			
		||||
    exitCommand();
 | 
			
		||||
    char buf[3] = {0,};  // Set up buffer for response
 | 
			
		||||
    res.toCharArray(buf, 3);
 | 
			
		||||
    int intRes = strtol(buf, 0, 16);
 | 
			
		||||
    if (beeType == XBEE_WIFI) return -93 + intRes;  // the maximum sensitivity is -93dBm
 | 
			
		||||
    if (beeType == XBEE_S6B_WIFI) return -93 + intRes;  // the maximum sensitivity is -93dBm
 | 
			
		||||
    else return -1*intRes; // need to convert to negative number
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user