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

Commit a0bead65 authored by David Su's avatar David Su Committed by Android (Google) Code Review
Browse files

Merge changes from topics "android-os-connectivity-wifiactivityenergyinfo", "requestactivityinfo"

* changes:
  Move WifiActivityEnergyInfo to android.os.connectivity
  BatteryStats: Move WifiActivityEnergyInfo to android.os.connectivity
  Statsd: Move WifiActivityEnergyInfo to android.os.connectivity
  Formalize WifiManager#requestActivityInfo as @SystemApi
  BatteryStats: Formalize WifiManager#requestActivityInfo
  Statsd: Formalize WifiManager#requestActivityInfo
parents 64c529f2 6f0e4168
Loading
Loading
Loading
Loading
+41 −27
Original line number Diff line number Diff line
@@ -64,8 +64,7 @@ import android.net.INetworkStatsService;
import android.net.Network;
import android.net.NetworkRequest;
import android.net.NetworkStats;
import android.net.wifi.IWifiManager;
import android.net.wifi.WifiActivityEnergyInfo;
import android.net.wifi.WifiManager;
import android.os.BatteryStats;
import android.os.BatteryStatsInternal;
import android.os.Binder;
@@ -98,6 +97,7 @@ import android.os.SystemProperties;
import android.os.Temperature;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.connectivity.WifiActivityEnergyInfo;
import android.os.storage.DiskInfo;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
@@ -170,6 +170,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

@@ -342,7 +343,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    private final KernelWakelockReader mKernelWakelockReader = new KernelWakelockReader();
    private final KernelWakelockStats mTmpWakelockStats = new KernelWakelockStats();
    private IWifiManager mWifiManager = null;
    private WifiManager mWifiManager = null;
    private TelephonyManager mTelephony = null;
    @GuardedBy("sStatsdLock")
    private final HashSet<Long> mDeathTimeMillis = new HashSet<>();
