summaryrefslogtreecommitdiff
path: root/location/java
diff options
context:
space:
mode:
author Yu-Han Yang <yuhany@google.com> 2019-03-28 19:35:57 -0700
committer Yu-Han Yang <yuhany@google.com> 2019-04-12 18:22:05 +0000
commit284234ea8c7ac9d8a88fceaef7c5ad17dfea1104 (patch)
tree95335003196d320b5676cfe7ef1b1429e0d0b44a /location/java
parent9943f8db8457bdb7dd2a44498fb8a4e857049fb1 (diff)
Log constellation types in GnssMetrics
Bug: 121157068 Test: on device Change-Id: I9e2c1238e46422f9c11b748567c2741ed95aeaa0
Diffstat (limited to 'location/java')
-rw-r--r--location/java/android/location/GnssStatus.java35
-rw-r--r--location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java40
2 files changed, 70 insertions, 5 deletions
diff --git a/location/java/android/location/GnssStatus.java b/location/java/android/location/GnssStatus.java
index ce464b7bda37..211a0cb5852d 100644
--- a/location/java/android/location/GnssStatus.java
+++ b/location/java/android/location/GnssStatus.java
@@ -17,6 +17,7 @@
package android.location;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -44,6 +45,8 @@ public final class GnssStatus {
public static final int CONSTELLATION_GALILEO = 6;
/** Constellation type constant for IRNSS. */
public static final int CONSTELLATION_IRNSS = 7;
+ /** @hide */
+ public static final int CONSTELLATION_COUNT = 8;
/** @hide */
public static final int GNSS_SV_FLAGS_NONE = 0;
@@ -251,4 +254,36 @@ public final class GnssStatus {
public float getCarrierFrequencyHz(int satIndex) {
return mCarrierFrequencies[satIndex];
}
+
+ /**
+ * Returns the string representation of a constellation type. For example,
+ * {@link #CONSTELLATION_GPS} is represented by the string GPS.
+ *
+ * @param constellationType the constellation type.
+ * @return the string representation.
+ * @hide
+ */
+ @NonNull
+ public static String constellationTypeToString(@ConstellationType int constellationType) {
+ switch (constellationType) {
+ case CONSTELLATION_UNKNOWN:
+ return "UNKNOWN";
+ case CONSTELLATION_GPS:
+ return "GPS";
+ case CONSTELLATION_SBAS:
+ return "SBAS";
+ case CONSTELLATION_GLONASS:
+ return "GLONASS";
+ case CONSTELLATION_QZSS:
+ return "QZSS";
+ case CONSTELLATION_BEIDOU:
+ return "BEIDOU";
+ case CONSTELLATION_GALILEO:
+ return "GALILEO";
+ case CONSTELLATION_IRNSS:
+ return "IRNSS";
+ default:
+ return Integer.toString(constellationType);
+ }
+ }
}
diff --git a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
index 057a4ae879f4..78239714ca3b 100644
--- a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
+++ b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
@@ -16,26 +16,26 @@
package com.android.internal.location.gnssmetrics;
+import android.location.GnssStatus;
import android.os.SystemClock;
-import android.os.connectivity.GpsBatteryStats;
import android.os.SystemProperties;
-
+import android.os.connectivity.GpsBatteryStats;
import android.server.location.ServerLocationProtoEnums;
-
import android.text.format.DateUtils;
import android.util.Base64;
import android.util.Log;
import android.util.StatsLog;
import android.util.TimeUtils;
-import java.util.Arrays;
-
import com.android.internal.app.IBatteryStats;
import com.android.internal.location.nano.GnssLogsProto.GnssLog;
import com.android.internal.location.nano.GnssLogsProto.PowerMetrics;
+import java.util.Arrays;
+
/**
* GnssMetrics: Is used for logging GNSS metrics
+ *
* @hide
*/
public class GnssMetrics {
@@ -66,6 +66,11 @@ public class GnssMetrics {
/* GNSS power metrics */
private GnssPowerMetrics mGnssPowerMetrics;
+ /**
+ * A boolean array indicating whether the constellation types have been used in fix.
+ */
+ private boolean[] mConstellationTypes;
+
/** Constructor */
public GnssMetrics(IBatteryStats stats) {
mGnssPowerMetrics = new GnssPowerMetrics(stats);
@@ -156,6 +161,18 @@ public class GnssMetrics {
return;
}
+
+ /**
+ * Logs that a constellation type has been observed.
+ */
+ public void logConstellationType(int constellationType) {
+ if (constellationType >= mConstellationTypes.length) {
+ Log.e(TAG, "Constellation type " + constellationType + " is not valid.");
+ return;
+ }
+ mConstellationTypes[constellationType] = true;
+ }
+
/**
* Dumps GNSS metrics as a proto string
* @return
@@ -232,6 +249,13 @@ public class GnssMetrics {
s.append(" Top 4 Avg CN0 standard deviation (dB-Hz): ").append(
topFourAverageCn0Statistics.getStandardDeviation()).append("\n");
}
+ s.append(" Used-in-fix constellation types: ");
+ for (int i = 0; i < mConstellationTypes.length; i++) {
+ if (mConstellationTypes[i]) {
+ s.append(GnssStatus.constellationTypeToString(i)).append(" ");
+ }
+ }
+ s.append("\n");
s.append("GNSS_KPI_END").append("\n");
GpsBatteryStats stats = mGnssPowerMetrics.getGpsBatteryStats();
if (stats != null) {
@@ -320,9 +344,15 @@ public class GnssMetrics {
timeToFirstFixSecStatistics.reset();
positionAccuracyMeterStatistics.reset();
topFourAverageCn0Statistics.reset();
+ resetConstellationTypes();
return;
}
+ /** Resets {@link #mConstellationTypes} as an all-false boolean array. */
+ public void resetConstellationTypes() {
+ mConstellationTypes = new boolean[GnssStatus.CONSTELLATION_COUNT];
+ }
+
/* Class for handling GNSS power related metrics */
private class GnssPowerMetrics {