diff options
Diffstat (limited to 'gps/core/SystemStatus.cpp')
-rw-r--r-- | gps/core/SystemStatus.cpp | 219 |
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; } |