diff --git a/src/TinyGsmClientXBee.h b/src/TinyGsmClientXBee.h index 5052762..f978279 100644 --- a/src/TinyGsmClientXBee.h +++ b/src/TinyGsmClientXBee.h @@ -109,9 +109,12 @@ public: } virtual int connect(IPAddress ip, uint16_t port, int timeout_s) { + if (timeout_s != 75) { + DBG("Timeout [", timeout_s, "] doesn't apply here."); + } // NOTE: Not caling stop() or yeild() here at->streamClear(); // Empty anything in the buffer before starting - sock_connected = at->modemConnect(ip, port, mux, false, timeout_s); + sock_connected = at->modemConnect(ip, port, mux, false); return sock_connected; } virtual int connect(IPAddress ip, uint16_t port) { @@ -259,9 +262,12 @@ public: } virtual int connect(IPAddress ip, uint16_t port, int timeout_s) { + if (timeout_s != 75) { + DBG("Timeout [", timeout_s, "] doesn't apply here."); + } // NOTE: Not caling stop() or yeild() here at->streamClear(); // Empty anything in the buffer before starting - sock_connected = at->modemConnect(ip, port, mux, true, timeout_s); + sock_connected = at->modemConnect(ip, port, mux, true); return sock_connected; } }; @@ -827,12 +833,30 @@ public: */ // Use: float vBatt = modem.getBattVoltage() / 1000.0; - uint16_t getBattVoltage() TINY_GSM_ATTR_NOT_AVAILABLE; + uint16_t getBattVoltage() { + int16_t intRes = 0; + XBEE_COMMAND_START_DECORATOR(5, false) + if (beeType == XBEE_UNKNOWN) getSeries(); + if (beeType == XBEE_S6B_WIFI) { + sendAT(GF("%V")); + intRes = readResponseInt(); + } + XBEE_COMMAND_END_DECORATOR + return intRes; + } + int8_t getBattPercent() TINY_GSM_ATTR_NOT_AVAILABLE; uint8_t getBattChargeState() TINY_GSM_ATTR_NOT_AVAILABLE; - bool getBattStats(uint8_t &chargeState, int8_t &percent, uint16_t &milliVolts) TINY_GSM_ATTR_NOT_AVAILABLE; + + bool getBattStats(uint8_t &chargeState, int8_t &percent, uint16_t &milliVolts) { + chargeState = 0; + percent = 0; + milliVolts = getBattVoltage(); + return true; + } float getTemperature() { + XBEE_COMMAND_START_DECORATOR(5, (float)-9999) String res = sendATGetString(GF("TP")); if (res == "") { return (float)-9999; @@ -840,6 +864,7 @@ public: char buf[5] = {0,}; res.toCharArray(buf, 5); int8_t intRes = (int8_t)strtol(buf, 0, 16); // degrees Celsius displayed in 8-bit two's complement format. + XBEE_COMMAND_END_DECORATOR return (float)intRes; } @@ -907,7 +932,7 @@ public: bool ssl = false, int timeout_s = 75) { bool retVal = false; - XBEE_COMMAND_START_DECORATOR(5, false) + XBEE_COMMAND_START_DECORATOR(5, false) // If this is a new host name, replace the saved host and wipe out the saved host IP if (this->savedHost != String(host)) { @@ -931,13 +956,9 @@ public: } bool modemConnect(IPAddress ip, uint16_t port, uint8_t mux = 0, - bool ssl = false, int timeout_s = 75) { + bool ssl = false) { bool success = true; - if (timeout_s != 75) { - DBG("Timeout doesn't apply here."); - } - // empty the saved currelty-in-use destination address savedOperatingIP = IPAddress(0, 0, 0, 0); @@ -972,8 +993,10 @@ public: } // we'll accept either unknown or connected - uint16_t ci = getConnectionIndicator(); - success &= (ci == 0x00 || ci == 0xFF || ci == 0x28); + if (beeType != XBEE_S6B_WIFI) { + uint16_t ci = getConnectionIndicator(); + success &= (ci == 0x00 || ci == 0xFF || ci == 0x28); + } if (success) { sockets[mux]->sock_connected = true;