Cellular library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems
Dependents: mtsas mtsas mtsas mtsas
Diff: Cellular/UIP.cpp
- Revision:
- 10:c188cc05aed5
- Parent:
- 9:1a03e3f3e7fe
- Child:
- 11:4e428f689069
diff -r 1a03e3f3e7fe -r c188cc05aed5 Cellular/UIP.cpp --- a/Cellular/UIP.cpp Wed May 21 15:39:35 2014 -0500 +++ b/Cellular/UIP.cpp Wed May 21 15:45:05 2014 -0500 @@ -599,91 +599,3 @@ return SUCCESS; } - -Code UIP::sendBasicCommand(const std::string& command, unsigned int timeoutMillis, char esc) -{ - if(socketOpened) { - logError("socket is open. Can not send AT commands"); - return ERROR; - } - - string response = sendCommand(command, timeoutMillis, esc); - if (response.size() == 0) { - return NO_RESPONSE; - } else if (response.find("OK") != string::npos) { - return SUCCESS; - } else if (response.find("ERROR") != string::npos) { - return ERROR; - } else { - return FAILURE; - } -} - -string UIP::sendCommand(const std::string& command, unsigned int timeoutMillis, char esc) -{ - if(io == NULL) { - logError("MTSBufferedIO not set"); - return ""; - } - if(socketOpened) { - logError("socket is open. Can not send AT commands"); - return ""; - } - - io->rxClear(); - io->txClear(); - std::string result; - - //Attempt to write command - if(io->write(command.data(), command.size(), timeoutMillis) != command.size()) { - //Failed to write command - if (command != "AT" && command != "at") { - logError("failed to send command to radio within %d milliseconds", timeoutMillis); - } - return ""; - } - - //Send Escape Character - if (esc != 0x00) { - if(io->write(esc, timeoutMillis) != 1) { - if (command != "AT" && command != "at") { - logError("failed to send character '%c' (0x%02X) to radio within %d milliseconds", esc, esc, timeoutMillis); - } - return ""; - } - } - - int timer = 0; - size_t previous = 0; - char tmp[256]; - tmp[255] = 0; - bool started = !echoMode; - bool done = false; - do { - wait(0.1); - timer += 100; - - previous = result.size(); - //Make a non-blocking read call by passing timeout of zero - int size = io->read(tmp,255,0); //1 less than allocated (timeout is instant) - if(size > 0) { - result.append(tmp, size); - } - if(!started) { - //In Echo Mode (Command will have echo'd + 2 characters for \r\n) - if(result.size() > command.size() + 2) { - started = true; - } - } else { - done = (result.size() == previous); - } - if(timer >= timeoutMillis) { - if (command != "AT" && command != "at") { - logWarning("sendCommand [%s] timed out after %d milliseconds", command.c_str(), timeoutMillis); - } - done = true; - } - } while (!done); - - return result; -}