Merge "GPS power calculation"
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 039b66d..51f51c2 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -6211,8 +6211,20 @@
}
@Override public long getGpsBatteryDrainMaMs() {
- //TODO: Add GPS power computation (b/67213967)
- return 0;
+ final double opVolt = mPowerProfile.getAveragePower(
+ PowerProfile.POWER_GPS_OPERATING_VOLTAGE) / 1000.0;
+ if (opVolt == 0) {
+ return 0;
+ }
+ double energyUsedMaMs = 0.0;
+ final int which = STATS_SINCE_CHARGED;
+ final long rawRealtime = SystemClock.elapsedRealtime() * 1000;
+ for(int i=0; i < GnssMetrics.NUM_GPS_SIGNAL_QUALITY_LEVELS; i++) {
+ energyUsedMaMs
+ += mPowerProfile.getAveragePower(PowerProfile.POWER_GPS_SIGNAL_QUALITY_BASED, i)
+ * (getGpsSignalQualityTime(i, rawRealtime, which) / 1000);
+ }
+ return (long) energyUsedMaMs;
}
@Override public long getPhoneOnTime(long elapsedRealtimeUs, int which) {
diff --git a/core/java/com/android/internal/os/PowerProfile.java b/core/java/com/android/internal/os/PowerProfile.java
index 240fc51..f4436d3 100644
--- a/core/java/com/android/internal/os/PowerProfile.java
+++ b/core/java/com/android/internal/os/PowerProfile.java
@@ -104,12 +104,18 @@
public static final String POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE =
"modem.controller.voltage";
- /**
+ /**
* Power consumption when GPS is on.
*/
public static final String POWER_GPS_ON = "gps.on";
/**
+ * GPS power parameters based on signal quality
+ */
+ public static final String POWER_GPS_SIGNAL_QUALITY_BASED = "gps.signalqualitybased";
+ public static final String POWER_GPS_OPERATING_VOLTAGE = "gps.voltage";
+
+ /**
* Power consumption when Bluetooth driver is on.
* @deprecated
*/
diff --git a/core/res/res/xml/power_profile.xml b/core/res/res/xml/power_profile.xml
index bc4b10f..d80c697 100644
--- a/core/res/res/xml/power_profile.xml
+++ b/core/res/res/xml/power_profile.xml
@@ -127,4 +127,11 @@
</array>
<item name="modem.controller.voltage">0</item>
+ <!-- GPS related values. Default is 0.-->
+ <array name="gps.signalqualitybased"> <!-- Strength 0 to 1 -->
+ <value>0</value>
+ <value>0</value>
+ </array>
+ <item name="gps.voltage">0</item>
+
</device>