Simple detection for LE910-NA1 modules

Fork of MTS-Cellular by MultiTech

Revision:
52:2cb58398a4f9
Parent:
46:56ab41157957
Child:
53:1aee5fe47adb
--- a/Cellular/UIP.h	Tue Aug 05 18:35:22 2014 +0000
+++ b/Cellular/UIP.h	Mon Aug 11 16:03:19 2014 +0000
@@ -29,288 +29,6 @@
 * using GPIOs. To disable this you will need to change settings on the radio module and
 * and use the MTSSerial class instead of MTSSerialFlowControl. The default baud rate for the
 * cellular radio is 115200 bps.
-*
-* @code
-* #include "mbed.h"
-* #include "mtsas.h"
-* #include "TCPSocketConnection.h"
-*
-* int main(){
-*   //Modify to match your apn if you are using an HSPA radio with a SIM card
-*   const char APN[] = "";
-*
-*   //Sets the log level to INFO, which is about midway on priority levels
-*   //Possible levels: FATAL, ERROR, WARNING, INFO, DEBUG, TRACE, NONE
-*   MTSLog::setLogLevel(MTSLog::TRACE_LEVEL);
-*
-*   // STMicro Nucelo F401RE
-*   // The supported jumper configurations of the MTSAS do not line up with
-*   // the pin mapping of the Nucleo F401RE. Therefore, the MTSAS serial TX
-*   // pin (JP8 Pin 2) must be manually jumped to Serial1 RX (Shield pin D2)
-*   // and the MTSAS serial RX pin (JP9 Pin 2) pin must be manually jumped to
-*   // Serial1 TX (Shield pin D8).
-*   // Uncomment the following line to use the STMicro Nuceleo F401RE
-*   MTSSerialFlowControl* io = new MTSSerialFlowControl(D8, D2, D3, D6);
-*
-*   // Freescale KL46Z
-*   // To configure the pins for the Freescale KL46Z board, use configuration B
-*   // for the SocketModem.
-*   // Uncomment the following line to use the Freescale KL46Z board
-*   // MTSSerialFlowControl* io = new MTSSerialFlowControl(D2, D9, D3, D6);
-*
-*   // Freescale KL64F
-*   // To configure the pins for the Freescale KL46Z board, use configuration A
-*   // for the SocketModem.
-*   // Uncomment te following line to use the Freescale KL46F board
-*   // MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6);
-*
-*   // Sets the baudrate for communicating with the radio
-*   io->baud(115200);
-*
-*   // Sets up the interfacing with the radio through the MTS library
-*   Cellular* radio = CellularFactory::create(io);
-*   radio->configureSignals(D4, D7, RESET);
-*   Transport::setTransport(radio);
-*
-*   // Sets the APN on the device (if necessary)
-*   for (int i = 0; i < 10; i++) {
-*       if (i >= 10) {
-*           logError("Failed to set APN to %s", APN);
-*       }
-*       if (radio->setApn(APN) == MTS_SUCCESS) {
-*           logInfo("Successfully set APN to %s", APN);
-*           break;
-*       } else {
-*           wait(1);
-*       }
-*   }
-*
-*   //Establish PPP link
-*   for (int i = 0; i < 10; i++) {
-*       if (i >= 10) {
-*       logError("Failed to establish PPP link");
-*       }
-*       if (radio->connect() == true) {
-*           logInfo("Successfully established PPP link");
-*           break;
-*       } else {
-*           wait(1);
-*       }
-*   }
-*
-*   //Ping google.com (optional)
-*   for (int i = 0; i < 10; i++) {
-*       if (i >= 10) {
-*           logError("Failed to ping www.google.com");
-*       }
-*       if (radio->ping("www.google.com") == true) {
-*           logInfo("Successfully pinged www.google.com");
-*           break;
-*       } else {
-*           wait(1);
-*       }
-*   }
-*
-*   //Used for packet verification from server's data response
-*   const char PATTERN_LINE1[] = "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}|";
-*   const char PATTERN[] = "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}|\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}/\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}-\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}\\\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}|\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}/\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}-\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}\\\r\n"
-*                          "abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()[]{}*\r\n";
-*   
-*   const char MENU_LINE1[] = "send ascii pattern until keypress";
-*   const char MENU[] = "1       send ascii pattern until keypress"
-*                       "2       send ascii pattern (numbered)"
-*                       "3       send pattern and close socket"
-*                       "4       send [ETX] and wait for keypress"
-*                       "5       send [DLE] and wait for keypress"
-*                       "6       send all hex values (00-FF)"
-*                       "q       quit"
-*                       ">:";
-*   
-*   const char TCP_TEST_SERVER[] = "204.26.122.5";
-*   const int TCP_TEST_PORT = 7000;
-*   
-*   //Creates TCP socket pointer instance
-*   TCPSocketConnection* sock = new TCPSocketConnection();
-*   //Turns off read_blocking and sets socket timeout to 2s
-*   sock->set_blocking(false, 2);
-*   
-*   Timer tmr; //Used for timeouts
-*   int bytesRead = 0; //Number of bytes read
-*   const int readSize = 1024; //Size of buffer
-*   char buffer[readSize] = {0}; //Read buffer
-*   string result; //Result as a string
-*   
-*   //Open TCP socket
-*   for (int i = 0; i < 5; i++) {
-*       if (i >= 5) {
-*           logError("Failed to open socket");
-*       }
-*       if (! sock->connect(TCP_TEST_SERVER, TCP_TEST_PORT)) {
-*           logInfo("Opened TCP server");
-*           break;
-*       } else {
-*           wait(1);
-*       }
-*   }
-*   
-*   //Waiting for menu from remote server
-*   logInfo("Receiving Menu");
-*   tmr.reset();
-*   tmr.start();
-*   do {
-*       bytesRead = sock->receive(buffer, readSize);
-*       if (bytesRead > 0) {
-*           result.append(buffer, bytesRead);
-*       }
-*       logInfo("Total Bytes Read: %d", result.size());
-*       if(result.find(MENU_LINE1) != std::string::npos) {
-*           break;
-*       }
-*   } while(tmr.read() <= 40);
-*   
-*   wait(5);
-*
-*   logInfo("Received: [%d] [%s]", result.size(), result.c_str());
-*
-*   //Checking that menu was successfully received
-*   size_t pos = result.find(MENU_LINE1);
-*   if(pos != string::npos) {
-*       logInfo("Found Menu 1st Line");
-*   } else {
-*       logError("Failed To Find Menu 1st Line");
-*       sock->close();
-*       return 0;
-*   }
-*
-*   result.clear();
-*
-*   //Sends a response of '2' back to choose option 2 from the menu
-*   logInfo("Writing To Socket: 2");
-*   if(sock->send("2\r\n", 3) == 3) {
-*       logInfo("Successfully Wrote '2'");
-*   } else {
-*       logError("Failed To Write '2'");
-*       sock->close();
-*       return 0;
-*   }
-*   logInfo("Expecting 'how many ? >:'");
-*   tmr.reset();
-*   tmr.start();
-*   do {
-*       bytesRead = sock->receive(buffer, readSize);
-*       if (bytesRead > 0) {
-*           result.append(buffer, bytesRead);
-*       }
-*       logInfo("Total Bytes Read: %d", result.size());
-*       if(result.find("how many") != std::string::npos) {
-*           break;
-*       }
-*   } while(tmr.read() <= 40);
-*
-*   logInfo("Received: [%d] [%s]", result.size(), result.c_str());
-*
-*   //Sends 2 to have the server send the pattern twice
-*   if(result.find("how many") != std::string::npos) {
-*       logInfo("Successfully Found 'how many'");
-*       logInfo("Writing To Socket: 2");
-*       if(sock->send("2\r\n", 3) == 3) {
-*           logInfo("Successfully wrote '2'");
-*       } else {
-*           logError("Failed to write '2'");
-*           sock->close();
-*           return 0;
-*       }
-*   } else {
-*       logError("didn't receive 'how many'");
-*       sock->close();
-*       return 0;
-*   }
-*
-*   result.clear();
-*
-*   //Receives data from request sent to server
-*   logInfo("Receiving Data");
-*   tmr.reset();
-*   tmr.start();
-*   do {
-*       bytesRead = sock->receive(buffer, readSize);
-*       if (bytesRead > 0) {
-*           result.append(buffer, bytesRead);
-*       }
-*       logInfo("Total Bytes Read: %d", result.size());
-*       if(result.size() >= 1645) {
-*           break;
-*       }
-*   } while(tmr.read() <= 40);
-*
-*   logInfo("Received Data: [%d] [%s]", result.size(), result.c_str());
-*
-*   //Compares received data with expected data
-*   pos = result.find(PATTERN_LINE1);
-*   if(pos != string::npos) {
-*       int patternSize = sizeof(PATTERN) - 1;
-*       const char* ptr = &result.data()[pos];
-*       bool match = true;
-*       for(int i = 0; i < patternSize; i++) {
-*           if(PATTERN[i] != ptr[i]) {
-*               logError("1st Pattern Doesn't Match At [%d]", i);
-*               logError("Pattern [%02X]  Buffer [%02X]", PATTERN[i], ptr[i]);
-*               match = false;
-*               break;
-*           }
-*       }
-*       if(match) {
-*           logInfo("Found 1st Pattern");
-*       } else {
-*           logError("Failed To Find 1st Pattern");
-*           sock->close();
-*           return 0;
-*       }
-*
-*       pos = result.find(PATTERN_LINE1, pos + patternSize);
-*       if(pos != std::string::npos) {
-*           ptr = &result.data()[pos];
-*           match = true;
-*           for(int i = 0; i < patternSize; i++) {
-*               if(PATTERN[i] != ptr[i]) {
-*                   logError("2nd Pattern Doesn't Match At [%d]", i);
-*                   logError("Pattern [%02X]  Buffer [%02X]", PATTERN[i], ptr[i]);
-*                   match = false;
-*                   break;
-*               }
-*           }
-*           if(match) {
-*               logInfo("Found 2nd Pattern");
-*           } else {
-*               logError("Failed To Find 2nd Pattern");
-*               sock->close();
-*               return 0;
-*           }
-*       }
-*   } else {
-*       logError("Failed To Find Pattern 1st Line");
-*       sock->close();
-*       return 0;
-*   }
-*
-*   //Clears the result, and closes the socket connection.
-*   result.clear();
-*   sock->close();
-*   
-*   //Disconnect ppp link
-*   radio->disconnect();
-*   
-*   logInfo("End of example code");
-*   return 0;
-* }
-* @endcode
 */
 
 class UIP : public Cellular