@@ -1148,21 +1149,39 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
    private void pullWifiActivityInfo(
            int tagId, long elapsedNanos, long wallClockNanos,
            List<StatsLogEventWrapper> pulledData) {
        long token = Binder.clearCallingIdentity();
        WifiManager wifiManager;
        synchronized (this) {
            if (mWifiManager == null) {
                mWifiManager =
                        IWifiManager.Stub.asInterface(
                                ServiceManager.getService(Context.WIFI_SERVICE));
                mWifiManager = mContext.getSystemService(WifiManager.class);
            }
            wifiManager = mWifiManager;
        }
        if (wifiManager == null) {
            return;
        }
        if (mWifiManager != null) {
        long token = Binder.clearCallingIdentity();
        try {
            SynchronousResultReceiver wifiReceiver = new SynchronousResultReceiver("wifi");
                mWifiManager.requestActivityInfo(wifiReceiver);
            wifiManager.getWifiActivityEnergyInfoAsync(
                    new Executor() {
                        @Override
                        public void execute(Runnable runnable) {
                            // run the listener on the binder thread, if it was run on the main
                            // thread it would deadlock since we would be waiting on ourselves
                            runnable.run();
                        }
                    },
                    info -> {
                        Bundle bundle = new Bundle();
                        bundle.putParcelable(BatteryStats.RESULT_RECEIVER_CONTROLLER_KEY, info);
                        wifiReceiver.send(0, bundle);
                    }
            );
            final WifiActivityEnergyInfo wifiInfo = awaitControllerInfo(wifiReceiver);
                StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos,
                        wallClockNanos);
            if (wifiInfo == null) {
                return;
            }
            StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos);
            e.writeLong(wifiInfo.getTimeSinceBootMillis());
            e.writeInt(wifiInfo.getStackState());
            e.writeLong(wifiInfo.getControllerTxDurationMillis());
@@ -1170,15 +1189,10 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
            e.writeLong(wifiInfo.getControllerIdleDurationMillis());
            e.writeLong(wifiInfo.getControllerEnergyUsedMicroJoules());
            pulledData.add(e);
            } catch (RemoteException e) {
                Slog.e(TAG,
                        "Pulling wifiManager for wifi controller activity energy info has error",
                        e);
        } finally {
            Binder.restoreCallingIdentity(token);
        }
    }
    }

    private void pullModemActivityInfo(
            int tagId, long elapsedNanos, long wallClockNanos,
+31 −26
Original line number Diff line number Diff line
@@ -5341,32 +5341,6 @@ package android.net.wifi {
    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.SoftApInfo> CREATOR;
  }
  public final class WifiActivityEnergyInfo implements android.os.Parcelable {
    ctor public WifiActivityEnergyInfo(long, int, long, long, long, long, long);
    method public int describeContents();
    method public long getControllerEnergyUsedMicroJoules();
    method public long getControllerIdleDurationMillis();
    method public long getControllerRxDurationMillis();
    method public long getControllerScanDurationMillis();
    method public long getControllerTxDurationMillis();
    method public int getStackState();
    method public long getTimeSinceBootMillis();
    method public boolean isValid();
    method public void setControllerEnergyUsedMicroJoules(long);
    method public void setControllerIdleDurationMillis(long);
    method public void setControllerRxDurationMillis(long);
    method public void setControllerScanDurationMillis(long);
    method public void setControllerTxDurationMillis(long);
    method public void setStackState(int);
    method public void setTimeSinceBootMillis(long);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiActivityEnergyInfo> CREATOR;
    field public static final int STACK_STATE_INVALID = 0; // 0x0
    field public static final int STACK_STATE_STATE_ACTIVE = 1; // 0x1
    field public static final int STACK_STATE_STATE_IDLE = 3; // 0x3
    field public static final int STACK_STATE_STATE_SCANNING = 2; // 0x2
  }
  public final class WifiClient implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.net.MacAddress getMacAddress();
@@ -5503,6 +5477,7 @@ package android.net.wifi {
    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public java.util.List<android.net.wifi.WifiConfiguration> getPrivilegedConfiguredNetworks();
    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.SoftApConfiguration getSoftApConfiguration();
    method public int getVerboseLoggingLevel();
    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void getWifiActivityEnergyInfoAsync(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiActivityEnergyInfoListener);
    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration();
    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState();
    method public boolean isApMacRandomizationSupported();
@@ -5606,6 +5581,10 @@ package android.net.wifi {
    method public default void select(@NonNull android.net.wifi.WifiConfiguration);
  }
  public static interface WifiManager.OnWifiActivityEnergyInfoListener {
    method public void onWifiActivityEnergyInfo(@Nullable android.os.connectivity.WifiActivityEnergyInfo);
  }
  public static interface WifiManager.OnWifiUsabilityStatsListener {
    method public void onWifiUsabilityStats(int, boolean, @NonNull android.net.wifi.WifiUsabilityStatsEntry);
  }
@@ -6608,6 +6587,32 @@ package android.os.connectivity {
    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.CellularBatteryStats> CREATOR;
  }
  public final class WifiActivityEnergyInfo implements android.os.Parcelable {
    ctor public WifiActivityEnergyInfo(long, int, long, long, long, long, long);
    method public int describeContents();
    method public long getControllerEnergyUsedMicroJoules();
    method public long getControllerIdleDurationMillis();
    method public long getControllerRxDurationMillis();
    method public long getControllerScanDurationMillis();
    method public long getControllerTxDurationMillis();
    method public int getStackState();
    method public long getTimeSinceBootMillis();
    method public boolean isValid();
    method public void setControllerEnergyUsedMicroJoules(long);
    method public void setControllerIdleDurationMillis(long);
    method public void setControllerRxDurationMillis(long);
    method public void setControllerScanDurationMillis(long);
    method public void setControllerTxDurationMillis(long);
    method public void setStackState(int);
    method public void setTimeSinceBootMillis(long);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiActivityEnergyInfo> CREATOR;
    field public static final int STACK_STATE_INVALID = 0; // 0x0
    field public static final int STACK_STATE_STATE_ACTIVE = 1; // 0x1
    field public static final int STACK_STATE_STATE_IDLE = 3; // 0x3
    field public static final int STACK_STATE_STATE_SCANNING = 2; // 0x2
  }
  public final class WifiBatteryStats implements android.os.Parcelable {
    method public int describeContents();
    method public long getEnergyConsumedMaMillis();
+1 −1
Original line number Diff line number Diff line
@@ -14,6 +14,6 @@
 * limitations under the License.
 */

package android.net.wifi;
package android.os.connectivity;

parcelable WifiActivityEnergyInfo;
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

package android.net.wifi;
package android.os.connectivity;

import android.annotation.IntDef;
import android.annotation.NonNull;
+1 −1
Original line number Diff line number Diff line
@@ -19,10 +19,10 @@ package com.android.internal.app;
import com.android.internal.os.BatteryStatsImpl;

import android.bluetooth.BluetoothActivityEnergyInfo;
import android.net.wifi.WifiActivityEnergyInfo;
import android.os.ParcelFileDescriptor;
import android.os.WorkSource;
import android.os.connectivity.CellularBatteryStats;
import android.os.connectivity.WifiActivityEnergyInfo;
import android.os.connectivity.WifiBatteryStats;
import android.os.connectivity.GpsBatteryStats;
import android.os.health.HealthStatsParceler;
Loading