summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu-Han Yang <yuhany@google.com>2020-02-26 12:46:01 -0800
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-02-28 21:09:34 +0000
commitd3490a2530a512ba147d06ebb982f83fb1708e4e (patch)
tree4fc0fe911aaafd5b2b53236e594cf2c6daf3c1f8
parentb0405c5c1fdd2f24701bc53f54ff7811c4ec22fa (diff)
downloadbase-d3490a2530a512ba147d06ebb982f83fb1708e4e.tar.gz
Allow settingIgnored for DBH request if inEmergency
Bug: 150232136 Test: on device Change-Id: Ia987418a591d716b787d406d725338a8563a55dd (cherry picked from commit 6d19cef854bdb382507daefae2a5956400a255d5)
-rw-r--r--services/core/java/com/android/server/location/GnssConfiguration.java9
-rw-r--r--services/core/java/com/android/server/location/GnssLocationProvider.java13
2 files changed, 15 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/location/GnssConfiguration.java b/services/core/java/com/android/server/location/GnssConfiguration.java
index 86a84e312899..18d9f69c9735 100644
--- a/services/core/java/com/android/server/location/GnssConfiguration.java
+++ b/services/core/java/com/android/server/location/GnssConfiguration.java
@@ -79,7 +79,7 @@ class GnssConfiguration {
// Represents an HAL interface version. Instances of this class are created in the JNI layer
// and returned through native methods.
- private static class HalInterfaceVersion {
+ static class HalInterfaceVersion {
final int mMajor;
final int mMinor;
@@ -205,6 +205,10 @@ class GnssConfiguration {
native_set_satellite_blacklist(constellations, svids);
}
+ HalInterfaceVersion getHalInterfaceVersion() {
+ return native_get_gnss_configuration_version();
+ }
+
interface SetCarrierProperty {
boolean set(int value);
}
@@ -231,8 +235,7 @@ class GnssConfiguration {
logConfigurations();
- final HalInterfaceVersion gnssConfigurationIfaceVersion =
- native_get_gnss_configuration_version();
+ final HalInterfaceVersion gnssConfigurationIfaceVersion = getHalInterfaceVersion();
if (gnssConfigurationIfaceVersion != null) {
// Set to a range checked value.
if (isConfigEsExtensionSecSupported(gnssConfigurationIfaceVersion)
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 4b79677b475b..342e9b8c3006 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -772,10 +772,15 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
locationRequest.setProvider(provider);
- // Ignore location settings if in emergency mode.
- if (isUserEmergency && mNIHandler.getInEmergency()) {
- locationRequest.setLocationSettingsIgnored(true);
- durationMillis *= EMERGENCY_LOCATION_UPDATE_DURATION_MULTIPLIER;
+ // Ignore location settings if in emergency mode. This is only allowed for
+ // isUserEmergency request (introduced in HAL v2.0), or DBH request in HAL v1.1.
+ if (mNIHandler.getInEmergency()) {
+ GnssConfiguration.HalInterfaceVersion halVersion =
+ mGnssConfiguration.getHalInterfaceVersion();
+ if (isUserEmergency || (halVersion.mMajor < 2 && !independentFromGnss)) {
+ locationRequest.setLocationSettingsIgnored(true);
+ durationMillis *= EMERGENCY_LOCATION_UPDATE_DURATION_MULTIPLIER;
+ }
}
Log.i(TAG,