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
Revision 27:bfd402593acc, committed 2014-05-22
- Comitter:
- vwochnik
- Date:
- Thu May 22 18:07:13 2014 +0000
- Parent:
- 26:26e9899e2cbe
- Child:
- 28:2004400abeec
- Commit message:
- change u-blox modem driver
Changed in this revision
--- a/ATResultBuffer.cpp Wed Apr 16 08:31:21 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -#include "ATResultBuffer.h" -#include <stdlib.h> -#include <string.h> - -ATResultBuffer::ATResultBuffer() : _buffer(NULL) -{ -} - -ATResultBuffer::~ATResultBuffer() -{ - if (_buffer != NULL) - free((char*)_buffer); -} - -const char * ATResultBuffer::getLastLine() -{ - return _buffer; -} - -int ATResultBuffer::onNewATResponseLine(ATCommandsInterface* pInst, const char* line) -{ - size_t len; - - if (_buffer != NULL) - free((char*)_buffer); - _buffer = NULL; - - len = strlen(line); - - if (len) { - _buffer = (const char*)malloc(len+1); - strcpy((char*)_buffer, line); - } -} - -int ATResultBuffer::onNewEntryPrompt(ATCommandsInterface* pInst) -{ -} -
--- a/ATResultBuffer.h Wed Apr 16 08:31:21 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -#ifndef ATRESULTBUFFER_H -#define ATRESULTBUFFER_H - -#include "ATCommandsInterface.h" - -class ATResultBuffer : public IATCommandsProcessor -{ -public: - ATResultBuffer(); - ~ATResultBuffer(); - - const char * getLastLine(); - -protected: - virtual int onNewATResponseLine(ATCommandsInterface* pInst, const char* line); - virtual int onNewEntryPrompt(ATCommandsInterface* pInst); - -private: - const char *_buffer; -}; - -#endif \ No newline at end of file
--- a/C027.lib Wed Apr 16 08:31:21 2014 +0000 +++ b/C027.lib Thu May 22 18:07:13 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/ublox/code/C027/#bc9e2eb5daa8 +http://mbed.org/teams/ublox/code/C027/#89c45165ee87
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C027_Support.lib Thu May 22 18:07:13 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/ublox/code/C027_Support/#0a87d256cd24
--- a/UbloxUSBModem.lib Wed Apr 16 08:31:21 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/vwochnik/code/UbloxUSBModem/#07887ecfc6f2
--- a/common.h Wed Apr 16 08:31:21 2014 +0000 +++ b/common.h Thu May 22 18:07:13 2014 +0000 @@ -5,9 +5,8 @@ #include <stddef.h> #include "mbed.h" #include "C027.h" -#include "UbloxUSBGSMModem.h" -#include "UbloxUSBCDMAModem.h" #include "MbedSmartRest.h" +#include "rtos.h" #define A0 P0_23 #define A1 P0_24
--- 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; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Thu May 22 18:07:13 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#5dfe422a963d
--- a/mbed.bld Wed Apr 16 08:31:21 2014 +0000 +++ b/mbed.bld Thu May 22 18:07:13 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/8a40adfe8776 \ No newline at end of file