summaryrefslogtreecommitdiff
path: root/gps/gnss/XtraSystemStatusObserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'gps/gnss/XtraSystemStatusObserver.h')
-rw-r--r--gps/gnss/XtraSystemStatusObserver.h44
1 files changed, 35 insertions, 9 deletions
diff --git a/gps/gnss/XtraSystemStatusObserver.h b/gps/gnss/XtraSystemStatusObserver.h
index 42f49b5..af0789b 100644
--- a/gps/gnss/XtraSystemStatusObserver.h
+++ b/gps/gnss/XtraSystemStatusObserver.h
@@ -31,41 +31,67 @@
#include <cinttypes>
#include <MsgTask.h>
+#include <LocIpc.h>
+#include <LocTimer.h>
using namespace std;
using loc_core::IOsObserver;
using loc_core::IDataItemObserver;
using loc_core::IDataItemCore;
+using loc_util::LocIpc;
-
-class XtraSystemStatusObserver : public IDataItemObserver {
+class XtraSystemStatusObserver : public IDataItemObserver, public LocIpc{
public :
// constructor & destructor
inline XtraSystemStatusObserver(IOsObserver* sysStatObs, const MsgTask* msgTask):
- mSystemStatusObsrvr(sysStatObs), mMsgTask(msgTask) {
+ mSystemStatusObsrvr(sysStatObs), mMsgTask(msgTask),
+ mGpsLock(-1), mConnections(0), mXtraThrottle(true), mReqStatusReceived(false),
+ mDelayLocTimer(*this), mIsConnectivityStatusKnown (false) {
subscribe(true);
+ startListeningNonBlocking(LOC_IPC_HAL);
+ mDelayLocTimer.start(100 /*.1 sec*/, false);
+ }
+ inline virtual ~XtraSystemStatusObserver() {
+ subscribe(false);
+ stopListening();
}
- inline XtraSystemStatusObserver() {};
- inline virtual ~XtraSystemStatusObserver() { subscribe(false); }
// IDataItemObserver overrides
inline virtual void getName(string& name);
virtual void notify(const list<IDataItemCore*>& dlist);
bool updateLockStatus(uint32_t lock);
- bool updateConnectionStatus(bool connected, uint32_t type);
+ bool updateConnections(uint64_t allConnections);
bool updateTac(const string& tac);
bool updateMccMnc(const string& mccmnc);
+ bool updateXtraThrottle(const bool enabled);
inline const MsgTask* getMsgTask() { return mMsgTask; }
void subscribe(bool yes);
+protected:
+ void onReceive(const std::string& data) override;
+
private:
- int createSocket();
- void closeSocket(const int32_t socketFd);
- bool sendEvent(const stringstream& event);
IOsObserver* mSystemStatusObsrvr;
const MsgTask* mMsgTask;
+ int32_t mGpsLock;
+ uint64_t mConnections;
+ string mTac;
+ string mMccmnc;
+ bool mXtraThrottle;
+ bool mReqStatusReceived;
+ bool mIsConnectivityStatusKnown;
+
+ class DelayLocTimer : public LocTimer {
+ XtraSystemStatusObserver& mXSSO;
+ public:
+ DelayLocTimer(XtraSystemStatusObserver& xsso) : mXSSO(xsso) {}
+ void timeOutCallback() override {
+ mXSSO.send(LOC_IPC_XTRA, "halinit");
+ }
+ } mDelayLocTimer;
+ bool onStatusRequested(int32_t xtraStatusUpdated);
};
#endif