Added extra responses for AI for XBee
This commit is contained in:
@@ -229,10 +229,7 @@ public:
|
||||
if (ret_val) guardTime = 125;
|
||||
|
||||
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);
|
||||
int intRes = readResponseInt();
|
||||
beeType = (XBeeType)intRes;
|
||||
|
||||
exitCommand();
|
||||
@@ -299,7 +296,7 @@ public:
|
||||
if (!commandMode()) return modemInf; // Try up to 10 times for the init
|
||||
|
||||
sendAT(GF("HS")); // Get the "Hardware Series"
|
||||
modemInf += readResponse();
|
||||
modemInf += readResponseString();
|
||||
|
||||
exitCommand();
|
||||
return modemInf;
|
||||
@@ -402,7 +399,7 @@ public:
|
||||
String getSimCCID() {
|
||||
if (!commandMode()) return ""; // Return immediately
|
||||
sendAT(GF("S#"));
|
||||
String res = readResponse();
|
||||
String res = readResponseString();
|
||||
exitCommand();
|
||||
return res;
|
||||
}
|
||||
@@ -410,7 +407,7 @@ public:
|
||||
String getIMEI() {
|
||||
if (!commandMode()) return ""; // Return immediately
|
||||
sendAT(GF("IM"));
|
||||
String res = readResponse();
|
||||
String res = readResponseString();
|
||||
exitCommand();
|
||||
return res;
|
||||
}
|
||||
@@ -423,10 +420,7 @@ public:
|
||||
if (!commandMode()) return REG_UNKNOWN; // Return immediately
|
||||
|
||||
sendAT(GF("AI"));
|
||||
String res = readResponse();
|
||||
char buf[3] = {0,}; // Set up buffer for response
|
||||
res.toCharArray(buf, 3);
|
||||
int intRes = strtol(buf, 0, 16);
|
||||
int intRes = readResponseInt();
|
||||
RegStatus stat = REG_UNKNOWN;
|
||||
|
||||
switch (beeType){
|
||||
@@ -475,13 +469,18 @@ public:
|
||||
writeChanges();
|
||||
stat = REG_UNKNOWN;
|
||||
}
|
||||
else if(intRes == 0x2B) { // 0x2B USB Direct active.
|
||||
stat = REG_UNKNOWN;
|
||||
}
|
||||
else if(intRes == 0x2C) // 0x2C Cellular component is in PSM (power save mode).
|
||||
stat = REG_UNKNOWN;
|
||||
else if(intRes == 0x2F) { // 0x2F Bypass mode active.
|
||||
sendAT(GF("AP0")); // Set back to transparent mode
|
||||
waitResponse();
|
||||
writeChanges();
|
||||
stat = REG_UNKNOWN;
|
||||
}
|
||||
else if(intRes == 0xFF) // 0xFF Device is currently scanning for the configured SSID.
|
||||
else if(intRes == 0xFF) // 0xFF Initializing.
|
||||
stat = REG_SEARCHING;
|
||||
else stat = REG_UNKNOWN;
|
||||
break;
|
||||
@@ -495,7 +494,7 @@ public:
|
||||
String getOperator() {
|
||||
if (!commandMode()) return ""; // Return immediately
|
||||
sendAT(GF("MN"));
|
||||
String res = readResponse();
|
||||
String res = readResponseString();
|
||||
exitCommand();
|
||||
return res;
|
||||
}
|
||||
@@ -508,11 +507,8 @@ public:
|
||||
if (!commandMode()) return 0; // Return immediately
|
||||
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
|
||||
int intRes = readResponseInt();
|
||||
exitCommand();
|
||||
char buf[3] = {0,}; // Set up buffer for response
|
||||
res.toCharArray(buf, 3);
|
||||
int intRes = strtol(buf, 0, 16);
|
||||
if (beeType == XBEE_S6B_WIFI) return -93 + intRes; // the maximum sensitivity is -93dBm
|
||||
else return -1*intRes; // need to convert to negative number
|
||||
}
|
||||
@@ -576,7 +572,7 @@ fail:
|
||||
sendAT(GF("MY"));
|
||||
String IPaddr; IPaddr.reserve(16);
|
||||
// wait for the response - this response can be very slow
|
||||
IPaddr = readResponse(30000);
|
||||
IPaddr = readResponseString(30000);
|
||||
exitCommand();
|
||||
IPaddr.trim();
|
||||
return IPaddr;
|
||||
@@ -840,7 +836,7 @@ finish:
|
||||
waitResponse();
|
||||
}
|
||||
|
||||
String readResponse(uint32_t timeout = 1000) {
|
||||
String readResponseString(uint32_t timeout = 1000) {
|
||||
TINY_GSM_YIELD();
|
||||
unsigned long startMillis = millis();
|
||||
while (!stream.available() && millis() - startMillis < timeout) {};
|
||||
@@ -850,6 +846,14 @@ finish:
|
||||
return res;
|
||||
}
|
||||
|
||||
int readResponseInt(uint32_t timeout = 1000) {
|
||||
String res = readResponseString(timeout);
|
||||
char buf[3] = {0,}; // Set up buffer for response
|
||||
res.toCharArray(buf, 3);
|
||||
int intRes = strtol(buf, 0, 16);
|
||||
return intRes;
|
||||
}
|
||||
|
||||
public:
|
||||
Stream& stream;
|
||||
|
||||
|
Reference in New Issue
Block a user