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 May 28 17:51:12 2014 +0000
Revision:
32:56804dd00193
Parent:
30:daa499571db7
Child:
33:b7d7e6fc421e
fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vwochnik 6:642e7c233e83 1 #include "common.h"
vwochnik 23:0a48eebaaba8 2 #include "apndb.h"
vwochnik 15:0ccf0f530a05 3 #include "io.h"
vwochnik 0:ed4d6fd405ea 4
vwochnik 0:ed4d6fd405ea 5 C027 c027;
vwochnik 32:56804dd00193 6 MDMSerial* pMdm;
vwochnik 28:2004400abeec 7 sigq_t sigQ = {};
vwochnik 28:2004400abeec 8 char cCellId[8+1];
vwochnik 28:2004400abeec 9 MDMParser::DevStatus devStatus = {};
vwochnik 28:2004400abeec 10 MDMParser::NetStatus netStatus = {};
vwochnik 0:ed4d6fd405ea 11
vwochnik 0:ed4d6fd405ea 12 int main()
vwochnik 0:ed4d6fd405ea 13 {
vwochnik 24:8f9b678a7932 14 int ret; size_t c;
vwochnik 7:f77afd49c35d 15
vwochnik 32:56804dd00193 16 puts("Hello");
vwochnik 32:56804dd00193 17
vwochnik 15:0ccf0f530a05 18 io_init();
vwochnik 15:0ccf0f530a05 19 puts("IO initialized.");
vwochnik 15:0ccf0f530a05 20
vwochnik 32:56804dd00193 21 MDMSerial mdm;
vwochnik 32:56804dd00193 22 pMdm = &mdm;
vwochnik 27:bfd402593acc 23
vwochnik 29:853741b9ea3b 24 if (!mdm.init(NULL, &devStatus)) {
vwochnik 28:2004400abeec 25 puts("Modem initialization failed. Check your PIN number.");
vwochnik 28:2004400abeec 26 return 1;
vwochnik 28:2004400abeec 27 }
vwochnik 28:2004400abeec 28
vwochnik 28:2004400abeec 29 puts("Searching for login...");
vwochnik 28:2004400abeec 30 apndb_t *apn = apndb_get(devStatus.imsi);
vwochnik 28:2004400abeec 31 if (apn == NULL) {
vwochnik 28:2004400abeec 32 puts("No APN found. Stop.");
vwochnik 28:2004400abeec 33 return 1;
vwochnik 4:363b4cc49445 34 }
vwochnik 29:853741b9ea3b 35
vwochnik 29:853741b9ea3b 36 // print out basic device data
vwochnik 29:853741b9ea3b 37 printf("IMEI: %s\n", devStatus.imei);
vwochnik 29:853741b9ea3b 38 printf("IMSI: %s\n", devStatus.imsi);
vwochnik 24:8f9b678a7932 39
vwochnik 32:56804dd00193 40 if (!mdm.registerNet(&netStatus)) {
vwochnik 32:56804dd00193 41 puts("Network registration failed.");
vwochnik 28:2004400abeec 42 return 1;
vwochnik 28:2004400abeec 43 }
vwochnik 28:2004400abeec 44
vwochnik 29:853741b9ea3b 45 printf("Carrier: %s\n", apn->carrier);
vwochnik 28:2004400abeec 46 puts("Joining Network.");
vwochnik 29:853741b9ea3b 47 if (mdm.join(apn->apn) == NOIP) {
vwochnik 29:853741b9ea3b 48 puts("Could not join network. Make sure chosen carrier is correct and no credentials are required.");
vwochnik 28:2004400abeec 49 return 1;
vwochnik 28:2004400abeec 50 }
vwochnik 23:0a48eebaaba8 51
vwochnik 23:0a48eebaaba8 52 // Shown on display
vwochnik 23:0a48eebaaba8 53 signalQuality();
vwochnik 4:363b4cc49445 54
vwochnik 7:f77afd49c35d 55 puts("Starting program...");
vwochnik 8:940c782eec5e 56
vwochnik 8:940c782eec5e 57 // restart program upon failure
vwochnik 8:940c782eec5e 58 do {
vwochnik 8:940c782eec5e 59 ret = program();
vwochnik 12:beb64aa0da86 60 if (ret)
vwochnik 12:beb64aa0da86 61 puts("Restarting program...");
vwochnik 8:940c782eec5e 62 } while (ret);
vwochnik 32:56804dd00193 63
vwochnik 30:daa499571db7 64 mdm.disconnect();
vwochnik 6:642e7c233e83 65 c027.mdmPower(false);
vwochnik 6:642e7c233e83 66
vwochnik 8:940c782eec5e 67 return 0;
vwochnik 4:363b4cc49445 68 }
vwochnik 4:363b4cc49445 69
vwochnik 6:642e7c233e83 70 const char * imei()
vwochnik 4:363b4cc49445 71 {
vwochnik 28:2004400abeec 72 return devStatus.imei;
vwochnik 0:ed4d6fd405ea 73 }
vwochnik 4:363b4cc49445 74
vwochnik 23:0a48eebaaba8 75 const char * imsi()
vwochnik 23:0a48eebaaba8 76 {
vwochnik 28:2004400abeec 77 return devStatus.imsi;
vwochnik 23:0a48eebaaba8 78 }
vwochnik 23:0a48eebaaba8 79
vwochnik 6:642e7c233e83 80 const char * cellId()
vwochnik 4:363b4cc49445 81 {
vwochnik 32:56804dd00193 82 if (!pMdm->checkNetStatus(&netStatus))
vwochnik 28:2004400abeec 83 return NULL;
vwochnik 28:2004400abeec 84
vwochnik 28:2004400abeec 85 if (snprintf(cCellId, sizeof(cCellId), "%X", netStatus.ci) < 1)
vwochnik 28:2004400abeec 86 return NULL;
vwochnik 28:2004400abeec 87
vwochnik 6:642e7c233e83 88 return cCellId;
vwochnik 4:363b4cc49445 89 }
vwochnik 4:363b4cc49445 90
vwochnik 7:f77afd49c35d 91 const char * iccid()
vwochnik 7:f77afd49c35d 92 {
vwochnik 28:2004400abeec 93 return devStatus.ccid;
vwochnik 7:f77afd49c35d 94 }
vwochnik 7:f77afd49c35d 95
vwochnik 6:642e7c233e83 96 sigq_t * signalQuality()
vwochnik 4:363b4cc49445 97 {
vwochnik 6:642e7c233e83 98 sigQ.rssi = 0; sigQ.ber = 0;
vwochnik 32:56804dd00193 99 if (!pMdm->checkNetStatus(&netStatus))
vwochnik 28:2004400abeec 100 return NULL;
vwochnik 28:2004400abeec 101
vwochnik 28:2004400abeec 102 sigQ.rssi = netStatus.rssi;
vwochnik 28:2004400abeec 103 sigQ.ber = netStatus.ber;
vwochnik 20:ef9cc1b42e9d 104
vwochnik 28:2004400abeec 105 lcd_signal(sigQ.rssi, sigQ.ber);
vwochnik 6:642e7c233e83 106 return &sigQ;
vwochnik 4:363b4cc49445 107 }
vwochnik 32:56804dd00193 108
vwochnik 32:56804dd00193 109 void credentials_set(credentials_t *dst, const char *tenant, const char *username, const char *password)
vwochnik 32:56804dd00193 110 {
vwochnik 32:56804dd00193 111 char *ptr = dst->username;
vwochnik 32:56804dd00193 112
vwochnik 32:56804dd00193 113 strcpy(ptr, tenant);
vwochnik 32:56804dd00193 114 ptr += strlen(tenant);
vwochnik 32:56804dd00193 115 strcpy(ptr++, "/");
vwochnik 32:56804dd00193 116 strcpy(ptr, username);
vwochnik 32:56804dd00193 117 strcpy(dst->password, password);
vwochnik 32:56804dd00193 118 }
vwochnik 32:56804dd00193 119
vwochnik 32:56804dd00193 120 bool credentials_read(credentials_t *dst)
vwochnik 32:56804dd00193 121 {
vwochnik 32:56804dd00193 122 char buf[CREDENTIALS_BUFFER], *ptr;
vwochnik 32:56804dd00193 123
vwochnik 32:56804dd00193 124 int res = pMdm->readFile(CREDENTIALS_FILE, buf, CREDENTIALS_BUFFER);
vwochnik 32:56804dd00193 125
vwochnik 32:56804dd00193 126 if (res < 0)
vwochnik 32:56804dd00193 127 return false;
vwochnik 32:56804dd00193 128
vwochnik 32:56804dd00193 129 if ((ptr = strchr(buf, '\n')) == NULL)
vwochnik 32:56804dd00193 130 return false;
vwochnik 32:56804dd00193 131 *ptr = '\0';
vwochnik 32:56804dd00193 132
vwochnik 32:56804dd00193 133 ptr = buf;
vwochnik 32:56804dd00193 134 strcpy(dst->username, ptr);
vwochnik 32:56804dd00193 135 ptr += strlen(ptr)+1;
vwochnik 32:56804dd00193 136 strcpy(dst->password, ptr);
vwochnik 32:56804dd00193 137 return true;
vwochnik 32:56804dd00193 138 }
vwochnik 32:56804dd00193 139
vwochnik 32:56804dd00193 140 void credentials_write(credentials_t *src)
vwochnik 32:56804dd00193 141 {
vwochnik 32:56804dd00193 142 char buf[CREDENTIALS_BUFFER], *ptr;
vwochnik 32:56804dd00193 143 size_t len;
vwochnik 32:56804dd00193 144
vwochnik 32:56804dd00193 145 ptr = buf;
vwochnik 32:56804dd00193 146 len = strlen(src->username);
vwochnik 32:56804dd00193 147 strcpy(ptr, src->username);
vwochnik 32:56804dd00193 148 ptr += len;
vwochnik 32:56804dd00193 149
vwochnik 32:56804dd00193 150 *ptr++ = '\n';
vwochnik 32:56804dd00193 151 len++;
vwochnik 32:56804dd00193 152
vwochnik 32:56804dd00193 153 len += strlen(src->password);
vwochnik 32:56804dd00193 154 strcpy(ptr, src->password);
vwochnik 32:56804dd00193 155
vwochnik 32:56804dd00193 156 pMdm->delFile(CREDENTIALS_FILE);
vwochnik 32:56804dd00193 157 pMdm->writeFile(CREDENTIALS_FILE, buf, len);
vwochnik 32:56804dd00193 158 }
vwochnik 32:56804dd00193 159
vwochnik 32:56804dd00193 160 void credentials_reset()
vwochnik 32:56804dd00193 161 {
vwochnik 32:56804dd00193 162 pMdm->delFile(CREDENTIALS_FILE);
vwochnik 32:56804dd00193 163 }