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

DeviceInfo.cpp

Committer:
xinlei
Date:
2015-04-27
Revision:
97:ea056f6be2e8
Parent:
77:f6717e4eccc4
Child:
108:f1ee3e1eb126

File content as of revision 97:ea056f6be2e8:

#include <stdlib.h>
#include <string.h>
#include "DeviceInfo.h"
#include "logging.h"

DeviceInfo::DeviceInfo(MDMParser::DevStatus& devStatus)
{
    *_cellId = '\0';
    memcpy(&_devStatus, &devStatus, sizeof(MDMParser::DevStatus));
    memset(&_netStatus, 0, sizeof(MDMParser::NetStatus));
    memset(&_signalQuality, 0, sizeof(DeviceInfo::SignalQuality));
}

const char * DeviceInfo::imsi()
{
    return _devStatus.imsi;
}

const char * DeviceInfo::imei()
{
    return _devStatus.imei;
}

const char * DeviceInfo::cellId()
{
    if (!refreshNetStatus())
        return NULL;

    if (snprintf(_cellId, sizeof(_cellId), "%X", _netStatus.ci) < 1)
        return NULL;
    return _cellId;
}

const char * DeviceInfo::iccid()
{
    return _devStatus.ccid;
}

DeviceInfo::SignalQuality * DeviceInfo::signalQuality(bool realTime)
{
    if (!realTime && _signalQuality.rssi)
        return &_signalQuality;

    memset(&_signalQuality, 0, sizeof(DeviceInfo::SignalQuality));
    if (!refreshNetStatus()) {
        aError("Can not refresh network status!\r\n");
        return NULL;
    }
    
//    if ((_netStatus.rssi == 0) || (_netStatus.ber == 0)) {
//        aWarning("Network status is unavailable!\r\n");
//        aDebug("RSSI: %d dBm, BER: %d%%\r\n", _netStatus.rssi, _netStatus.ber);
//        return NULL;
//    }

    _signalQuality.rssi = _netStatus.rssi;
    _signalQuality.ber = _netStatus.ber;
    return &_signalQuality;
}

bool DeviceInfo::refreshNetStatus()
{
    extern MDMSerial *pMdm;
    return pMdm->checkNetStatus(&_netStatus);
}