summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2019-12-02 12:48:29 -0800
committerRoshan Pius <rpius@google.com>2019-12-06 08:07:02 -0800
commit26ef68260aa896ff51a27ebb3ee1361466f65689 (patch)
tree3e924a998ce767c8d064d754e38a8eab0b0ae5ce /core/java
parenteb7fd8c9fad564f0516c55da2543bf5fbb1a6172 (diff)
WifiActivityEnergyInfo: Use time values for energy calculation
This removes PowerProfile @hide usage in wifi service. Bug: 145533104 Test: Compiles Change-Id: I56d366d557f5afe379f4ea0cbbff2c3b72440d99
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/os/connectivity/WifiActivityEnergyInfo.java32
1 files changed, 26 insertions, 6 deletions
diff --git a/core/java/android/os/connectivity/WifiActivityEnergyInfo.java b/core/java/android/os/connectivity/WifiActivityEnergyInfo.java
index 7db003d9853c..664b6c87d339 100644
--- a/core/java/android/os/connectivity/WifiActivityEnergyInfo.java
+++ b/core/java/android/os/connectivity/WifiActivityEnergyInfo.java
@@ -19,9 +19,13 @@ package android.os.connectivity;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
+import android.app.ActivityThread;
+import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
+import com.android.internal.os.PowerProfile;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -72,7 +76,6 @@ public final class WifiActivityEnergyInfo implements Parcelable {
* @param scanDurationMillis Cumulative milliseconds when radio is awake due to scan.
* @param idleDurationMillis Cumulative milliseconds when radio is awake but not transmitting or
* receiving.
- * @param energyUsedMicroJoules Cumulative energy consumed by Wifi, in microjoules.
*/
public WifiActivityEnergyInfo(
long timeSinceBootMillis,
@@ -80,14 +83,33 @@ public final class WifiActivityEnergyInfo implements Parcelable {
long txDurationMillis,
long rxDurationMillis,
long scanDurationMillis,
- long idleDurationMillis,
- long energyUsedMicroJoules) {
+ long idleDurationMillis) {
mTimeSinceBootMillis = timeSinceBootMillis;
mStackState = stackState;
mControllerTxDurationMillis = txDurationMillis;
mControllerRxDurationMillis = rxDurationMillis;
mControllerScanDurationMillis = scanDurationMillis;
mControllerIdleDurationMillis = idleDurationMillis;
+
+ final Context context = ActivityThread.currentActivityThread().getSystemContext();
+ if (context == null) {
+ mControllerEnergyUsedMicroJoules = 0L;
+ return;
+ }
+ // Calculate energy used using PowerProfile.
+ PowerProfile powerProfile = new PowerProfile(context);
+ final double rxIdleCurrent = powerProfile.getAveragePower(
+ PowerProfile.POWER_WIFI_CONTROLLER_IDLE);
+ final double rxCurrent = powerProfile.getAveragePower(
+ PowerProfile.POWER_WIFI_CONTROLLER_RX);
+ final double txCurrent = powerProfile.getAveragePower(
+ PowerProfile.POWER_WIFI_CONTROLLER_TX);
+ final double voltage = powerProfile.getAveragePower(
+ PowerProfile.POWER_WIFI_CONTROLLER_OPERATING_VOLTAGE) / 1000.0;
+ final long energyUsedMicroJoules = (long) ((mControllerTxDurationMillis * txCurrent
+ + mControllerRxDurationMillis * rxCurrent
+ + mControllerIdleDurationMillis * rxIdleCurrent)
+ * voltage);
mControllerEnergyUsedMicroJoules = energyUsedMicroJoules;
}
@@ -113,9 +135,8 @@ public final class WifiActivityEnergyInfo implements Parcelable {
long rxTime = in.readLong();
long scanTime = in.readLong();
long idleTime = in.readLong();
- long energyUsed = in.readLong();
return new WifiActivityEnergyInfo(timestamp, stackState,
- txTime, rxTime, scanTime, idleTime, energyUsed);
+ txTime, rxTime, scanTime, idleTime);
}
public WifiActivityEnergyInfo[] newArray(int size) {
return new WifiActivityEnergyInfo[size];
@@ -130,7 +151,6 @@ public final class WifiActivityEnergyInfo implements Parcelable {
out.writeLong(mControllerRxDurationMillis);
out.writeLong(mControllerScanDurationMillis);
out.writeLong(mControllerIdleDurationMillis);
- out.writeLong(mControllerEnergyUsedMicroJoules);
}
@Override