Simple detection for LE910-NA1 modules
Fork of MTS-Cellular by
Diff: Cellular/UIP.h
- 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