Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46fa8407 authored by Adam Bookatz's avatar Adam Bookatz Committed by Android (Google) Code Review
Browse files

Merge "Statsd atom: GpsSignalQuality"

parents 08bafa97 48d362e3
Loading
Loading
Loading
Loading
+12 −2
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@ import "frameworks/base/core/proto/android/app/job/enums.proto";
import "frameworks/base/core/proto/android/bluetooth/enums.proto";
import "frameworks/base/core/proto/android/bluetooth/enums.proto";
import "frameworks/base/core/proto/android/os/enums.proto";
import "frameworks/base/core/proto/android/os/enums.proto";
import "frameworks/base/core/proto/android/server/enums.proto";
import "frameworks/base/core/proto/android/server/enums.proto";
import "frameworks/base/core/proto/android/server/location/enums.proto";
import "frameworks/base/core/proto/android/service/procstats_enum.proto";
import "frameworks/base/core/proto/android/service/procstats_enum.proto";
import "frameworks/base/core/proto/android/stats/enums.proto";
import "frameworks/base/core/proto/android/stats/enums.proto";
import "frameworks/base/core/proto/android/stats/launcher/launcher.proto";
import "frameworks/base/core/proto/android/stats/launcher/launcher.proto";
@@ -118,7 +119,7 @@ message Atom {
        ResourceConfigurationChanged resource_configuration_changed = 66;
        ResourceConfigurationChanged resource_configuration_changed = 66;
        BluetoothEnabledStateChanged bluetooth_enabled_state_changed = 67;
        BluetoothEnabledStateChanged bluetooth_enabled_state_changed = 67;
        BluetoothConnectionStateChanged bluetooth_connection_state_changed = 68;
        BluetoothConnectionStateChanged bluetooth_connection_state_changed = 68;
        // 69 is blank but need not be.
        GpsSignalQualityChanged gps_signal_quality_changed = 69;
        UsbConnectorStateChanged usb_connector_state_changed = 70;
        UsbConnectorStateChanged usb_connector_state_changed = 70;
        SpeakerImpedanceReported speaker_impedance_reported = 71;
        SpeakerImpedanceReported speaker_impedance_reported = 71;
        HardwareFailed hardware_failed = 72;
        HardwareFailed hardware_failed = 72;
@@ -494,7 +495,6 @@ message SensorStateChanged {
    optional State state = 3;
    optional State state = 3;
}
}



/**
/**
 * Logs when GPS state changes.
 * Logs when GPS state changes.
 *
 *
@@ -511,6 +511,16 @@ message GpsScanStateChanged {
    optional State state = 2;
    optional State state = 2;
}
}


/**
 * Logs when GPS signal quality.
 *
 * Logged from:
 *   /frameworks/base/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
 */
message GpsSignalQualityChanged {
    optional android.server.location.GpsSignalQualityEnum level = 1;
}



/**
/**
 * Logs when a sync manager sync state changes.
 * Logs when a sync manager sync state changes.
+30 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

package android.server.location;

option java_outer_classname = "ServerLocationProtoEnums";
option java_multiple_files = true;

// GPS Signal Quality levels,
// primarily used by location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
enum GpsSignalQualityEnum {
    GPS_SIGNAL_QUALITY_UNKNOWN = -1;
    GPS_SIGNAL_QUALITY_POOR = 0;
    GPS_SIGNAL_QUALITY_GOOD = 1;
}
+21 −3
Original line number Original line Diff line number Diff line
@@ -20,9 +20,12 @@ import android.os.SystemClock;
import android.os.connectivity.GpsBatteryStats;
import android.os.connectivity.GpsBatteryStats;
import android.os.SystemProperties;
import android.os.SystemProperties;


import android.server.location.ServerLocationProtoEnums;

import android.text.format.DateUtils;
import android.text.format.DateUtils;
import android.util.Base64;
import android.util.Base64;
import android.util.Log;
import android.util.Log;
import android.util.StatsLog;
import android.util.TimeUtils;
import android.util.TimeUtils;


import java.util.Arrays;
import java.util.Arrays;
@@ -39,11 +42,17 @@ public class GnssMetrics {


  private static final String TAG = GnssMetrics.class.getSimpleName();
  private static final String TAG = GnssMetrics.class.getSimpleName();


  /* Constant which indicates GPS signal quality is as yet unknown */
  public static final int GPS_SIGNAL_QUALITY_UNKNOWN =
          ServerLocationProtoEnums.GPS_SIGNAL_QUALITY_UNKNOWN; // -1

  /* Constant which indicates GPS signal quality is poor */
  /* Constant which indicates GPS signal quality is poor */
  public static final int GPS_SIGNAL_QUALITY_POOR = 0;
  public static final int GPS_SIGNAL_QUALITY_POOR =
      ServerLocationProtoEnums.GPS_SIGNAL_QUALITY_POOR; // 0


  /* Constant which indicates GPS signal quality is good */
  /* Constant which indicates GPS signal quality is good */
  public static final int GPS_SIGNAL_QUALITY_GOOD = 1;
  public static final int GPS_SIGNAL_QUALITY_GOOD =
      ServerLocationProtoEnums.GPS_SIGNAL_QUALITY_GOOD; // 1


  /* Number of GPS signal quality levels */
  /* Number of GPS signal quality levels */
  public static final int NUM_GPS_SIGNAL_QUALITY_LEVELS = GPS_SIGNAL_QUALITY_GOOD + 1;
  public static final int NUM_GPS_SIGNAL_QUALITY_LEVELS = GPS_SIGNAL_QUALITY_GOOD + 1;
@@ -329,11 +338,15 @@ public class GnssMetrics {
    /* Last reported Top Four Average CN0 */
    /* Last reported Top Four Average CN0 */
    private double mLastAverageCn0;
    private double mLastAverageCn0;


    /* Last reported signal quality bin (based on Top Four Average CN0) */
    private int mLastSignalLevel;

    public GnssPowerMetrics(IBatteryStats stats) {
    public GnssPowerMetrics(IBatteryStats stats) {
      mBatteryStats = stats;
      mBatteryStats = stats;
      // Used to initialize the variable to a very small value (unachievable in practice) so that
      // Used to initialize the variable to a very small value (unachievable in practice) so that
      // the first CNO report will trigger an update to BatteryStats
      // the first CNO report will trigger an update to BatteryStats
      mLastAverageCn0 = -100.0;
      mLastAverageCn0 = -100.0;
      mLastSignalLevel = GPS_SIGNAL_QUALITY_UNKNOWN;
    }
    }


    /**
    /**
@@ -384,8 +397,13 @@ public class GnssMetrics {
      if (Math.abs(avgCn0 - mLastAverageCn0) < REPORTING_THRESHOLD_DB_HZ) {
      if (Math.abs(avgCn0 - mLastAverageCn0) < REPORTING_THRESHOLD_DB_HZ) {
        return;
        return;
      }
      }
      int signalLevel = getSignalLevel(avgCn0);
      if (signalLevel != mLastSignalLevel) {
        StatsLog.write(StatsLog.GPS_SIGNAL_QUALITY_CHANGED, signalLevel);
        mLastSignalLevel = signalLevel;
      }
      try {
      try {
        mBatteryStats.noteGpsSignalQuality(getSignalLevel(avgCn0));
        mBatteryStats.noteGpsSignalQuality(signalLevel);
        mLastAverageCn0 = avgCn0;
        mLastAverageCn0 = avgCn0;
      } catch (Exception e) {
      } catch (Exception e) {
        Log.w(TAG, "Exception", e);
        Log.w(TAG, "Exception", e);