A library for talking to Multi-Tech's Cellular SocketModem Devices.

Dependents:   M2X_dev axeda_wrapper_dev MTS_M2x_Example1 MTS_Cellular_Connect_Example ... more

Revision:
55:56d9a9d98079
Parent:
53:27c9622de0f9
Child:
57:88b07490d7e8
Child:
58:408f67fa292f
--- a/cellular/Cellular.cpp	Fri Dec 20 14:29:29 2013 +0000
+++ b/cellular/Cellular.cpp	Fri Dec 20 16:26:10 2013 +0000
@@ -188,7 +188,17 @@
         }
     }
     
-    ////Setup IP Connection
+    //Set Local Port
+    if(local_port != 0) {
+        //Attempt to set local port
+        sprintf(buffer, "AT#OUTPORT=%d", local_port);
+        Code code = sendBasicCommand(buffer, 1000);
+        if(code != CELL_OK) {
+            printf("[WARNING] Unable to set local port (%d) [%d]\r\n", local_port, (int) code);       
+        }
+    }
+    
+    //Set TCP/UDP parameters
     if(mode == TCP) {
         if(socketCloseable) {
             Code code = sendBasicCommand("AT#DLEMODE=1,1", 1000);
@@ -206,9 +216,9 @@
                 printf("[WARNING] Unable to set socket closeable [%d]\r\n", (int) code);       
             }
         }
-        sprintf(buffer, "AT#UDPPORT=1,%d", port);
+        sprintf(buffer, "AT#UDPPORT=%d", port);
         portCode = sendBasicCommand(buffer, 1000);
-        addressCode = sendBasicCommand("AT#UDPSERV=1,\"" + address + "\"", 1000);
+        addressCode = sendBasicCommand("AT#UDPSERV=\"" + address + "\"", 1000);
     }
     
     if(portCode == CELL_OK) {
@@ -223,22 +233,24 @@
         printf("[ERROR] Host address could not be set\r\n");
     }
     
-    if(local_port != 0) {
-        //Attempt to set local port
-        sprintf(buffer, "AT#OUTPORT=%d", local_port);
-        Code code = sendBasicCommand(buffer, 1000);
-        if(code != CELL_OK) {
-            printf("[WARNING] Unable to set local port (%d) [%d]\r\n", local_port, (int) code);       
-        }
-    }
+    
     
     // Try and Connect
-    string response = sendCommand("AT#OTCP=1", 30000);
+    std::string sMode;
+    std::string sOpenSocketCmd;
+    if(mode == TCP) {
+        sOpenSocketCmd = "AT#OTCP=1";
+        sMode = "TCP";
+    } else {
+        sOpenSocketCmd = "AT#OUDP";
+        sMode = "UDP";
+    }
+    string response = sendCommand(sOpenSocketCmd, 30000);
     if (response.find("Ok_Info_WaitingForData") != string::npos) {
-        printf("[INFO] Opened TCP Socket [%s:%d]\r\n", address.c_str(), port);
+        printf("[INFO] Opened %s Socket [%s:%d]\r\n", sMode.c_str(), address.c_str(), port);
         socketOpened = true;
     } else {
-        printf("[WARNING] Unable to open TCP Socket [%s:%d]\r\n", address.c_str(), port);
+        printf("[WARNING] Unable to open %s Socket [%s:%d]\r\n", sMode.c_str(),  address.c_str(), port);
         socketOpened = false;
     }