summaryrefslogtreecommitdiff
path: root/core/SystemStatus.h
diff options
context:
space:
mode:
authorKatz Yamada <kyamada@codeaurora.org>2017-09-26 15:19:18 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-10-09 10:04:13 -0700
commitf5f0f29c13570eec19ae03f6888bc12759d9dac2 (patch)
tree6e1f93fd5f91b65cf0819ad6e04203300d6b81c1 /core/SystemStatus.h
parentb0982b4476d852410658b307afdeacccd26fb981 (diff)
downloadgps-f5f0f29c13570eec19ae03f6888bc12759d9dac2.tar.gz
Add storing dataitem in systemstatus report
SystemStatus stores incoming dataitem events received from osagent into its internal systemstatus report cache. Change-Id: I129c633b45abfc04c9d9bbbd558db5f6e93c1672 CRs-Fixed: 2093347
Diffstat (limited to 'core/SystemStatus.h')
-rw-r--r--core/SystemStatus.h439
1 files changed, 278 insertions, 161 deletions
diff --git a/core/SystemStatus.h b/core/SystemStatus.h
index 9ee85d3..0c9b4b9 100644
--- a/core/SystemStatus.h
+++ b/core/SystemStatus.h
@@ -36,6 +36,7 @@
#include <MsgTask.h>
#include <IDataItemCore.h>
#include <IOsObserver.h>
+#include <DataItemConcreteTypesBase.h>
#include <SystemStatusOsObserver.h>
#include <gps_extended_c.h>
@@ -66,6 +67,7 @@ class SystemStatusItemBase
public:
timespec mUtcTime; // UTC timestamp when this info was last updated
timespec mUtcReported; // UTC timestamp when this info was reported
+ static const uint32_t maxItem = 5;
SystemStatusItemBase() {
timeval tv;
@@ -91,7 +93,7 @@ public:
mValid(true),
mLocation(location),
mLocationEx(locationEx) { }
- bool equals(SystemStatusLocation& peer);
+ bool equals(const SystemStatusLocation& peer);
void dump(void);
};
@@ -119,7 +121,7 @@ public:
mLeapSeconds(0),
mLeapSecUnc(0) {}
inline SystemStatusTimeAndClock(const SystemStatusPQWM1& nmea);
- bool equals(SystemStatusTimeAndClock& peer);
+ bool equals(const SystemStatusTimeAndClock& peer);
void dump(void);
};
@@ -130,7 +132,7 @@ public:
inline SystemStatusXoState() :
mXoState(0) {}
inline SystemStatusXoState(const SystemStatusPQWM1& nmea);
- bool equals(SystemStatusXoState& peer);
+ bool equals(const SystemStatusXoState& peer);
void dump(void);
};
@@ -177,7 +179,7 @@ public:
mGalBpAmpI(0),
mGalBpAmpQ(0) {}
inline SystemStatusRfAndParams(const SystemStatusPQWM1& nmea);
- bool equals(SystemStatusRfAndParams& peer);
+ bool equals(const SystemStatusRfAndParams& peer);
void dump(void);
};
@@ -188,7 +190,7 @@ public:
inline SystemStatusErrRecovery() :
mRecErrorRecovery(0) {};
inline SystemStatusErrRecovery(const SystemStatusPQWM1& nmea);
- bool equals(SystemStatusErrRecovery& peer);
+ bool equals(const SystemStatusErrRecovery& peer);
void dump(void);
};
@@ -212,7 +214,7 @@ public:
mEpiAltUnc(0),
mEpiSrc(0) {}
inline SystemStatusInjectedPosition(const SystemStatusPQWP1& nmea);
- bool equals(SystemStatusInjectedPosition& peer);
+ bool equals(const SystemStatusInjectedPosition& peer);
void dump(void);
};
@@ -234,7 +236,7 @@ public:
mBestHepe(0),
mBestAltUnc(0) {}
inline SystemStatusBestPosition(const SystemStatusPQWP2& nmea);
- bool equals(SystemStatusBestPosition& peer);
+ bool equals(const SystemStatusBestPosition& peer);
void dump(void);
};
@@ -266,7 +268,7 @@ public:
mGalXtraValid(0ULL),
mQzssXtraValid(0) {}
inline SystemStatusXtra(const SystemStatusPQWP3& nmea);
- bool equals(SystemStatusXtra& peer);
+ bool equals(const SystemStatusXtra& peer);
void dump(void);
};
@@ -286,7 +288,7 @@ public:
mGalEpheValid(0ULL),
mQzssEpheValid(0) {}
inline SystemStatusEphemeris(const SystemStatusPQWP4& nmea);
- bool equals(SystemStatusEphemeris& peer);
+ bool equals(const SystemStatusEphemeris& peer);
void dump(void);
};
@@ -326,7 +328,7 @@ public:
mGalBadMask(0ULL),
mQzssBadMask(0) {}
inline SystemStatusSvHealth(const SystemStatusPQWP5& nmea);
- bool equals(SystemStatusSvHealth& peer);
+ bool equals(const SystemStatusSvHealth& peer);
void dump(void);
};
@@ -338,7 +340,7 @@ public:
inline SystemStatusPdr() :
mFixInfoMask(0) {}
inline SystemStatusPdr(const SystemStatusPQWP6& nmea);
- bool equals(SystemStatusPdr& peer);
+ bool equals(const SystemStatusPdr& peer);
void dump(void);
};
@@ -362,7 +364,7 @@ public:
}
}
inline SystemStatusNavData(const SystemStatusPQWP7& nmea);
- bool equals(SystemStatusNavData& peer);
+ bool equals(const SystemStatusNavData& peer);
void dump(void);
};
@@ -376,168 +378,294 @@ public:
mFixInfoMask(0),
mHepeLimit(0) {}
inline SystemStatusPositionFailure(const SystemStatusPQWS1& nmea);
- bool equals(SystemStatusPositionFailure& peer);
+ bool equals(const SystemStatusPositionFailure& peer);
void dump(void);
};
/******************************************************************************
SystemStatus report data structure - from DataItem observer
******************************************************************************/
-class SystemStatusGpsState : public SystemStatusItemBase, public IDataItemCore
+class SystemStatusAirplaneMode : public SystemStatusItemBase,
+ public AirplaneModeDataItemBase
{
public:
- inline SystemStatusGpsState() :
- mEnabled(false) {}
- inline SystemStatusGpsState(bool enabled) :
- mEnabled(enabled) {}
+ inline SystemStatusAirplaneMode(bool mode=false) :
+ AirplaneModeDataItemBase(mode) {}
+ inline bool equals(const SystemStatusAirplaneMode& peer) {
+ return (mMode == peer.mMode);
+ }
+};
- bool mEnabled;
+class SystemStatusENH : public SystemStatusItemBase,
+ public ENHDataItemBase
+{
+public:
+ inline SystemStatusENH(bool enabled=false) :
+ ENHDataItemBase(enabled) {}
+ inline bool equals(const SystemStatusENH& peer) {
+ return (mEnabled == peer.mEnabled);
+ }
+};
- inline bool equals(SystemStatusGpsState& peer) {
+class SystemStatusGpsState : public SystemStatusItemBase,
+ public GPSStateDataItemBase
+{
+public:
+ inline SystemStatusGpsState(bool enabled=false) :
+ GPSStateDataItemBase(enabled) {}
+ inline bool equals(const SystemStatusGpsState& peer) {
return (mEnabled == peer.mEnabled);
}
- inline void dump(void) {
+ inline void dump(void) override {
LOC_LOGD("GpsState: state=%u", mEnabled);
}
- inline DataItemId getId() {
- return GPSSTATE_DATA_ITEM_ID;
- }
- inline void stringify(string& valueStr) {
- valueStr.clear();
- valueStr += "GpsState: enabled=";
- valueStr += to_string(mEnabled);
+};
+
+class SystemStatusNLPStatus : public SystemStatusItemBase,
+ public NLPStatusDataItemBase
+{
+public:
+ inline SystemStatusNLPStatus(bool enabled=false) :
+ NLPStatusDataItemBase(enabled) {}
+ inline bool equals(const SystemStatusNLPStatus& peer) {
+ return (mEnabled == peer.mEnabled);
}
- inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) {
- SystemStatusGpsState* gpsstate = static_cast<SystemStatusGpsState*>(src);
- mEnabled = gpsstate->mEnabled;
- if (dataItemCopied) {
- *dataItemCopied = true;
- }
- return 1;
+};
+
+class SystemStatusWifiHardwareState : public SystemStatusItemBase,
+ public WifiHardwareStateDataItemBase
+{
+public:
+ inline SystemStatusWifiHardwareState(bool enabled=false) :
+ WifiHardwareStateDataItemBase(enabled) {}
+ inline bool equals(const SystemStatusWifiHardwareState& peer) {
+ return (mEnabled == peer.mEnabled);
}
};
-class SystemStatusNetworkInfo : public SystemStatusItemBase, public IDataItemCore
+class SystemStatusNetworkInfo : public SystemStatusItemBase,
+ public NetworkInfoDataItemBase
{
public:
- inline SystemStatusNetworkInfo() :
- mType(0),
- mTypeName(""),
- mSubTypeName(""),
- mAvailable(false),
- mConnected(false),
- mRoaming(false) {}
inline SystemStatusNetworkInfo(
- int32_t type,
- std::string typeName,
- std::string subTypeName,
- bool available,
- bool connected,
- bool roaming) :
- mType(type),
- mTypeName(typeName),
- mSubTypeName(subTypeName),
- mAvailable(available),
- mConnected(connected),
- mRoaming(roaming) {}
-
- int32_t mType;
- std::string mTypeName;
- std::string mSubTypeName;
- bool mAvailable;
- bool mConnected;
- bool mRoaming;
-
- inline bool equals(SystemStatusNetworkInfo& peer) {
- if ((mType != peer.mType) ||
- (mTypeName != peer.mTypeName) ||
- (mSubTypeName != peer.mSubTypeName) ||
- (mAvailable != peer.mAvailable) ||
- (mConnected != peer.mConnected) ||
- (mRoaming != peer.mRoaming)) {
+ int32_t type=0,
+ std::string typeName="",
+ string subTypeName="",
+ bool available=false,
+ bool connected=false,
+ bool roaming=false) :
+ NetworkInfoDataItemBase(
+ type,
+ typeName,
+ subTypeName,
+ available,
+ connected,
+ roaming) {}
+ inline bool equals(const SystemStatusNetworkInfo& peer) {
+ if ((mType == peer.mType) &&
+ (mTypeName == peer.mTypeName) &&
+ (mSubTypeName == peer.mSubTypeName) &&
+ (mAvailable == peer.mAvailable) &&
+ (mConnected == peer.mConnected) &&
+ (mRoaming == peer.mRoaming)) {
+ return true;
+ }
return false;
}
+ inline void dump(void) override {
+ LOC_LOGD("NetworkInfo: type=%u connected=%u", mType, mConnected);
+ }
+};
+
+class SystemStatusServiceInfo : public SystemStatusItemBase,
+ public RilServiceInfoDataItemBase
+{
+public:
+ inline SystemStatusServiceInfo() :
+ RilServiceInfoDataItemBase() {}
+ inline bool equals(const SystemStatusServiceInfo& /*peer*/) {
return true;
}
- inline void dump(void) {
- LOC_LOGD("NetworkInfo: type=%u connected=%u", mType, mConnected);
+};
+
+class SystemStatusRilCellInfo : public SystemStatusItemBase,
+ public RilCellInfoDataItemBase
+{
+public:
+ inline SystemStatusRilCellInfo() :
+ RilCellInfoDataItemBase() {}
+ inline bool equals(const SystemStatusRilCellInfo& /*peer*/) {
+ return true;
}
- inline DataItemId getId() {
- return NETWORKINFO_DATA_ITEM_ID;
+};
+
+class SystemStatusServiceStatus : public SystemStatusItemBase,
+ public ServiceStatusDataItemBase
+{
+public:
+ inline SystemStatusServiceStatus(int32_t mServiceState=0) :
+ ServiceStatusDataItemBase(mServiceState) {}
+ inline bool equals(const SystemStatusServiceStatus& peer) {
+ return (mServiceState == peer.mServiceState);
}
- inline void stringify(string& /*valueStr*/) { }
- inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) {
- SystemStatusNetworkInfo* networkinfo = static_cast<SystemStatusNetworkInfo*>(src);
- mType = networkinfo->mType;
- mTypeName = networkinfo->mTypeName;
- mSubTypeName = networkinfo->mSubTypeName;
- mAvailable = networkinfo->mAvailable;
- mConnected = networkinfo->mConnected;
- mRoaming = networkinfo->mRoaming;
- if (dataItemCopied) {
- *dataItemCopied = true;
+};
+
+class SystemStatusModel : public SystemStatusItemBase,
+ public ModelDataItemBase
+{
+public:
+ inline SystemStatusModel(string name="") :
+ ModelDataItemBase(name) {}
+ inline bool equals(const SystemStatusModel& peer) {
+ return (mModel == peer.mModel);
}
- return 1;
+};
+
+class SystemStatusManufacturer : public SystemStatusItemBase,
+ public ManufacturerDataItemBase
+{
+public:
+ inline SystemStatusManufacturer(string name="") :
+ ManufacturerDataItemBase(name) {}
+ inline bool equals(const SystemStatusManufacturer& peer) {
+ return (mManufacturer == peer.mManufacturer);
}
};
-class SystemStatusTac : public SystemStatusItemBase, public IDataItemCore
+class SystemStatusAssistedGps : public SystemStatusItemBase,
+ public AssistedGpsDataItemBase
{
public:
- inline SystemStatusTac() :
- mValue("") {}
- inline SystemStatusTac(std::string value) :
- mValue(value) {}
+ inline SystemStatusAssistedGps(bool enabled=false) :
+ AssistedGpsDataItemBase(enabled) {}
+ inline bool equals(const SystemStatusAssistedGps& peer) {
+ return (mEnabled == peer.mEnabled);
+ }
+};
- std::string mValue;
+class SystemStatusScreenState : public SystemStatusItemBase,
+ public ScreenStateDataItemBase
+{
+public:
+ inline SystemStatusScreenState(bool state=false) :
+ ScreenStateDataItemBase(state) {}
+ inline bool equals(const SystemStatusScreenState& peer) {
+ return (mState == peer.mState);
+ }
+};
- inline bool equals(SystemStatusTac& peer) {
- return (mValue == peer.mValue);
+class SystemStatusPowerConnectState : public SystemStatusItemBase,
+ public PowerConnectStateDataItemBase
+{
+public:
+ inline SystemStatusPowerConnectState(bool state=false) :
+ PowerConnectStateDataItemBase(state) {}
+ inline bool equals(const SystemStatusPowerConnectState& peer) {
+ return (mState == peer.mState);
}
- inline void dump(void) {
- LOC_LOGD("Tac: value=%s", mValue.c_str());
+};
+
+class SystemStatusTimeZoneChange : public SystemStatusItemBase,
+ public TimeZoneChangeDataItemBase
+{
+public:
+ inline SystemStatusTimeZoneChange(
+ int64_t currTimeMillis=0ULL, int32_t rawOffset=0, int32_t dstOffset=0) :
+ TimeZoneChangeDataItemBase(currTimeMillis, rawOffset, dstOffset) {}
+ inline bool equals(const SystemStatusTimeZoneChange& peer) {
+ return ((mCurrTimeMillis == peer.mCurrTimeMillis) &&
+ (mRawOffsetTZ == peer.mRawOffsetTZ) &&
+ (mDstOffsetTZ == peer.mDstOffsetTZ));
}
- inline DataItemId getId() {
- return TAC_DATA_ITEM_ID;
+};
+
+class SystemStatusTimeChange : public SystemStatusItemBase,
+ public TimeChangeDataItemBase
+{
+public:
+ inline SystemStatusTimeChange(
+ int64_t currTimeMillis=0ULL, int32_t rawOffset=0, int32_t dstOffset=0) :
+ TimeChangeDataItemBase(currTimeMillis, rawOffset, dstOffset) {}
+ inline bool equals(const SystemStatusTimeChange& peer) {
+ return ((mCurrTimeMillis == peer.mCurrTimeMillis) &&
+ (mRawOffsetTZ == peer.mRawOffsetTZ) &&
+ (mDstOffsetTZ == peer.mDstOffsetTZ));
}
- inline void stringify(string& /*valueStr*/) { }
- inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) {
- SystemStatusTac* tac = static_cast<SystemStatusTac*>(src);
- mValue = tac->mValue;
- if (dataItemCopied) {
- *dataItemCopied = true;
+};
+
+class SystemStatusWifiSupplicantStatus : public SystemStatusItemBase,
+ public WifiSupplicantStatusDataItemBase
+{
+public:
+ inline SystemStatusWifiSupplicantStatus() :
+ WifiSupplicantStatusDataItemBase() {}
+ inline bool equals(const SystemStatusWifiSupplicantStatus& peer) {
+ return ((mState == peer.mState) &&
+ (mApMacAddressValid == peer.mApMacAddressValid) &&
+ (mWifiApSsidValid == peer.mWifiApSsidValid) &&
+ (mWifiApSsid == peer.mWifiApSsid));
}
- return 1;
+};
+
+class SystemStatusShutdownState : public SystemStatusItemBase,
+ public ShutdownStateDataItemBase
+{
+public:
+ inline SystemStatusShutdownState(bool state=false) :
+ ShutdownStateDataItemBase(state) {}
+ inline bool equals(const SystemStatusShutdownState& peer) {
+ return (mState == peer.mState);
}
};
-class SystemStatusMccMnc : public SystemStatusItemBase, public IDataItemCore
+class SystemStatusTac : public SystemStatusItemBase,
+ public TacDataItemBase
{
public:
- inline SystemStatusMccMnc() :
- mValue("") {}
- inline SystemStatusMccMnc(std::string value) :
- mValue(value) {}
+ inline SystemStatusTac(std::string value="") :
+ TacDataItemBase(value) {}
- std::string mValue;
+ inline bool equals(const SystemStatusTac& peer) {
+ return (mValue == peer.mValue);
+ }
+ inline void dump(void) {
+ LOC_LOGD("Tac: value=%s", mValue.c_str());
+ }
+};
- inline bool equals(SystemStatusMccMnc& peer) {
+class SystemStatusMccMnc : public SystemStatusItemBase,
+ public MccmncDataItemBase
+{
+public:
+ inline SystemStatusMccMnc(std::string value="") :
+ MccmncDataItemBase(value) {}
+ inline bool equals(const SystemStatusMccMnc& peer) {
return (mValue == peer.mValue);
}
inline void dump(void) {
LOC_LOGD("TacMccMnc value=%s", mValue.c_str());
}
- inline DataItemId getId() {
- return MCCMNC_DATA_ITEM_ID;
+};
+
+class SystemStatusBtDeviceScanDetail : public SystemStatusItemBase,
+ public BtDeviceScanDetailsDataItemBase
+{
+public:
+ inline SystemStatusBtDeviceScanDetail() :
+ BtDeviceScanDetailsDataItemBase() {}
+ inline bool equals(const SystemStatusBtDeviceScanDetail& /*peer*/) {
+ return true;
}
- inline void stringify(string& /*valueStr*/) { }
- inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) {
- SystemStatusMccMnc* mccmnc = static_cast<SystemStatusMccMnc*>(src);
- mValue = mccmnc->mValue;
- if (dataItemCopied) {
- *dataItemCopied = true;
- }
- return 1;
+};
+
+class SystemStatusBtleDeviceScanDetail : public SystemStatusItemBase,
+ public BtLeDeviceScanDetailsDataItemBase
+{
+public:
+ inline SystemStatusBtleDeviceScanDetail() :
+ BtLeDeviceScanDetailsDataItemBase() {}
+ inline bool equals(const SystemStatusBtleDeviceScanDetail& /*peer*/) {
+ return true;
}
};
@@ -569,10 +697,28 @@ public:
std::vector<SystemStatusPositionFailure> mPositionFailure;
// from dataitems observer
- std::vector<SystemStatusGpsState> mGpsState;
+ std::vector<SystemStatusAirplaneMode> mAirplaneMode;
+ std::vector<SystemStatusENH> mENH;
+ std::vector<SystemStatusGpsState> mGPSState;
+ std::vector<SystemStatusNLPStatus> mNLPStatus;
+ std::vector<SystemStatusWifiHardwareState> mWifiHardwareState;
std::vector<SystemStatusNetworkInfo> mNetworkInfo;
+ std::vector<SystemStatusServiceInfo> mRilServiceInfo;
+ std::vector<SystemStatusRilCellInfo> mRilCellInfo;
+ std::vector<SystemStatusServiceStatus> mServiceStatus;
+ std::vector<SystemStatusModel> mModel;
+ std::vector<SystemStatusManufacturer> mManufacturer;
+ std::vector<SystemStatusAssistedGps> mAssistedGps;
+ std::vector<SystemStatusScreenState> mScreenState;
+ std::vector<SystemStatusPowerConnectState> mPowerConnectState;
+ std::vector<SystemStatusTimeZoneChange> mTimeZoneChange;
+ std::vector<SystemStatusTimeChange> mTimeChange;
+ std::vector<SystemStatusWifiSupplicantStatus> mWifiSupplicantStatus;
+ std::vector<SystemStatusShutdownState> mShutdownState;
std::vector<SystemStatusTac> mTac;
std::vector<SystemStatusMccMnc> mMccMnc;
+ std::vector<SystemStatusBtDeviceScanDetail> mBtDeviceScanDetail;
+ std::vector<SystemStatusBtleDeviceScanDetail> mBtLeDeviceScanDetail;
};
/******************************************************************************
@@ -590,50 +736,21 @@ private:
// Data members
static pthread_mutex_t mMutexSystemStatus;
-
- static const uint32_t maxLocation = 5;
-
- static const uint32_t maxTimeAndClock = 5;
- static const uint32_t maxXoState = 5;
- static const uint32_t maxRfAndParams = 5;
- static const uint32_t maxErrRecovery = 5;
-
- static const uint32_t maxInjectedPosition = 5;
- static const uint32_t maxBestPosition = 5;
- static const uint32_t maxXtra = 5;
- static const uint32_t maxEphemeris = 5;
- static const uint32_t maxSvHealth = 5;
- static const uint32_t maxPdr = 5;
- static const uint32_t maxNavData = 5;
-
- static const uint32_t maxPositionFailure = 5;
-
- static const uint32_t maxGpsState = 5;
- static const uint32_t maxNetworkInfo = 5;
- static const uint32_t maxTac = 5;
- static const uint32_t maxMccMnc = 5;
-
SystemStatusReports mCache;
bool mConnected;
- bool setLocation(const UlpLocation& location);
-
- bool setTimeAndCLock(const SystemStatusPQWM1& nmea);
- bool setXoState(const SystemStatusPQWM1& nmea);
- bool setRfAndParams(const SystemStatusPQWM1& nmea);
- bool setErrRecovery(const SystemStatusPQWM1& nmea);
+ // set dataitem derived item in report cache
+ bool setNetworkInfo(const SystemStatusNetworkInfo& s);
- bool setInjectedPosition(const SystemStatusPQWP1& nmea);
- bool setBestPosition(const SystemStatusPQWP2& nmea);
- bool setXtra(const SystemStatusPQWP3& nmea);
- bool setEphemeris(const SystemStatusPQWP4& nmea);
- bool setSvHealth(const SystemStatusPQWP5& nmea);
- bool setPdr(const SystemStatusPQWP6& nmea);
- bool setNavData(const SystemStatusPQWP7& nmea);
+ template <typename TYPE_REPORT, typename TYPE_ITEM>
+ bool setIteminReport(TYPE_REPORT& report, const TYPE_ITEM& s);
- bool setPositionFailure(const SystemStatusPQWS1& nmea);
+ // set default dataitem derived item in report cache
+ template <typename TYPE_REPORT, typename TYPE_ITEM>
+ void setDefaultIteminReport(TYPE_REPORT& report, const TYPE_ITEM& s);
- bool setNetworkInfo(IDataItemCore* dataitem);
+ template <typename TYPE_REPORT, typename TYPE_ITEM>
+ void getIteminReport(TYPE_REPORT& reportout, const TYPE_ITEM& c) const;
public:
// Static methods