summaryrefslogtreecommitdiff
path: root/gnss
diff options
context:
space:
mode:
authorBhavna Sharma <sbhavna@codeaurora.org>2018-08-22 09:45:25 -0700
committerBhavna Sharma <sbhavna@codeaurora.org>2018-10-02 09:26:43 -0700
commit5a8d17118152a87e3772deb204960c38a7810f1a (patch)
tree6bda93afceaf0c35e17cd2e1bf6f949468ce0b52 /gnss
parent9ae180b91354337eb840ba3d0c1975270caf0e7d (diff)
downloadgps-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.cpp44
-rw-r--r--gnss/GnssAdapter.h2
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,