diff options
author | Bhavna Sharma <sbhavna@codeaurora.org> | 2018-08-22 09:45:25 -0700 |
---|---|---|
committer | Bhavna Sharma <sbhavna@codeaurora.org> | 2018-10-02 09:26:43 -0700 |
commit | 5a8d17118152a87e3772deb204960c38a7810f1a (patch) | |
tree | 6bda93afceaf0c35e17cd2e1bf6f949468ce0b52 /gnss | |
parent | 9ae180b91354337eb840ba3d0c1975270caf0e7d (diff) | |
download | gps-5a8d17118152a87e3772deb204960c38a7810f1a.tar.gz |
New additions for Ephemeris and Poly handling
1. Add new data structures to hold the Ephemeris reports.
2. Modifications to SV Poly structure to include delete flags.
3. Add SV_POLY bit to GnssAidingDataSvMask to support
delete commands from modem for poly and ephemeris per constellation.
4. Define LocApiBase and LocAdapter functions to report the
ephemeris content, request for complete valid ephemeris and
Poly content at any time and report delete commands from modem
on Ephemeris and Poly content.
CRs-Fixed: 2301149
Change-Id: If36e87c410c3204c94a6ed7db30f297edba95508
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 04ac187..bf8dedc 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) { @@ -3402,6 +3404,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) { @@ -3466,6 +3476,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 { @@ -4346,11 +4378,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, |