Loading services/core/java/com/android/server/power/stats/BatteryStatsImpl.java +24 −89 Original line number Diff line number Diff line Loading @@ -2205,6 +2205,11 @@ public class BatteryStatsImpl extends BatteryStats { getWakelockDurationRetriever() { return mWakelockDurationRetriever; } @Override public NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats) { return BatteryStatsImpl.this.networkStatsDelta(stats, oldStats); } } private final PowerStatsCollectorInjector mPowerStatsCollectorInjector = Loading Loading @@ -12392,83 +12397,13 @@ public class BatteryStatsImpl extends BatteryStats { return networkStatsManager.getWifiUidStats(); } static class NetworkStatsDelta { int mUid; int mSet; long mRxBytes; long mRxPackets; long mTxBytes; long mTxPackets; public int getUid() { return mUid; } public int getSet() { return mSet; } public long getRxBytes() { return mRxBytes; } public long getRxPackets() { return mRxPackets; } public long getTxBytes() { return mTxBytes; } public long getTxPackets() { return mTxPackets; } @Override public String toString() { return "NetworkStatsDelta{mUid=" + mUid + ", mSet=" + mSet + ", mRxBytes=" + mRxBytes + ", mRxPackets=" + mRxPackets + ", mTxBytes=" + mTxBytes + ", mTxPackets=" + mTxPackets + '}'; } } static List<NetworkStatsDelta> computeDelta(NetworkStats currentStats, NetworkStats lastStats) { List<NetworkStatsDelta> deltaList = new ArrayList<>(); for (NetworkStats.Entry entry : currentStats) { NetworkStatsDelta delta = new NetworkStatsDelta(); delta.mUid = entry.getUid(); delta.mSet = entry.getSet(); NetworkStats.Entry lastEntry = null; if (lastStats != null) { for (NetworkStats.Entry e : lastStats) { if (e.getUid() == entry.getUid() && e.getSet() == entry.getSet() && e.getTag() == entry.getTag() && e.getMetered() == entry.getMetered() && e.getRoaming() == entry.getRoaming() && e.getDefaultNetwork() == entry.getDefaultNetwork() /*&& Objects.equals(e.getIface(), entry.getIface())*/) { lastEntry = e; break; } } } if (lastEntry != null) { delta.mRxBytes = Math.max(0, entry.getRxBytes() - lastEntry.getRxBytes()); delta.mRxPackets = Math.max(0, entry.getRxPackets() - lastEntry.getRxPackets()); delta.mTxBytes = Math.max(0, entry.getTxBytes() - lastEntry.getTxBytes()); delta.mTxPackets = Math.max(0, entry.getTxPackets() - lastEntry.getTxPackets()); } else { delta.mRxBytes = entry.getRxBytes(); delta.mRxPackets = entry.getRxPackets(); delta.mTxBytes = entry.getTxBytes(); delta.mTxPackets = entry.getTxPackets(); } deltaList.add(delta); @VisibleForTesting protected NetworkStats networkStatsDelta(@NonNull NetworkStats stats, @Nullable NetworkStats oldStats) { if (oldStats == null) { return stats; } return deltaList; return stats.subtract(oldStats); } /** Loading @@ -12486,12 +12421,12 @@ public class BatteryStatsImpl extends BatteryStats { } } NetworkStats delta; // Grab a separate lock to acquire the network stats, which may do I/O. List<NetworkStatsDelta> delta; synchronized (mWifiNetworkLock) { final NetworkStats latestStats = readWifiNetworkStatsLocked(networkStatsManager); if (latestStats != null) { delta = computeDelta(latestStats, mLastWifiNetworkStats); delta = networkStatsDelta(latestStats, mLastWifiNetworkStats); mLastWifiNetworkStats = latestStats; } else { delta = null; Loading @@ -12501,15 +12436,15 @@ public class BatteryStatsImpl extends BatteryStats { } private void onWifiPowerStatsRetrieved(WifiActivityEnergyInfo wifiActivityEnergyInfo, List<NetworkStatsDelta> networkStatsDeltas, long elapsedRealtimeMs, long uptimeMs) { NetworkStats networkStatsDelta, long elapsedRealtimeMs, long uptimeMs) { // Do not populate consumed energy, because energy attribution is done by // WifiPowerStatsProcessor. updateWifiBatteryStats(wifiActivityEnergyInfo, networkStatsDeltas, POWER_DATA_UNAVAILABLE, updateWifiBatteryStats(wifiActivityEnergyInfo, networkStatsDelta, POWER_DATA_UNAVAILABLE, elapsedRealtimeMs, uptimeMs); } private void updateWifiBatteryStats(WifiActivityEnergyInfo info, List<NetworkStatsDelta> delta, long consumedChargeUC, long elapsedRealtimeMs, NetworkStats delta, long consumedChargeUC, long elapsedRealtimeMs, long uptimeMs) { synchronized (this) { if (!mOnBatteryInternal || mIgnoreNextExternalStats) { Loading @@ -12535,7 +12470,7 @@ public class BatteryStatsImpl extends BatteryStats { long totalTxPackets = 0; long totalRxPackets = 0; if (delta != null) { for (NetworkStatsDelta entry : delta) { for (NetworkStats.Entry entry : delta) { if (DEBUG_ENERGY) { Slog.d(TAG, "Wifi uid " + entry.getUid() + ": delta rx=" + entry.getRxBytes() Loading Loading @@ -12879,11 +12814,11 @@ public class BatteryStatsImpl extends BatteryStats { mLastModemActivityInfo = activityInfo; // Grab a separate lock to acquire the network stats, which may do I/O. List<NetworkStatsDelta> delta = null; NetworkStats delta = null; synchronized (mModemNetworkLock) { final NetworkStats latestStats = readMobileNetworkStatsLocked(networkStatsManager); if (latestStats != null) { delta = computeDelta(latestStats, mLastModemNetworkStats); delta = networkStatsDelta(latestStats, mLastModemNetworkStats); mLastModemNetworkStats = latestStats; } } Loading @@ -12892,15 +12827,15 @@ public class BatteryStatsImpl extends BatteryStats { } private void onMobileRadioPowerStatsRetrieved(ModemActivityInfo modemActivityInfo, List<NetworkStatsDelta> networkStatsDeltas, long elapsedRealtimeMs, long uptimeMs) { NetworkStats networkStatsDelta, long elapsedRealtimeMs, long uptimeMs) { // Do not populate consumed energy, because energy attribution is done by // MobileRadioPowerStatsProcessor. updateCellularBatteryStats(modemActivityInfo, networkStatsDeltas, POWER_DATA_UNAVAILABLE, updateCellularBatteryStats(modemActivityInfo, networkStatsDelta, POWER_DATA_UNAVAILABLE, elapsedRealtimeMs, uptimeMs); } private void updateCellularBatteryStats(@Nullable ModemActivityInfo deltaInfo, @Nullable List<NetworkStatsDelta> delta, long consumedChargeUC, long elapsedRealtimeMs, @Nullable NetworkStats delta, long consumedChargeUC, long elapsedRealtimeMs, long uptimeMs) { // Add modem tx power to history. addModemTxPowerToHistory(deltaInfo, elapsedRealtimeMs, uptimeMs); Loading Loading @@ -13003,7 +12938,7 @@ public class BatteryStatsImpl extends BatteryStats { long totalRxPackets = 0; long totalTxPackets = 0; if (delta != null) { for (NetworkStatsDelta entry : delta) { for (NetworkStats.Entry entry : delta) { if (entry.getRxPackets() == 0 && entry.getTxPackets() == 0) { continue; } Loading Loading @@ -13044,7 +12979,7 @@ public class BatteryStatsImpl extends BatteryStats { // Now distribute proportional blame to the apps that did networking. long totalPackets = totalRxPackets + totalTxPackets; if (totalPackets > 0) { for (NetworkStatsDelta entry : delta) { for (NetworkStats.Entry entry : delta) { if (entry.getRxPackets() == 0 && entry.getTxPackets() == 0) { continue; } services/core/java/com/android/server/power/stats/MobileRadioPowerStatsCollector.java +7 −8 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ import com.android.internal.os.PowerStats; import com.android.server.power.stats.format.MobileRadioPowerStatsLayout; import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.function.LongSupplier; Loading Loading @@ -71,7 +70,7 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { interface Observer { void onMobileRadioPowerStatsRetrieved( @Nullable ModemActivityInfo modemActivityDelta, @Nullable List<BatteryStatsImpl.NetworkStatsDelta> networkStatsDeltas, @Nullable NetworkStats networkStatsDeltas, long elapsedRealtimeMs, long uptimeMs); } Loading @@ -86,6 +85,8 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { TelephonyManager getTelephonyManager(); LongSupplier getCallDurationSupplier(); LongSupplier getPhoneSignalScanDurationSupplier(); NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats); } private final Injector mInjector; Loading Loading @@ -190,7 +191,7 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { mPowerStats.uidStats.clear(); ModemActivityInfo modemActivityDelta = collectModemActivityInfo(); List<BatteryStatsImpl.NetworkStatsDelta> networkStatsDeltas = collectNetworkStats(); NetworkStats networkStatsDeltas = collectNetworkStats(); mConsumedEnergyHelper.collectConsumedEnergy(mPowerStats, mLayout); Loading Loading @@ -288,17 +289,15 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { return deltaInfo; } private List<BatteryStatsImpl.NetworkStatsDelta> collectNetworkStats() { private NetworkStats collectNetworkStats() { NetworkStats networkStats = mNetworkStatsSupplier.get(); if (networkStats == null) { return null; } List<BatteryStatsImpl.NetworkStatsDelta> delta = BatteryStatsImpl.computeDelta(networkStats, mLastNetworkStats); NetworkStats delta = mInjector.networkStatsDelta(networkStats, mLastNetworkStats); mLastNetworkStats = networkStats; for (int i = delta.size() - 1; i >= 0; i--) { BatteryStatsImpl.NetworkStatsDelta uidDelta = delta.get(i); for (NetworkStats.Entry uidDelta : delta) { long rxBytes = uidDelta.getRxBytes(); long txBytes = uidDelta.getTxBytes(); long rxPackets = uidDelta.getRxPackets(); Loading services/core/java/com/android/server/power/stats/WifiPowerStatsCollector.java +7 −8 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ import com.android.internal.os.PowerStats; import com.android.server.power.stats.format.WifiPowerStatsLayout; import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; Loading @@ -43,7 +42,7 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { interface Observer { void onWifiPowerStatsRetrieved(WifiActivityEnergyInfo info, List<BatteryStatsImpl.NetworkStatsDelta> delta, long elapsedRealtimeMs, NetworkStats delta, long elapsedRealtimeMs, long uptimeMs); } Loading @@ -66,6 +65,8 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { Supplier<NetworkStats> getWifiNetworkStatsSupplier(); WifiManager getWifiManager(); WifiStatsRetriever getWifiStatsRetriever(); NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats); } private final Injector mInjector; Loading Loading @@ -161,7 +162,7 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { } else { collectWifiActivityStats(); } List<BatteryStatsImpl.NetworkStatsDelta> networkStatsDeltas = collectNetworkStats(); NetworkStats networkStatsDeltas = collectNetworkStats(); collectWifiScanTime(); mConsumedEnergyHelper.collectConsumedEnergy(mPowerStats, mLayout); Loading Loading @@ -227,17 +228,15 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { mPowerStats.durationMs = duration; } private List<BatteryStatsImpl.NetworkStatsDelta> collectNetworkStats() { private NetworkStats collectNetworkStats() { NetworkStats networkStats = mNetworkStatsSupplier.get(); if (networkStats == null) { return null; } List<BatteryStatsImpl.NetworkStatsDelta> delta = BatteryStatsImpl.computeDelta(networkStats, mLastNetworkStats); NetworkStats delta = mInjector.networkStatsDelta(networkStats, mLastNetworkStats); mLastNetworkStats = networkStats; for (int i = delta.size() - 1; i >= 0; i--) { BatteryStatsImpl.NetworkStatsDelta uidDelta = delta.get(i); for (NetworkStats.Entry uidDelta : delta) { long rxBytes = uidDelta.getRxBytes(); long txBytes = uidDelta.getTxBytes(); long rxPackets = uidDelta.getRxPackets(); Loading services/tests/powerstatstests/src/com/android/server/power/stats/MobileRadioPowerStatsCollectorTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,11 @@ public class MobileRadioPowerStatsCollectorTest { public LongSupplier getPhoneSignalScanDurationSupplier() { return mScanDurationSupplier; } @Override public NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats) { return NetworkStatsTestUtils.networkStatsDelta(stats, oldStats); } }; @Before Loading services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -283,6 +283,11 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl { protected void updateBatteryPropertiesLocked() { } @Override protected NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats) { return NetworkStatsTestUtils.networkStatsDelta(stats, oldStats); } public static class DummyExternalStatsSync implements ExternalStatsSync { public int flags = 0; Loading Loading
services/core/java/com/android/server/power/stats/BatteryStatsImpl.java +24 −89 Original line number Diff line number Diff line Loading @@ -2205,6 +2205,11 @@ public class BatteryStatsImpl extends BatteryStats { getWakelockDurationRetriever() { return mWakelockDurationRetriever; } @Override public NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats) { return BatteryStatsImpl.this.networkStatsDelta(stats, oldStats); } } private final PowerStatsCollectorInjector mPowerStatsCollectorInjector = Loading Loading @@ -12392,83 +12397,13 @@ public class BatteryStatsImpl extends BatteryStats { return networkStatsManager.getWifiUidStats(); } static class NetworkStatsDelta { int mUid; int mSet; long mRxBytes; long mRxPackets; long mTxBytes; long mTxPackets; public int getUid() { return mUid; } public int getSet() { return mSet; } public long getRxBytes() { return mRxBytes; } public long getRxPackets() { return mRxPackets; } public long getTxBytes() { return mTxBytes; } public long getTxPackets() { return mTxPackets; } @Override public String toString() { return "NetworkStatsDelta{mUid=" + mUid + ", mSet=" + mSet + ", mRxBytes=" + mRxBytes + ", mRxPackets=" + mRxPackets + ", mTxBytes=" + mTxBytes + ", mTxPackets=" + mTxPackets + '}'; } } static List<NetworkStatsDelta> computeDelta(NetworkStats currentStats, NetworkStats lastStats) { List<NetworkStatsDelta> deltaList = new ArrayList<>(); for (NetworkStats.Entry entry : currentStats) { NetworkStatsDelta delta = new NetworkStatsDelta(); delta.mUid = entry.getUid(); delta.mSet = entry.getSet(); NetworkStats.Entry lastEntry = null; if (lastStats != null) { for (NetworkStats.Entry e : lastStats) { if (e.getUid() == entry.getUid() && e.getSet() == entry.getSet() && e.getTag() == entry.getTag() && e.getMetered() == entry.getMetered() && e.getRoaming() == entry.getRoaming() && e.getDefaultNetwork() == entry.getDefaultNetwork() /*&& Objects.equals(e.getIface(), entry.getIface())*/) { lastEntry = e; break; } } } if (lastEntry != null) { delta.mRxBytes = Math.max(0, entry.getRxBytes() - lastEntry.getRxBytes()); delta.mRxPackets = Math.max(0, entry.getRxPackets() - lastEntry.getRxPackets()); delta.mTxBytes = Math.max(0, entry.getTxBytes() - lastEntry.getTxBytes()); delta.mTxPackets = Math.max(0, entry.getTxPackets() - lastEntry.getTxPackets()); } else { delta.mRxBytes = entry.getRxBytes(); delta.mRxPackets = entry.getRxPackets(); delta.mTxBytes = entry.getTxBytes(); delta.mTxPackets = entry.getTxPackets(); } deltaList.add(delta); @VisibleForTesting protected NetworkStats networkStatsDelta(@NonNull NetworkStats stats, @Nullable NetworkStats oldStats) { if (oldStats == null) { return stats; } return deltaList; return stats.subtract(oldStats); } /** Loading @@ -12486,12 +12421,12 @@ public class BatteryStatsImpl extends BatteryStats { } } NetworkStats delta; // Grab a separate lock to acquire the network stats, which may do I/O. List<NetworkStatsDelta> delta; synchronized (mWifiNetworkLock) { final NetworkStats latestStats = readWifiNetworkStatsLocked(networkStatsManager); if (latestStats != null) { delta = computeDelta(latestStats, mLastWifiNetworkStats); delta = networkStatsDelta(latestStats, mLastWifiNetworkStats); mLastWifiNetworkStats = latestStats; } else { delta = null; Loading @@ -12501,15 +12436,15 @@ public class BatteryStatsImpl extends BatteryStats { } private void onWifiPowerStatsRetrieved(WifiActivityEnergyInfo wifiActivityEnergyInfo, List<NetworkStatsDelta> networkStatsDeltas, long elapsedRealtimeMs, long uptimeMs) { NetworkStats networkStatsDelta, long elapsedRealtimeMs, long uptimeMs) { // Do not populate consumed energy, because energy attribution is done by // WifiPowerStatsProcessor. updateWifiBatteryStats(wifiActivityEnergyInfo, networkStatsDeltas, POWER_DATA_UNAVAILABLE, updateWifiBatteryStats(wifiActivityEnergyInfo, networkStatsDelta, POWER_DATA_UNAVAILABLE, elapsedRealtimeMs, uptimeMs); } private void updateWifiBatteryStats(WifiActivityEnergyInfo info, List<NetworkStatsDelta> delta, long consumedChargeUC, long elapsedRealtimeMs, NetworkStats delta, long consumedChargeUC, long elapsedRealtimeMs, long uptimeMs) { synchronized (this) { if (!mOnBatteryInternal || mIgnoreNextExternalStats) { Loading @@ -12535,7 +12470,7 @@ public class BatteryStatsImpl extends BatteryStats { long totalTxPackets = 0; long totalRxPackets = 0; if (delta != null) { for (NetworkStatsDelta entry : delta) { for (NetworkStats.Entry entry : delta) { if (DEBUG_ENERGY) { Slog.d(TAG, "Wifi uid " + entry.getUid() + ": delta rx=" + entry.getRxBytes() Loading Loading @@ -12879,11 +12814,11 @@ public class BatteryStatsImpl extends BatteryStats { mLastModemActivityInfo = activityInfo; // Grab a separate lock to acquire the network stats, which may do I/O. List<NetworkStatsDelta> delta = null; NetworkStats delta = null; synchronized (mModemNetworkLock) { final NetworkStats latestStats = readMobileNetworkStatsLocked(networkStatsManager); if (latestStats != null) { delta = computeDelta(latestStats, mLastModemNetworkStats); delta = networkStatsDelta(latestStats, mLastModemNetworkStats); mLastModemNetworkStats = latestStats; } } Loading @@ -12892,15 +12827,15 @@ public class BatteryStatsImpl extends BatteryStats { } private void onMobileRadioPowerStatsRetrieved(ModemActivityInfo modemActivityInfo, List<NetworkStatsDelta> networkStatsDeltas, long elapsedRealtimeMs, long uptimeMs) { NetworkStats networkStatsDelta, long elapsedRealtimeMs, long uptimeMs) { // Do not populate consumed energy, because energy attribution is done by // MobileRadioPowerStatsProcessor. updateCellularBatteryStats(modemActivityInfo, networkStatsDeltas, POWER_DATA_UNAVAILABLE, updateCellularBatteryStats(modemActivityInfo, networkStatsDelta, POWER_DATA_UNAVAILABLE, elapsedRealtimeMs, uptimeMs); } private void updateCellularBatteryStats(@Nullable ModemActivityInfo deltaInfo, @Nullable List<NetworkStatsDelta> delta, long consumedChargeUC, long elapsedRealtimeMs, @Nullable NetworkStats delta, long consumedChargeUC, long elapsedRealtimeMs, long uptimeMs) { // Add modem tx power to history. addModemTxPowerToHistory(deltaInfo, elapsedRealtimeMs, uptimeMs); Loading Loading @@ -13003,7 +12938,7 @@ public class BatteryStatsImpl extends BatteryStats { long totalRxPackets = 0; long totalTxPackets = 0; if (delta != null) { for (NetworkStatsDelta entry : delta) { for (NetworkStats.Entry entry : delta) { if (entry.getRxPackets() == 0 && entry.getTxPackets() == 0) { continue; } Loading Loading @@ -13044,7 +12979,7 @@ public class BatteryStatsImpl extends BatteryStats { // Now distribute proportional blame to the apps that did networking. long totalPackets = totalRxPackets + totalTxPackets; if (totalPackets > 0) { for (NetworkStatsDelta entry : delta) { for (NetworkStats.Entry entry : delta) { if (entry.getRxPackets() == 0 && entry.getTxPackets() == 0) { continue; }
services/core/java/com/android/server/power/stats/MobileRadioPowerStatsCollector.java +7 −8 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ import com.android.internal.os.PowerStats; import com.android.server.power.stats.format.MobileRadioPowerStatsLayout; import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.function.LongSupplier; Loading Loading @@ -71,7 +70,7 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { interface Observer { void onMobileRadioPowerStatsRetrieved( @Nullable ModemActivityInfo modemActivityDelta, @Nullable List<BatteryStatsImpl.NetworkStatsDelta> networkStatsDeltas, @Nullable NetworkStats networkStatsDeltas, long elapsedRealtimeMs, long uptimeMs); } Loading @@ -86,6 +85,8 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { TelephonyManager getTelephonyManager(); LongSupplier getCallDurationSupplier(); LongSupplier getPhoneSignalScanDurationSupplier(); NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats); } private final Injector mInjector; Loading Loading @@ -190,7 +191,7 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { mPowerStats.uidStats.clear(); ModemActivityInfo modemActivityDelta = collectModemActivityInfo(); List<BatteryStatsImpl.NetworkStatsDelta> networkStatsDeltas = collectNetworkStats(); NetworkStats networkStatsDeltas = collectNetworkStats(); mConsumedEnergyHelper.collectConsumedEnergy(mPowerStats, mLayout); Loading Loading @@ -288,17 +289,15 @@ public class MobileRadioPowerStatsCollector extends PowerStatsCollector { return deltaInfo; } private List<BatteryStatsImpl.NetworkStatsDelta> collectNetworkStats() { private NetworkStats collectNetworkStats() { NetworkStats networkStats = mNetworkStatsSupplier.get(); if (networkStats == null) { return null; } List<BatteryStatsImpl.NetworkStatsDelta> delta = BatteryStatsImpl.computeDelta(networkStats, mLastNetworkStats); NetworkStats delta = mInjector.networkStatsDelta(networkStats, mLastNetworkStats); mLastNetworkStats = networkStats; for (int i = delta.size() - 1; i >= 0; i--) { BatteryStatsImpl.NetworkStatsDelta uidDelta = delta.get(i); for (NetworkStats.Entry uidDelta : delta) { long rxBytes = uidDelta.getRxBytes(); long txBytes = uidDelta.getTxBytes(); long rxPackets = uidDelta.getRxPackets(); Loading
services/core/java/com/android/server/power/stats/WifiPowerStatsCollector.java +7 −8 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ import com.android.internal.os.PowerStats; import com.android.server.power.stats.format.WifiPowerStatsLayout; import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; Loading @@ -43,7 +42,7 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { interface Observer { void onWifiPowerStatsRetrieved(WifiActivityEnergyInfo info, List<BatteryStatsImpl.NetworkStatsDelta> delta, long elapsedRealtimeMs, NetworkStats delta, long elapsedRealtimeMs, long uptimeMs); } Loading @@ -66,6 +65,8 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { Supplier<NetworkStats> getWifiNetworkStatsSupplier(); WifiManager getWifiManager(); WifiStatsRetriever getWifiStatsRetriever(); NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats); } private final Injector mInjector; Loading Loading @@ -161,7 +162,7 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { } else { collectWifiActivityStats(); } List<BatteryStatsImpl.NetworkStatsDelta> networkStatsDeltas = collectNetworkStats(); NetworkStats networkStatsDeltas = collectNetworkStats(); collectWifiScanTime(); mConsumedEnergyHelper.collectConsumedEnergy(mPowerStats, mLayout); Loading Loading @@ -227,17 +228,15 @@ public class WifiPowerStatsCollector extends PowerStatsCollector { mPowerStats.durationMs = duration; } private List<BatteryStatsImpl.NetworkStatsDelta> collectNetworkStats() { private NetworkStats collectNetworkStats() { NetworkStats networkStats = mNetworkStatsSupplier.get(); if (networkStats == null) { return null; } List<BatteryStatsImpl.NetworkStatsDelta> delta = BatteryStatsImpl.computeDelta(networkStats, mLastNetworkStats); NetworkStats delta = mInjector.networkStatsDelta(networkStats, mLastNetworkStats); mLastNetworkStats = networkStats; for (int i = delta.size() - 1; i >= 0; i--) { BatteryStatsImpl.NetworkStatsDelta uidDelta = delta.get(i); for (NetworkStats.Entry uidDelta : delta) { long rxBytes = uidDelta.getRxBytes(); long txBytes = uidDelta.getTxBytes(); long rxPackets = uidDelta.getRxPackets(); Loading
services/tests/powerstatstests/src/com/android/server/power/stats/MobileRadioPowerStatsCollectorTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,11 @@ public class MobileRadioPowerStatsCollectorTest { public LongSupplier getPhoneSignalScanDurationSupplier() { return mScanDurationSupplier; } @Override public NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats) { return NetworkStatsTestUtils.networkStatsDelta(stats, oldStats); } }; @Before Loading
services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -283,6 +283,11 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl { protected void updateBatteryPropertiesLocked() { } @Override protected NetworkStats networkStatsDelta(NetworkStats stats, NetworkStats oldStats) { return NetworkStatsTestUtils.networkStatsDelta(stats, oldStats); } public static class DummyExternalStatsSync implements ExternalStatsSync { public int flags = 0; Loading