Own fork of MbedSmartRestMain

Dependencies:   C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed

Fork of MbedSmartRestMain by Cumulocity Official

Committer:
xinlei
Date:
Mon Apr 27 13:02:50 2015 +0000
Revision:
96:ea056f6be2e8
Parent:
77:f6717e4eccc4
Child:
107:f1ee3e1eb126
MDMSerial now singleton

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