Report Locations to AFW only when active tracking

We want to avoid reporting locations to AFW while
measurements is active but tracking is not active.

Change-Id: Icbb581199e6f5eba3cfe81cb6ab39337bb7ea51a
CRs-fixed: 2441384
This commit is contained in:
Dante Russo 2019-06-03 18:09:03 -07:00
parent 51426e477b
commit 4c9b600ed7
2 changed files with 20 additions and 1 deletions

View file

@ -61,6 +61,7 @@ GnssAPIClient::GnssAPIClient(const sp<V1_0::IGnssCallback>& gpsCb,
mControlClient(new LocationAPIControlClient()), mControlClient(new LocationAPIControlClient()),
mLocationCapabilitiesMask(0), mLocationCapabilitiesMask(0),
mLocationCapabilitiesCached(false), mLocationCapabilitiesCached(false),
mTracking(false),
mGnssCbIface_2_0(nullptr) mGnssCbIface_2_0(nullptr)
{ {
LOC_LOGD("%s]: (%p %p)", __FUNCTION__, &gpsCb, &niCb); LOC_LOGD("%s]: (%p %p)", __FUNCTION__, &gpsCb, &niCb);
@ -76,6 +77,7 @@ GnssAPIClient::GnssAPIClient(const sp<V2_0::IGnssCallback>& gpsCb) :
mControlClient(new LocationAPIControlClient()), mControlClient(new LocationAPIControlClient()),
mLocationCapabilitiesMask(0), mLocationCapabilitiesMask(0),
mLocationCapabilitiesCached(false), mLocationCapabilitiesCached(false),
mTracking(false),
mGnssCbIface_2_0(nullptr) mGnssCbIface_2_0(nullptr)
{ {
LOC_LOGD("%s]: (%p)", __FUNCTION__, &gpsCb); LOC_LOGD("%s]: (%p)", __FUNCTION__, &gpsCb);
@ -179,6 +181,11 @@ void GnssAPIClient::gnssUpdateCallbacks_2_0(const sp<V2_0::IGnssCallback>& gpsCb
bool GnssAPIClient::gnssStart() bool GnssAPIClient::gnssStart()
{ {
LOC_LOGD("%s]: ()", __FUNCTION__); LOC_LOGD("%s]: ()", __FUNCTION__);
mMutex.lock();
mTracking = true;
mMutex.unlock();
bool retVal = true; bool retVal = true;
locAPIStartTracking(mTrackingOptions); locAPIStartTracking(mTrackingOptions);
return retVal; return retVal;
@ -187,6 +194,11 @@ bool GnssAPIClient::gnssStart()
bool GnssAPIClient::gnssStop() bool GnssAPIClient::gnssStop()
{ {
LOC_LOGD("%s]: ()", __FUNCTION__); LOC_LOGD("%s]: ()", __FUNCTION__);
mMutex.lock();
mTracking = false;
mMutex.unlock();
bool retVal = true; bool retVal = true;
locAPIStopTracking(); locAPIStopTracking();
return retVal; return retVal;
@ -412,12 +424,18 @@ void GnssAPIClient::onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask)
void GnssAPIClient::onTrackingCb(Location location) void GnssAPIClient::onTrackingCb(Location location)
{ {
LOC_LOGD("%s]: (flags: %02x)", __FUNCTION__, location.flags);
mMutex.lock(); mMutex.lock();
auto gnssCbIface(mGnssCbIface); auto gnssCbIface(mGnssCbIface);
auto gnssCbIface_2_0(mGnssCbIface_2_0); auto gnssCbIface_2_0(mGnssCbIface_2_0);
bool isTracking = mTracking;
mMutex.unlock(); mMutex.unlock();
LOC_LOGD("%s]: (flags: %02x isTracking: %d)", __FUNCTION__, location.flags, isTracking);
if (!isTracking) {
return;
}
if (gnssCbIface_2_0 != nullptr) { if (gnssCbIface_2_0 != nullptr) {
V2_0::GnssLocation gnssLocation; V2_0::GnssLocation gnssLocation;
convertGnssLocation(location, gnssLocation); convertGnssLocation(location, gnssLocation);

View file

@ -102,6 +102,7 @@ private:
LocationCapabilitiesMask mLocationCapabilitiesMask; LocationCapabilitiesMask mLocationCapabilitiesMask;
bool mLocationCapabilitiesCached; bool mLocationCapabilitiesCached;
TrackingOptions mTrackingOptions; TrackingOptions mTrackingOptions;
bool mTracking;
sp<V2_0::IGnssCallback> mGnssCbIface_2_0; sp<V2_0::IGnssCallback> mGnssCbIface_2_0;
}; };