summaryrefslogtreecommitdiff
path: root/core/LocApiBase.cpp
diff options
context:
space:
mode:
authorMike Cailean <mcailean@codeaurora.org>2018-09-05 15:36:13 -0700
committerMike Cailean <mcailean@codeaurora.org>2018-09-06 16:09:05 -0700
commitc30e7c5e6304a15b6522f37f30bdb813c20833a6 (patch)
tree331e52ae3aa207bb8b6a2e27541170247927d803 /core/LocApiBase.cpp
parent033a0fa1c6cabd0841bbbd0c762f4b4dd4a5753f (diff)
Set SV in use mask based on final fixes
Do not set SV in use mask based on intermediate position update from modem since it might contain stale information Change-Id: I4300854ead3f85758bfb37d4c47ace10f63541a0 CRs-fixed: 2307493
Diffstat (limited to 'core/LocApiBase.cpp')
-rw-r--r--core/LocApiBase.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/core/LocApiBase.cpp b/core/LocApiBase.cpp
index f44ab45..7b52c82 100644
--- a/core/LocApiBase.cpp
+++ b/core/LocApiBase.cpp
@@ -188,6 +188,35 @@ bool LocApiBase::isInSession()
return inSession;
}
+bool LocApiBase::needReport(const UlpLocation& ulpLocation,
+ enum loc_sess_status status,
+ LocPosTechMask techMask)
+{
+ bool reported = false;
+
+ if (LOC_SESS_SUCCESS == status) {
+ // this is a final fix
+ LocPosTechMask mask =
+ LOC_POS_TECH_MASK_SATELLITE | LOC_POS_TECH_MASK_SENSORS | LOC_POS_TECH_MASK_HYBRID;
+ // it is a Satellite fix or a sensor fix
+ reported = (mask & techMask);
+ }
+ else if (LOC_SESS_INTERMEDIATE == status &&
+ LOC_SESS_INTERMEDIATE == ContextBase::mGps_conf.INTERMEDIATE_POS) {
+ // this is a intermediate fix and we accept intermediate
+
+ // it is NOT the case that
+ // there is inaccuracy; and
+ // we care about inaccuracy; and
+ // the inaccuracy exceeds our tolerance
+ reported = !((ulpLocation.gpsLocation.flags & LOC_GPS_LOCATION_HAS_ACCURACY) &&
+ (ContextBase::mGps_conf.ACCURACY_THRES != 0) &&
+ (ulpLocation.gpsLocation.accuracy > ContextBase::mGps_conf.ACCURACY_THRES));
+ }
+
+ return reported;
+}
+
void LocApiBase::addAdapter(LocAdapterBase* adapter)
{
for (int i = 0; i < MAX_ADAPTERS && mLocAdapters[i] != adapter; i++) {