diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2018-10-05 12:51:44 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-10-05 12:51:44 -0700 |
commit | 837f245997498fc3b813498d24acc40bc00d6dd7 (patch) | |
tree | dc559c3493b589c1e4bd34af80178592564e2a6f /gnss | |
parent | 2f80dcc30c30c7a511553863abf8050953e485fc (diff) | |
parent | 5a8d17118152a87e3772deb204960c38a7810f1a (diff) | |
download | gps-837f245997498fc3b813498d24acc40bc00d6dd7.tar.gz |
Merge "New additions for Ephemeris and Poly handling"
Diffstat (limited to 'gnss')
-rw-r--r-- | gnss/GnssAdapter.cpp | 44 | ||||
-rw-r--r-- | gnss/GnssAdapter.h | 2 |
2 files changed, 43 insertions, 3 deletions
diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index c6ed587..32e0833 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -1919,7 +1919,7 @@ GnssAdapter::updateClientsEventMask() } /* - ** For Automotive use cases we need to enable MEASUREMENT and POLY + ** For Automotive use cases we need to enable MEASUREMENT, POLY and EPHEMERIS ** when QDR is enabled (e.g.: either enabled via conf file or ** engine hub is loaded successfully). ** Note: this need to be called from msg queue thread. @@ -1929,8 +1929,10 @@ GnssAdapter::updateClientsEventMask() mask |= LOC_API_ADAPTER_BIT_GNSS_MEASUREMENT; mask |= LOC_API_ADAPTER_BIT_GNSS_SV_POLYNOMIAL_REPORT; mask |= LOC_API_ADAPTER_BIT_PARSED_UNPROPAGATED_POSITION_REPORT; + mask |= LOC_API_ADAPTER_BIT_GNSS_SV_EPHEMERIS_REPORT; - LOC_LOGD("%s]: Auto usecase, Enable MEAS/POLY - mask 0x%" PRIx64 "", __func__, mask); + LOC_LOGd("Auto usecase, Enable MEAS/POLY/EPHEMERIS - mask 0x%" PRIx64 "", + mask); } if (mAgpsCbInfo.statusV4Cb != NULL) { @@ -3403,6 +3405,14 @@ GnssAdapter::reportSvPolynomialEvent(GnssSvPolynomial &svPolynomial) mEngHubProxy->gnssReportSvPolynomial(svPolynomial); } +void +GnssAdapter::reportSvEphemerisEvent(GnssSvEphemerisReport & svEphemeris) +{ + LOC_LOGD("%s]:", __func__); + mEngHubProxy->gnssReportSvEphemeris(svEphemeris); +} + + bool GnssAdapter::requestOdcpiEvent(OdcpiRequestInfo& request) { @@ -3467,6 +3477,28 @@ void GnssAdapter::requestOdcpi(const OdcpiRequestInfo& request) } } +bool GnssAdapter::reportDeleteAidingDataEvent(GnssAidingData& aidingData) +{ + LOC_LOGD("%s]:", __func__); + + struct MsgHandleDeleteAidingDataEvent : public LocMsg { + GnssAdapter& mAdapter; + GnssAidingData mData; + inline MsgHandleDeleteAidingDataEvent(GnssAdapter& adapter, + GnssAidingData& data) : + LocMsg(), + mAdapter(adapter), + mData(data) {} + inline virtual void proc() const { + mAdapter.mEngHubProxy->gnssDeleteAidingData(mData); + } + }; + + sendMsg(new MsgHandleDeleteAidingDataEvent(*this, aidingData)); + return true; +} + + void GnssAdapter::initOdcpiCommand(const OdcpiRequestCallback& callback) { struct MsgInitOdcpi : public LocMsg { @@ -4347,11 +4379,17 @@ GnssAdapter::initEngHubProxy() { reportSvEvent(svNotify, fromEngineHub); }; + // callback function for engine hub to request for complete aiding data + GnssAdapterReqAidingDataCb reqAidingDataCb = + [this] (const GnssAidingDataSvMask& svDataMask) { + mLocApi->requestForAidingData(svDataMask); + }; + getEngHubProxyFn* getter = (getEngHubProxyFn*) dlsym(handle, "getEngHubProxy"); if(getter != nullptr) { EngineHubProxyBase* hubProxy = (*getter) (mMsgTask, mSystemStatus->getOsObserver(), reportPositionEventCb, - reportSvEventCb); + reportSvEventCb, reqAidingDataCb); if (hubProxy != nullptr) { mEngHubProxy = hubProxy; engHubLoadSuccessful = true; diff --git a/gnss/GnssAdapter.h b/gnss/GnssAdapter.h index b328884..21ce787 100644 --- a/gnss/GnssAdapter.h +++ b/gnss/GnssAdapter.h @@ -340,6 +340,7 @@ public: int msInWeek); virtual void reportSvMeasurementEvent(GnssSvMeasurementSet &svMeasurementSet); virtual void reportSvPolynomialEvent(GnssSvPolynomial &svPolynomial); + virtual void reportSvEphemerisEvent(GnssSvEphemerisReport & svEphemeris); virtual void reportGnssSvIdConfigEvent(const GnssSvIdConfig& config); virtual void reportGnssSvTypeConfigEvent(const GnssSvTypeConfig& config); virtual bool reportGnssEngEnergyConsumedEvent(uint64_t energyConsumedSinceFirstBoot); @@ -347,6 +348,7 @@ public: virtual bool requestATL(int connHandle, LocAGpsType agps_type, LocApnTypeMask apn_type_mask); virtual bool releaseATL(int connHandle); virtual bool requestOdcpiEvent(OdcpiRequestInfo& request); + virtual bool reportDeleteAidingDataEvent(GnssAidingData& aidingData); /* ======== UTILITIES ================================================================= */ bool needReport(const UlpLocation& ulpLocation, |