summaryrefslogtreecommitdiff
path: root/gnss
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-10-05 12:51:44 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-10-05 12:51:44 -0700
commit837f245997498fc3b813498d24acc40bc00d6dd7 (patch)
treedc559c3493b589c1e4bd34af80178592564e2a6f /gnss
parent2f80dcc30c30c7a511553863abf8050953e485fc (diff)
parent5a8d17118152a87e3772deb204960c38a7810f1a (diff)
downloadgps-837f245997498fc3b813498d24acc40bc00d6dd7.tar.gz
Merge "New additions for Ephemeris and Poly handling"
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 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,