diff options
author | Katz Yamada <kyamada@codeaurora.org> | 2017-09-26 15:19:18 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-10-09 10:04:13 -0700 |
commit | f5f0f29c13570eec19ae03f6888bc12759d9dac2 (patch) | |
tree | 6e1f93fd5f91b65cf0819ad6e04203300d6b81c1 /core/SystemStatus.h | |
parent | b0982b4476d852410658b307afdeacccd26fb981 (diff) | |
download | gps-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.h | 439 |
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 |