aboutsummaryrefslogtreecommitdiff
path: root/gps/core/SystemStatus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gps/core/SystemStatus.cpp')
-rw-r--r--gps/core/SystemStatus.cpp219
1 files changed, 109 insertions, 110 deletions
diff --git a/gps/core/SystemStatus.cpp b/gps/core/SystemStatus.cpp
index 92ddeed..f4316ca 100644
--- a/gps/core/SystemStatus.cpp
+++ b/gps/core/SystemStatus.cpp
@@ -34,8 +34,8 @@
#include <string.h>
#include <sys/time.h>
#include <pthread.h>
-#include <platform_lib_log_util.h>
-#include <MsgTask.h>
+#include <loc_pla.h>
+#include <log_util.h>
#include <loc_nmea.h>
#include <DataItemsFactoryProxy.h>
#include <SystemStatus.h>
@@ -120,6 +120,12 @@ public:
double mAgcGal; // x16
int32_t mLeapSeconds;// x17
int32_t mLeapSecUnc; // x18
+ uint32_t mGloBpAmpI; // x19
+ uint32_t mGloBpAmpQ; // x1A
+ uint32_t mBdsBpAmpI; // x1B
+ uint32_t mBdsBpAmpQ; // x1C
+ uint32_t mGalBpAmpI; // x1D
+ uint32_t mGalBpAmpQ; // x1E
};
// parser
@@ -154,6 +160,12 @@ private:
eMax0 = eAgcGal,
eLeapSeconds = 23,
eLeapSecUnc = 24,
+ eGloBpAmpI = 25,
+ eGloBpAmpQ = 26,
+ eBdsBpAmpI = 27,
+ eBdsBpAmpQ = 28,
+ eGalBpAmpI = 29,
+ eGalBpAmpQ = 30,
eMax
};
SystemStatusPQWM1 mM1;
@@ -183,6 +195,12 @@ public:
inline uint32_t getRecErrorRecovery() { return mM1.mRecErrorRecovery; }
inline int32_t getLeapSeconds(){ return mM1.mLeapSeconds; }
inline int32_t getLeapSecUnc() { return mM1.mLeapSecUnc; }
+ inline uint32_t getGloBpAmpI() { return mM1.mGloBpAmpI; }
+ inline uint32_t getGloBpAmpQ() { return mM1.mGloBpAmpQ; }
+ inline uint32_t getBdsBpAmpI() { return mM1.mBdsBpAmpI; }
+ inline uint32_t getBdsBpAmpQ() { return mM1.mBdsBpAmpQ; }
+ inline uint32_t getGalBpAmpI() { return mM1.mGalBpAmpI; }
+ inline uint32_t getGalBpAmpQ() { return mM1.mGalBpAmpQ; }
SystemStatusPQWM1parser(const char *str_in, uint32_t len_in)
: SystemStatusNmeaBase(str_in, len_in)
@@ -219,6 +237,14 @@ public:
mM1.mLeapSeconds = atoi(mField[eLeapSeconds].c_str());
mM1.mLeapSecUnc = atoi(mField[eLeapSecUnc].c_str());
}
+ if (mField.size() > eGalBpAmpQ) {
+ mM1.mGloBpAmpI = atoi(mField[eGloBpAmpI].c_str());
+ mM1.mGloBpAmpQ = atoi(mField[eGloBpAmpQ].c_str());
+ mM1.mBdsBpAmpI = atoi(mField[eBdsBpAmpI].c_str());
+ mM1.mBdsBpAmpQ = atoi(mField[eBdsBpAmpQ].c_str());
+ mM1.mGalBpAmpI = atoi(mField[eGalBpAmpI].c_str());
+ mM1.mGalBpAmpQ = atoi(mField[eGalBpAmpQ].c_str());
+ }
}
inline SystemStatusPQWM1& get() { return mM1;} //getparser
@@ -765,7 +791,13 @@ SystemStatusRfAndParams::SystemStatusRfAndParams(const SystemStatusPQWM1& nmea)
mAgcGps(nmea.mAgcGps),
mAgcGlo(nmea.mAgcGlo),
mAgcBds(nmea.mAgcBds),
- mAgcGal(nmea.mAgcGal)
+ mAgcGal(nmea.mAgcGal),
+ mGloBpAmpI(nmea.mGloBpAmpI),
+ mGloBpAmpQ(nmea.mGloBpAmpQ),
+ mBdsBpAmpI(nmea.mBdsBpAmpI),
+ mBdsBpAmpQ(nmea.mBdsBpAmpQ),
+ mGalBpAmpI(nmea.mGalBpAmpI),
+ mGalBpAmpQ(nmea.mGalBpAmpQ)
{
}
@@ -783,7 +815,13 @@ bool SystemStatusRfAndParams::equals(const SystemStatusRfAndParams& peer)
(mAgcGps != peer.mAgcGps) ||
(mAgcGlo != peer.mAgcGlo) ||
(mAgcBds != peer.mAgcBds) ||
- (mAgcGal != peer.mAgcGal)) {
+ (mAgcGal != peer.mAgcGal) ||
+ (mGloBpAmpI != peer.mGloBpAmpI) ||
+ (mGloBpAmpQ != peer.mGloBpAmpQ) ||
+ (mBdsBpAmpI != peer.mBdsBpAmpI) ||
+ (mBdsBpAmpQ != peer.mBdsBpAmpQ) ||
+ (mGalBpAmpI != peer.mGalBpAmpI) ||
+ (mGalBpAmpQ != peer.mGalBpAmpQ)) {
return false;
}
return true;
@@ -1217,8 +1255,7 @@ IOsObserver* SystemStatus::getOsObserver()
}
SystemStatus::SystemStatus(const MsgTask* msgTask) :
- mSysStatusObsvr(this, msgTask),
- mConnected(false)
+ mSysStatusObsvr(this, msgTask)
{
int result = 0;
ENTRY_LOG ();
@@ -1268,17 +1305,10 @@ SystemStatus::SystemStatus(const MsgTask* msgTask) :
/******************************************************************************
SystemStatus - storing dataitems
******************************************************************************/
-template <typename TYPE_SYSTEMSTATUS_ITEM, typename TYPE_REPORT, typename TYPE_ITEMBASE>
-bool SystemStatus::setItemBaseinReport(TYPE_REPORT& report, const TYPE_ITEMBASE& s)
-{
- TYPE_SYSTEMSTATUS_ITEM sout(s);
- return setIteminReport(report, sout);
-}
-
template <typename TYPE_REPORT, typename TYPE_ITEM>
-bool SystemStatus::setIteminReport(TYPE_REPORT& report, const TYPE_ITEM& s)
+bool SystemStatus::setIteminReport(TYPE_REPORT& report, TYPE_ITEM&& s)
{
- if (!report.empty() && report.back().equals(s)) {
+ if (!report.empty() && report.back().equals(static_cast<TYPE_ITEM&>(s.collate(report.back())))) {
// there is no change - just update reported timestamp
report.back().mUtcReported = s.mUtcReported;
return false;
@@ -1317,11 +1347,10 @@ void SystemStatus::getIteminReport(TYPE_REPORT& reportout, const TYPE_ITEM& c) c
@param[In] data pointer to the NMEA string
@param[In] len length of the NMEA string
-@return true when successfully done
+@return true when the NMEA is consumed by the method.
******************************************************************************/
bool SystemStatus::setNmeaString(const char *data, uint32_t len)
{
- bool ret = false;
if (!loc_nmea_is_debug(data, len)) {
return false;
}
@@ -1332,43 +1361,43 @@ bool SystemStatus::setNmeaString(const char *data, uint32_t len)
pthread_mutex_lock(&mMutexSystemStatus);
// parse the received nmea strings here
- if (0 == strncmp(data, "$PQWM1", SystemStatusNmeaBase::NMEA_MINSIZE)) {
+ if (0 == strncmp(data, "$PQWM1", SystemStatusNmeaBase::NMEA_MINSIZE)) {
SystemStatusPQWM1 s = SystemStatusPQWM1parser(buf, len).get();
- ret |= setIteminReport(mCache.mTimeAndClock, SystemStatusTimeAndClock(s));
- ret |= setIteminReport(mCache.mXoState, SystemStatusXoState(s));
- ret |= setIteminReport(mCache.mRfAndParams, SystemStatusRfAndParams(s));
- ret |= setIteminReport(mCache.mErrRecovery, SystemStatusErrRecovery(s));
+ setIteminReport(mCache.mTimeAndClock, SystemStatusTimeAndClock(s));
+ setIteminReport(mCache.mXoState, SystemStatusXoState(s));
+ setIteminReport(mCache.mRfAndParams, SystemStatusRfAndParams(s));
+ setIteminReport(mCache.mErrRecovery, SystemStatusErrRecovery(s));
}
else if (0 == strncmp(data, "$PQWP1", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mInjectedPosition,
+ setIteminReport(mCache.mInjectedPosition,
SystemStatusInjectedPosition(SystemStatusPQWP1parser(buf, len).get()));
}
else if (0 == strncmp(data, "$PQWP2", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mBestPosition,
+ setIteminReport(mCache.mBestPosition,
SystemStatusBestPosition(SystemStatusPQWP2parser(buf, len).get()));
}
else if (0 == strncmp(data, "$PQWP3", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mXtra,
+ setIteminReport(mCache.mXtra,
SystemStatusXtra(SystemStatusPQWP3parser(buf, len).get()));
}
else if (0 == strncmp(data, "$PQWP4", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mEphemeris,
+ setIteminReport(mCache.mEphemeris,
SystemStatusEphemeris(SystemStatusPQWP4parser(buf, len).get()));
}
else if (0 == strncmp(data, "$PQWP5", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mSvHealth,
+ setIteminReport(mCache.mSvHealth,
SystemStatusSvHealth(SystemStatusPQWP5parser(buf, len).get()));
}
else if (0 == strncmp(data, "$PQWP6", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mPdr,
+ setIteminReport(mCache.mPdr,
SystemStatusPdr(SystemStatusPQWP6parser(buf, len).get()));
}
else if (0 == strncmp(data, "$PQWP7", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mNavData,
+ setIteminReport(mCache.mNavData,
SystemStatusNavData(SystemStatusPQWP7parser(buf, len).get()));
}
else if (0 == strncmp(data, "$PQWS1", SystemStatusNmeaBase::NMEA_MINSIZE)) {
- ret = setIteminReport(mCache.mPositionFailure,
+ setIteminReport(mCache.mPositionFailure,
SystemStatusPositionFailure(SystemStatusPQWS1parser(buf, len).get()));
}
else {
@@ -1376,7 +1405,7 @@ bool SystemStatus::setNmeaString(const char *data, uint32_t len)
}
pthread_mutex_unlock(&mMutexSystemStatus);
- return ret;
+ return true;
}
/******************************************************************************
@@ -1417,94 +1446,92 @@ bool SystemStatus::eventDataItemNotify(IDataItemCore* dataitem)
switch(dataitem->getId())
{
case AIRPLANEMODE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusAirplaneMode>(mCache.mAirplaneMode,
- *(static_cast<AirplaneModeDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mAirplaneMode,
+ SystemStatusAirplaneMode(*(static_cast<AirplaneModeDataItemBase*>(dataitem))));
break;
case ENH_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusENH>(mCache.mENH,
- *(static_cast<ENHDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mENH,
+ SystemStatusENH(*(static_cast<ENHDataItemBase*>(dataitem))));
break;
case GPSSTATE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusGpsState>(mCache.mGPSState,
- *(static_cast<GPSStateDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mGPSState,
+ SystemStatusGpsState(*(static_cast<GPSStateDataItemBase*>(dataitem))));
break;
case NLPSTATUS_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusNLPStatus>(mCache.mNLPStatus,
- *(static_cast<NLPStatusDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mNLPStatus,
+ SystemStatusNLPStatus(*(static_cast<NLPStatusDataItemBase*>(dataitem))));
break;
case WIFIHARDWARESTATE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusWifiHardwareState>(mCache.mWifiHardwareState,
- *(static_cast<WifiHardwareStateDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mWifiHardwareState,
+ SystemStatusWifiHardwareState(*(static_cast<WifiHardwareStateDataItemBase*>(dataitem))));
break;
case NETWORKINFO_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusNetworkInfo>(mCache.mNetworkInfo,
- *(static_cast<NetworkInfoDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mNetworkInfo,
+ SystemStatusNetworkInfo(*(static_cast<NetworkInfoDataItemBase*>(dataitem))));
break;
case RILSERVICEINFO_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusServiceInfo>(mCache.mRilServiceInfo,
- *(static_cast<RilServiceInfoDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mRilServiceInfo,
+ SystemStatusServiceInfo(*(static_cast<RilServiceInfoDataItemBase*>(dataitem))));
break;
case RILCELLINFO_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusRilCellInfo>(mCache.mRilCellInfo,
- *(static_cast<RilCellInfoDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mRilCellInfo,
+ SystemStatusRilCellInfo(*(static_cast<RilCellInfoDataItemBase*>(dataitem))));
break;
case SERVICESTATUS_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusServiceStatus>(mCache.mServiceStatus,
- *(static_cast<ServiceStatusDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mServiceStatus,
+ SystemStatusServiceStatus(*(static_cast<ServiceStatusDataItemBase*>(dataitem))));
break;
case MODEL_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusModel>(mCache.mModel,
- *(static_cast<ModelDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mModel,
+ SystemStatusModel(*(static_cast<ModelDataItemBase*>(dataitem))));
break;
case MANUFACTURER_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusManufacturer>(mCache.mManufacturer,
- *(static_cast<ManufacturerDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mManufacturer,
+ SystemStatusManufacturer(*(static_cast<ManufacturerDataItemBase*>(dataitem))));
break;
case ASSISTED_GPS_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusAssistedGps>(mCache.mAssistedGps,
- *(static_cast<AssistedGpsDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mAssistedGps,
+ SystemStatusAssistedGps(*(static_cast<AssistedGpsDataItemBase*>(dataitem))));
break;
case SCREEN_STATE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusScreenState>(mCache.mScreenState,
- *(static_cast<ScreenStateDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mScreenState,
+ SystemStatusScreenState(*(static_cast<ScreenStateDataItemBase*>(dataitem))));
break;
case POWER_CONNECTED_STATE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusPowerConnectState>(mCache.mPowerConnectState,
- *(static_cast<PowerConnectStateDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mPowerConnectState,
+ SystemStatusPowerConnectState(*(static_cast<PowerConnectStateDataItemBase*>(dataitem))));
break;
case TIMEZONE_CHANGE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusTimeZoneChange>(mCache.mTimeZoneChange,
- *(static_cast<TimeZoneChangeDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mTimeZoneChange,
+ SystemStatusTimeZoneChange(*(static_cast<TimeZoneChangeDataItemBase*>(dataitem))));
break;
case TIME_CHANGE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusTimeChange>(mCache.mTimeChange,
- *(static_cast<TimeChangeDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mTimeChange,
+ SystemStatusTimeChange(*(static_cast<TimeChangeDataItemBase*>(dataitem))));
break;
case WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusWifiSupplicantStatus>(
- mCache.mWifiSupplicantStatus,
- *(static_cast<WifiSupplicantStatusDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mWifiSupplicantStatus,
+ SystemStatusWifiSupplicantStatus(*(static_cast<WifiSupplicantStatusDataItemBase*>(dataitem))));
break;
case SHUTDOWN_STATE_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusShutdownState>(mCache.mShutdownState,
- *(static_cast<ShutdownStateDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mShutdownState,
+ SystemStatusShutdownState(*(static_cast<ShutdownStateDataItemBase*>(dataitem))));
break;
case TAC_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusTac>(mCache.mTac,
- *(static_cast<TacDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mTac,
+ SystemStatusTac(*(static_cast<TacDataItemBase*>(dataitem))));
break;
case MCCMNC_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusMccMnc>(mCache.mMccMnc,
- *(static_cast<MccmncDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mMccMnc,
+ SystemStatusMccMnc(*(static_cast<MccmncDataItemBase*>(dataitem))));
break;
case BTLE_SCAN_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusBtDeviceScanDetail>(mCache.mBtDeviceScanDetail,
- *(static_cast<BtDeviceScanDetailsDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mBtDeviceScanDetail,
+ SystemStatusBtDeviceScanDetail(*(static_cast<BtDeviceScanDetailsDataItemBase*>(dataitem))));
break;
case BT_SCAN_DATA_ITEM_ID:
- ret = setItemBaseinReport<SystemStatusBtleDeviceScanDetail>(
- mCache.mBtLeDeviceScanDetail,
- *(static_cast<BtLeDeviceScanDetailsDataItemBase*>(dataitem)));
+ ret = setIteminReport(mCache.mBtLeDeviceScanDetail,
+ SystemStatusBtleDeviceScanDetail(*(static_cast<BtLeDeviceScanDetailsDataItemBase*>(dataitem))));
break;
default:
break;
@@ -1623,7 +1650,7 @@ bool SystemStatus::getReport(SystemStatusReports& report, bool isLatestOnly) con
@return true when successfully done
******************************************************************************/
-bool SystemStatus::setDefaultReport(void)
+bool SystemStatus::setDefaultGnssEngineStates(void)
{
pthread_mutex_lock(&mMutexSystemStatus);
@@ -1644,29 +1671,6 @@ bool SystemStatus::setDefaultReport(void)
setDefaultIteminReport(mCache.mPositionFailure, SystemStatusPositionFailure());
- setDefaultIteminReport(mCache.mAirplaneMode, SystemStatusAirplaneMode());
- setDefaultIteminReport(mCache.mENH, SystemStatusENH());
- setDefaultIteminReport(mCache.mGPSState, SystemStatusGpsState());
- setDefaultIteminReport(mCache.mNLPStatus, SystemStatusNLPStatus());
- setDefaultIteminReport(mCache.mWifiHardwareState, SystemStatusWifiHardwareState());
- setDefaultIteminReport(mCache.mNetworkInfo, SystemStatusNetworkInfo());
- setDefaultIteminReport(mCache.mRilServiceInfo, SystemStatusServiceInfo());
- setDefaultIteminReport(mCache.mRilCellInfo, SystemStatusRilCellInfo());
- setDefaultIteminReport(mCache.mServiceStatus, SystemStatusServiceStatus());
- setDefaultIteminReport(mCache.mModel, SystemStatusModel());
- setDefaultIteminReport(mCache.mManufacturer, SystemStatusManufacturer());
- setDefaultIteminReport(mCache.mAssistedGps, SystemStatusAssistedGps());
- setDefaultIteminReport(mCache.mScreenState, SystemStatusScreenState());
- setDefaultIteminReport(mCache.mPowerConnectState, SystemStatusPowerConnectState());
- setDefaultIteminReport(mCache.mTimeZoneChange, SystemStatusTimeZoneChange());
- setDefaultIteminReport(mCache.mTimeChange, SystemStatusTimeChange());
- setDefaultIteminReport(mCache.mWifiSupplicantStatus, SystemStatusWifiSupplicantStatus());
- setDefaultIteminReport(mCache.mShutdownState, SystemStatusShutdownState());
- setDefaultIteminReport(mCache.mTac, SystemStatusTac());
- setDefaultIteminReport(mCache.mMccMnc, SystemStatusMccMnc());
- setDefaultIteminReport(mCache.mBtDeviceScanDetail, SystemStatusBtDeviceScanDetail());
- setDefaultIteminReport(mCache.mBtLeDeviceScanDetail, SystemStatusBtleDeviceScanDetail());
-
pthread_mutex_unlock(&mMutexSystemStatus);
return true;
}
@@ -1678,17 +1682,12 @@ bool SystemStatus::setDefaultReport(void)
@return true when successfully done
******************************************************************************/
-bool SystemStatus::eventConnectionStatus(bool connected, uint8_t type)
+bool SystemStatus::eventConnectionStatus(bool connected, int8_t type)
{
- if (connected != mConnected) {
- mConnected = connected;
+ // send networkinof dataitem to systemstatus observer clients
+ SystemStatusNetworkInfo s(type, "", "", connected);
+ mSysStatusObsvr.notify({&s});
- // send networkinof dataitem to systemstatus observer clients
- SystemStatusNetworkInfo s(type, "", "", false, connected, false);
- list<IDataItemCore*> dl(0);
- dl.push_back(&s);
- mSysStatusObsvr.notify(dl);
- }
return true;
}