Official reference client implementation for Cumulocity SmartREST on u-blox C027.
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
Diff: main.cpp
- Revision:
- 27:bfd402593acc
- Parent:
- 24:8f9b678a7932
- Child:
- 28:2004400abeec
diff -r 26e9899e2cbe -r bfd402593acc main.cpp --- 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; }