portable version of the cumulocity demo

Dependencies:   C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed

Fork of MbedSmartRestMain by Cumulocity Official

Committer:
vwochnik
Date:
Wed Feb 12 11:25:26 2014 +0000
Revision:
7:f77afd49c35d
Parent:
6:642e7c233e83
Child:
8:940c782eec5e
fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vwochnik 6:642e7c233e83 1 #include "common.h"
vwochnik 6:642e7c233e83 2 #include "ATResultBuffer.h"
vwochnik 0:ed4d6fd405ea 3
vwochnik 0:ed4d6fd405ea 4 C027 c027;
vwochnik 6:642e7c233e83 5 ATCommandsInterface *cmdIface = NULL;
vwochnik 6:642e7c233e83 6 char cIMEI[21] = "";
vwochnik 6:642e7c233e83 7 char cCellId[9] = "";
vwochnik 7:f77afd49c35d 8 char cICCID[24] = "";
vwochnik 6:642e7c233e83 9 sigq_t sigQ = {0, 0};
vwochnik 0:ed4d6fd405ea 10
vwochnik 0:ed4d6fd405ea 11 int main()
vwochnik 0:ed4d6fd405ea 12 {
vwochnik 7:f77afd49c35d 13 int ret;
vwochnik 7:f77afd49c35d 14
vwochnik 7:f77afd49c35d 15 puts("Started...");
vwochnik 7:f77afd49c35d 16 c027.mdmWakeup();
vwochnik 7:f77afd49c35d 17 c027.mdmReset();
vwochnik 7:f77afd49c35d 18 c027.mdmPower(true);
vwochnik 7:f77afd49c35d 19 UbloxUSBGSMModem modem;
vwochnik 7:f77afd49c35d 20 cmdIface = modem.getATCommandsInterface();
vwochnik 6:642e7c233e83 21
vwochnik 6:642e7c233e83 22 puts("Connecting...");
vwochnik 4:363b4cc49445 23 if (modem.connect("public4.m2minternet.com")) {
vwochnik 4:363b4cc49445 24 puts("GPRS connection failure.");
vwochnik 4:363b4cc49445 25 return 2;
vwochnik 4:363b4cc49445 26 }
vwochnik 5:dee05a7c70f9 27
vwochnik 7:f77afd49c35d 28 // get before starting program
vwochnik 7:f77afd49c35d 29 imei();
vwochnik 7:f77afd49c35d 30 cellId();
vwochnik 4:363b4cc49445 31
vwochnik 7:f77afd49c35d 32 puts("Starting program...");
vwochnik 7:f77afd49c35d 33 ret = program();
vwochnik 4:363b4cc49445 34
vwochnik 4:363b4cc49445 35 modem.disconnect();
vwochnik 6:642e7c233e83 36 c027.mdmPower(false);
vwochnik 6:642e7c233e83 37
vwochnik 6:642e7c233e83 38 return ret;
vwochnik 4:363b4cc49445 39 }
vwochnik 4:363b4cc49445 40
vwochnik 6:642e7c233e83 41 const char * imei()
vwochnik 4:363b4cc49445 42 {
vwochnik 6:642e7c233e83 43 ATCommandsInterface::ATResult result;
vwochnik 6:642e7c233e83 44 ATResultBuffer buffer;
vwochnik 6:642e7c233e83 45
vwochnik 6:642e7c233e83 46 if ((cmdIface == NULL) || (strlen(cIMEI)))
vwochnik 6:642e7c233e83 47 return cIMEI;
vwochnik 4:363b4cc49445 48
vwochnik 6:642e7c233e83 49 cmdIface->execute("AT+CGSN", &buffer, &result);
vwochnik 6:642e7c233e83 50 if (ATCommandsInterface::ATResult::AT_OK == result.result)
vwochnik 6:642e7c233e83 51 strcpy(cIMEI, buffer.getLastLine());
vwochnik 6:642e7c233e83 52 else
vwochnik 6:642e7c233e83 53 cIMEI[0] = '\0';
vwochnik 4:363b4cc49445 54
vwochnik 6:642e7c233e83 55 return cIMEI;
vwochnik 0:ed4d6fd405ea 56 }
vwochnik 4:363b4cc49445 57
vwochnik 6:642e7c233e83 58 const char * cellId()
vwochnik 4:363b4cc49445 59 {
vwochnik 6:642e7c233e83 60 int len; uint32_t cellId;
vwochnik 6:642e7c233e83 61
vwochnik 6:642e7c233e83 62 ATCommandsInterface::ATResult result;
vwochnik 6:642e7c233e83 63 ATResultBuffer buffer;
vwochnik 6:642e7c233e83 64
vwochnik 6:642e7c233e83 65 cCellId[0] = '\0';
vwochnik 4:363b4cc49445 66
vwochnik 6:642e7c233e83 67 if (cmdIface == NULL)
vwochnik 6:642e7c233e83 68 return cCellId;
vwochnik 4:363b4cc49445 69
vwochnik 6:642e7c233e83 70 cmdIface->executeSimple("AT+CREG=2", &result);
vwochnik 6:642e7c233e83 71 if (ATCommandsInterface::ATResult::AT_OK != result.result)
vwochnik 6:642e7c233e83 72 return cCellId;
vwochnik 4:363b4cc49445 73
vwochnik 6:642e7c233e83 74 cmdIface->execute("AT+CREG?", &buffer, &result);
vwochnik 6:642e7c233e83 75 if (buffer.getLastLine() == NULL)
vwochnik 6:642e7c233e83 76 return cCellId;
vwochnik 6:642e7c233e83 77 sscanf(buffer.getLastLine(), "+CREG: 2,%*d,\"%*lx\",\"%lx\",%*d%n", &cellId, &len);
vwochnik 6:642e7c233e83 78 if (len != strlen(buffer.getLastLine()))
vwochnik 6:642e7c233e83 79 return cCellId;
vwochnik 6:642e7c233e83 80 snprintf(cCellId, sizeof(cCellId), "%lX", cellId);
vwochnik 4:363b4cc49445 81
vwochnik 6:642e7c233e83 82 return cCellId;
vwochnik 4:363b4cc49445 83 }
vwochnik 4:363b4cc49445 84
vwochnik 7:f77afd49c35d 85 const char * iccid()
vwochnik 7:f77afd49c35d 86 {
vwochnik 7:f77afd49c35d 87 int len;
vwochnik 7:f77afd49c35d 88
vwochnik 7:f77afd49c35d 89 ATCommandsInterface::ATResult result;
vwochnik 7:f77afd49c35d 90 ATResultBuffer buffer;
vwochnik 7:f77afd49c35d 91
vwochnik 7:f77afd49c35d 92 if ((cmdIface == NULL) || (strlen(cICCID)))
vwochnik 7:f77afd49c35d 93 return cICCID;
vwochnik 7:f77afd49c35d 94
vwochnik 7:f77afd49c35d 95 cmdIface->execute("AT+CCID?", &buffer, &result);
vwochnik 7:f77afd49c35d 96 if (buffer.getLastLine() == NULL)
vwochnik 7:f77afd49c35d 97 return cCellId;
vwochnik 7:f77afd49c35d 98 sscanf(buffer.getLastLine(), "+CCID: %s%n", cICCID, &len);
vwochnik 7:f77afd49c35d 99 if (len != strlen(buffer.getLastLine()))
vwochnik 7:f77afd49c35d 100 cICCID[0] = '\0';
vwochnik 7:f77afd49c35d 101
vwochnik 7:f77afd49c35d 102 return cICCID;
vwochnik 7:f77afd49c35d 103 }
vwochnik 7:f77afd49c35d 104
vwochnik 6:642e7c233e83 105 sigq_t * signalQuality()
vwochnik 4:363b4cc49445 106 {
vwochnik 6:642e7c233e83 107 int rssi = 0, ber = 0, len = 0;
vwochnik 4:363b4cc49445 108
vwochnik 6:642e7c233e83 109 ATCommandsInterface::ATResult result;
vwochnik 6:642e7c233e83 110 ATResultBuffer buffer;
vwochnik 6:642e7c233e83 111
vwochnik 6:642e7c233e83 112 sigQ.rssi = 0; sigQ.ber = 0;
vwochnik 4:363b4cc49445 113
vwochnik 6:642e7c233e83 114 if (cmdIface == NULL)
vwochnik 6:642e7c233e83 115 return &sigQ;
vwochnik 4:363b4cc49445 116
vwochnik 6:642e7c233e83 117 cmdIface->execute("AT+CSQ", &buffer, &result);
vwochnik 6:642e7c233e83 118 if (buffer.getLastLine() == NULL)
vwochnik 6:642e7c233e83 119 return &sigQ;
vwochnik 6:642e7c233e83 120
vwochnik 6:642e7c233e83 121 sscanf(buffer.getLastLine(), "+CSQ: %d,%d%n", &rssi, &ber, &len);
vwochnik 6:642e7c233e83 122 if (len != strlen(buffer.getLastLine()))
vwochnik 6:642e7c233e83 123 return &sigQ;
vwochnik 6:642e7c233e83 124
vwochnik 6:642e7c233e83 125 if (rssi <= 31)
vwochnik 6:642e7c233e83 126 sigQ.rssi = -113 + (2 * rssi);
vwochnik 6:642e7c233e83 127 else
vwochnik 6:642e7c233e83 128 sigQ.rssi = 0;
vwochnik 4:363b4cc49445 129
vwochnik 6:642e7c233e83 130 switch (ber) {
vwochnik 6:642e7c233e83 131 case 0: sigQ.ber = 49; break;
vwochnik 6:642e7c233e83 132 case 1: sigQ.ber = 43; break;
vwochnik 6:642e7c233e83 133 case 2: sigQ.ber = 37; break;
vwochnik 6:642e7c233e83 134 case 3: sigQ.ber = 31; break;
vwochnik 6:642e7c233e83 135 case 4: sigQ.ber = 25; break;
vwochnik 6:642e7c233e83 136 case 5: sigQ.ber = 19; break;
vwochnik 6:642e7c233e83 137 case 6: sigQ.ber = 13; break;
vwochnik 6:642e7c233e83 138 case 7: sigQ.ber = 7; break;
vwochnik 6:642e7c233e83 139 default: sigQ.ber = 0;
vwochnik 4:363b4cc49445 140 }
vwochnik 4:363b4cc49445 141
vwochnik 6:642e7c233e83 142 return &sigQ;
vwochnik 4:363b4cc49445 143 }