SmartREST client reference implementation for the u-blox C027 mbed compatible device.

Dependencies:   C027 C027_Support mbed mbed-rtos MbedSmartRest LM75B MMA7660 C12832

Fork of MbedSmartRestTest by Vincent Wochnik

Revision:
27:bfd402593acc
Parent:
24:8f9b678a7932
Child:
28:2004400abeec
--- a/main.cpp	Wed Apr 16 08:31:21 2014 +0000
+++ b/main.cpp	Thu May 22 18:07:13 2014 +0000
@@ -1,14 +1,33 @@
 #include "common.h"
 #include "apndb.h"
 #include "io.h"
-#include "ATResultBuffer.h"
 
+//----------------------------------------------------------------------
+// You may need to configure these parameters
+ 
+/** Set your secret SIM pin here "1234"
+*/
+#define SIMPIN      NULL
+ 
+/** The APN of your network operator, sometimes it is "internet" 
+    check your contract with the network operator
+*/
+#define APN         "public4.m2minternet.com"
+ 
+/** Set the user name for your APN, or NULL if not needed
+*/
+#define USERNAME    NULL
+ 
+/** Set the password for your APN, or NULL if not needed
+*/
+#define PASSWORD    NULL 
+ 
 C027 c027;
-ATCommandsInterface *cmdIface = NULL;
-char cIMEI[21] = "";
+MDMSerial mdm;
+char cIMEI[21] = "ADASDF1312";
 char cIMSI[16] = "";
 char cCellId[9] = "";
-char cICCID[24] = "";
+char cICCID[24] = "12345";
 sigq_t sigQ = {0, 0};
 
 int main()
@@ -22,8 +41,6 @@
     c027.mdmWakeup();
     c027.mdmReset();
     c027.mdmPower(true);
-    UbloxUSBGSMModem modem;
-    cmdIface = modem.getATCommandsInterface();
     
     /*puts("Searching for login...");
     // get imsi number
@@ -34,8 +51,8 @@
     else
         printf("APN: %s\n", apn->apn);
     */
-    
-    if (modem.connect("public4.m2minternet.com")) {
+
+    if (!mdm.connect(SIMPIN, APN,USERNAME,PASSWORD, true)) {    
         puts("GPRS connection failure.");
         return 2;
     }
@@ -66,7 +83,6 @@
             puts("Restarting program...");
     } while (ret);
 
-    modem.disconnect();
     c027.mdmPower(false);
     
     return 0;
@@ -74,125 +90,29 @@
 
 const char * imei()
 {
-    ATCommandsInterface::ATResult result;
-    ATResultBuffer buffer;
-    
-    if ((cmdIface == NULL) || (strlen(cIMEI)))
-        return cIMEI;
-
-    cmdIface->execute("AT+CGSN", &buffer, &result);
-    if (ATCommandsInterface::ATResult::AT_OK == result.result)
-        strcpy(cIMEI, buffer.getLastLine());
-    else
-        cIMEI[0] = '\0';
-
     return cIMEI;
 }
 
 const char * imsi()
 {
-    ATCommandsInterface::ATResult result;
-    ATResultBuffer buffer;
-    
-    if ((cmdIface == NULL) || (strlen(cIMSI)))
-        return cIMSI;
-
-    cmdIface->execute("AT+CIMI", &buffer, &result);
-    if (ATCommandsInterface::ATResult::AT_OK == result.result)
-        strcpy(cIMSI, buffer.getLastLine());
-    else
-        cIMSI[0] = '\0';
-
     return cIMSI;
 }
 
 const char * cellId()
 {
-    int len; uint32_t cellId;
-    
-    ATCommandsInterface::ATResult result;
-    ATResultBuffer buffer;
-    
-    cCellId[0] = '\0';
-
-    if (cmdIface == NULL)
-        return cCellId;
-
-    cmdIface->executeSimple("AT+CREG=2", &result);
-    if (ATCommandsInterface::ATResult::AT_OK != result.result)
-        return cCellId;
-
-    cmdIface->execute("AT+CREG?", &buffer, &result);
-    if (buffer.getLastLine() == NULL)
-        return cCellId;
-    sscanf(buffer.getLastLine(), "+CREG: 2,%*d,\"%*lx\",\"%lx\",%*d%n", &cellId, &len);
-    if (len != strlen(buffer.getLastLine()))
-        return cCellId;
-    snprintf(cCellId, sizeof(cCellId), "%lX", cellId);
-
     return cCellId;
 }
 
 const char * iccid()
 {
-    int len;
-    
-    ATCommandsInterface::ATResult result;
-    ATResultBuffer buffer;
-    
-    if ((cmdIface == NULL) || (strlen(cICCID)))
-        return cICCID;
-
-    cmdIface->execute("AT+CCID?", &buffer, &result);
-    if (buffer.getLastLine() == NULL)
-        return cCellId;
-    sscanf(buffer.getLastLine(), "+CCID: %s%n", cICCID, &len);
-    if (len != strlen(buffer.getLastLine()))
-        cICCID[0] = '\0';
-
     return cICCID;
 }
 
 sigq_t * signalQuality()
 {
-    int rssi = 0, ber = 0, len = 0;
-
-    ATCommandsInterface::ATResult result;
-    ATResultBuffer buffer;
-    
     sigQ.rssi = 0; sigQ.ber = 0;
     
     lcd_signal(0, 0);
 
-    if (cmdIface == NULL)
-        return &sigQ;
-
-    cmdIface->execute("AT+CSQ", &buffer, &result);
-    if (buffer.getLastLine() == NULL)
-        return &sigQ;
-        
-    sscanf(buffer.getLastLine(), "+CSQ: %d,%d%n", &rssi, &ber, &len);
-    if (len != strlen(buffer.getLastLine()))
-        return &sigQ;
-    
-    if (rssi <= 31)
-        sigQ.rssi = -113 + (2 * rssi);
-    else
-        sigQ.rssi = 0;
-
-    switch (ber) {
-        case 0: sigQ.ber = 49; break;
-        case 1: sigQ.ber = 43; break;
-        case 2: sigQ.ber = 37; break;
-        case 3: sigQ.ber = 31; break;
-        case 4: sigQ.ber = 25; break;
-        case 5: sigQ.ber = 19; break;
-        case 6: sigQ.ber = 13; break;
-        case 7: sigQ.ber = 7; break;
-        default: sigQ.ber = 0;
-    }
-    
-    lcd_signal(sigQ.rssi, sigQ.ber);
-
     return &sigQ;
 }