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 Vincent Wochnik

Committer:
xinlei
Date:
Tue Mar 03 14:10:09 2015 +0000
Revision:
77:f6717e4eccc4
Parent:
74:ca3001991fdc
Child:
97:ea056f6be2e8
Working device push, DNS caching, change logging level when running and more.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Cumulocity 41:804f6a0bda26 1 #include <stdlib.h>
Cumulocity 41:804f6a0bda26 2 #include <string.h>
xinlei 74:ca3001991fdc 3 #include "DeviceInfo.h"
xinlei 74:ca3001991fdc 4 #include "logging.h"
Cumulocity 41:804f6a0bda26 5
Cumulocity 41:804f6a0bda26 6 DeviceInfo::DeviceInfo(MDMSerial& mdm, MDMParser::DevStatus& devStatus) :
Cumulocity 41:804f6a0bda26 7 _mdm(mdm)
Cumulocity 41:804f6a0bda26 8 {
Cumulocity 41:804f6a0bda26 9 *_cellId = '\0';
Cumulocity 41:804f6a0bda26 10 memcpy(&_devStatus, &devStatus, sizeof(MDMParser::DevStatus));
Cumulocity 41:804f6a0bda26 11 memset(&_netStatus, 0, sizeof(MDMParser::NetStatus));
Cumulocity 41:804f6a0bda26 12 memset(&_signalQuality, 0, sizeof(DeviceInfo::SignalQuality));
Cumulocity 41:804f6a0bda26 13 }
Cumulocity 41:804f6a0bda26 14
Cumulocity 41:804f6a0bda26 15 const char * DeviceInfo::imsi()
Cumulocity 41:804f6a0bda26 16 {
Cumulocity 41:804f6a0bda26 17 return _devStatus.imsi;
Cumulocity 41:804f6a0bda26 18 }
Cumulocity 41:804f6a0bda26 19
Cumulocity 41:804f6a0bda26 20 const char * DeviceInfo::imei()
Cumulocity 41:804f6a0bda26 21 {
Cumulocity 41:804f6a0bda26 22 return _devStatus.imei;
Cumulocity 41:804f6a0bda26 23 }
Cumulocity 41:804f6a0bda26 24
Cumulocity 41:804f6a0bda26 25 const char * DeviceInfo::cellId()
Cumulocity 41:804f6a0bda26 26 {
Cumulocity 41:804f6a0bda26 27 if (!refreshNetStatus())
Cumulocity 41:804f6a0bda26 28 return NULL;
Cumulocity 41:804f6a0bda26 29
Cumulocity 41:804f6a0bda26 30 if (snprintf(_cellId, sizeof(_cellId), "%X", _netStatus.ci) < 1)
Cumulocity 41:804f6a0bda26 31 return NULL;
Cumulocity 41:804f6a0bda26 32 return _cellId;
Cumulocity 41:804f6a0bda26 33 }
Cumulocity 41:804f6a0bda26 34
Cumulocity 41:804f6a0bda26 35 const char * DeviceInfo::iccid()
Cumulocity 41:804f6a0bda26 36 {
Cumulocity 41:804f6a0bda26 37 return _devStatus.ccid;
Cumulocity 41:804f6a0bda26 38 }
Cumulocity 41:804f6a0bda26 39
xinlei 77:f6717e4eccc4 40 DeviceInfo::SignalQuality * DeviceInfo::signalQuality(bool realTime)
Cumulocity 41:804f6a0bda26 41 {
xinlei 77:f6717e4eccc4 42 if (!realTime && _signalQuality.rssi)
xinlei 77:f6717e4eccc4 43 return &_signalQuality;
xinlei 77:f6717e4eccc4 44
Cumulocity 41:804f6a0bda26 45 memset(&_signalQuality, 0, sizeof(DeviceInfo::SignalQuality));
xinlei 74:ca3001991fdc 46 if (!refreshNetStatus()) {
xinlei 74:ca3001991fdc 47 aError("Can not refresh network status!\r\n");
Cumulocity 41:804f6a0bda26 48 return NULL;
xinlei 74:ca3001991fdc 49 }
Cumulocity 41:804f6a0bda26 50
xinlei 74:ca3001991fdc 51 // if ((_netStatus.rssi == 0) || (_netStatus.ber == 0)) {
xinlei 74:ca3001991fdc 52 // aWarning("Network status is unavailable!\r\n");
xinlei 74:ca3001991fdc 53 // aDebug("RSSI: %d dBm, BER: %d%%\r\n", _netStatus.rssi, _netStatus.ber);
xinlei 74:ca3001991fdc 54 // return NULL;
xinlei 74:ca3001991fdc 55 // }
Cumulocity 41:804f6a0bda26 56
Cumulocity 41:804f6a0bda26 57 _signalQuality.rssi = _netStatus.rssi;
Cumulocity 41:804f6a0bda26 58 _signalQuality.ber = _netStatus.ber;
Cumulocity 41:804f6a0bda26 59 return &_signalQuality;
Cumulocity 41:804f6a0bda26 60 }
Cumulocity 41:804f6a0bda26 61
Cumulocity 41:804f6a0bda26 62 bool DeviceInfo::refreshNetStatus()
Cumulocity 41:804f6a0bda26 63 {
Cumulocity 41:804f6a0bda26 64 return _mdm.checkNetStatus(&_netStatus);
Cumulocity 41:804f6a0bda26 65 }