diff options
| author | 2019-03-28 19:35:57 -0700 | |
|---|---|---|
| committer | 2019-04-12 18:22:05 +0000 | |
| commit | 284234ea8c7ac9d8a88fceaef7c5ad17dfea1104 (patch) | |
| tree | 95335003196d320b5676cfe7ef1b1429e0d0b44a /location/java | |
| parent | 9943f8db8457bdb7dd2a44498fb8a4e857049fb1 (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.java | 35 | ||||
| -rw-r--r-- | location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java | 40 |
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 { |