diff --git a/Android.bp b/Android.bp index 4e7aa5f82d917..e8f35611e74bf 100644 --- a/Android.bp +++ b/Android.bp @@ -636,7 +636,7 @@ java_defaults { "wifi/java/android/net/wifi/ISoftApCallback.aidl", "wifi/java/android/net/wifi/ITrafficStateCallback.aidl", "wifi/java/android/net/wifi/IWifiManager.aidl", - "wifi/java/android/net/wifi/IWifiUsabilityStatsListener.aidl", + "wifi/java/android/net/wifi/IOnWifiUsabilityStatsListener.aidl", "wifi/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl", "wifi/java/android/net/wifi/aware/IWifiAwareEventCallback.aidl", "wifi/java/android/net/wifi/aware/IWifiAwareMacAddressProvider.aidl", diff --git a/api/system-current.txt b/api/system-current.txt index 96c9c7526fd28..681147a536c2e 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4739,7 +4739,7 @@ package android.net.wifi { } public class WifiManager { - method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void addWifiUsabilityStatsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.WifiUsabilityStatsListener); + method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void addOnWifiUsabilityStatsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener); method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener); method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(int, @Nullable android.net.wifi.WifiManager.ActionListener); method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void disable(int, @Nullable android.net.wifi.WifiManager.ActionListener); @@ -4754,7 +4754,7 @@ package android.net.wifi { method public boolean isPortableHotspotSupported(); method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isWifiApEnabled(); method public boolean isWifiScannerSupported(); - method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void removeWifiUsabilityStatsListener(@NonNull android.net.wifi.WifiManager.WifiUsabilityStatsListener); + method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void removeOnWifiUsabilityStatsListener(@NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener); method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void save(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener); method @RequiresPermission("android.permission.WIFI_SET_DEVICE_MOBILITY_STATE") public void setDeviceMobilityState(int); method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration); @@ -4799,8 +4799,8 @@ package android.net.wifi { method public void onSuccess(); } - public static interface WifiManager.WifiUsabilityStatsListener { - method public void onStatsUpdated(int, boolean, android.net.wifi.WifiUsabilityStatsEntry); + public static interface WifiManager.OnWifiUsabilityStatsListener { + method public void onWifiUsabilityStats(int, boolean, @NonNull android.net.wifi.WifiUsabilityStatsEntry); } public class WifiNetworkConnectionStatistics implements android.os.Parcelable { @@ -4935,35 +4935,35 @@ package android.net.wifi { public final class WifiUsabilityStatsEntry implements android.os.Parcelable { method public int describeContents(); + method public int getLinkSpeedMbps(); + method public int getProbeElapsedTimeSinceLastUpdateMillis(); + method public int getProbeMcsRateSinceLastUpdate(); + method public int getProbeStatusSinceLastUpdate(); + method public int getRssi(); + method public int getRxLinkSpeedMbps(); + method public long getTimeStampMillis(); + method public long getTotalBackgroundScanTimeMillis(); + method public long getTotalBeaconRx(); + method public long getTotalCcaBusyFreqTimeMillis(); + method public long getTotalHotspot2ScanTimeMillis(); + method public long getTotalNanScanTimeMillis(); + method public long getTotalPnoScanTimeMillis(); + method public long getTotalRadioOnFreqTimeMillis(); + method public long getTotalRadioOnTimeMillis(); + method public long getTotalRadioRxTimeMillis(); + method public long getTotalRadioTxTimeMillis(); + method public long getTotalRoamScanTimeMillis(); + method public long getTotalRxSuccess(); + method public long getTotalScanTimeMillis(); + method public long getTotalTxBad(); + method public long getTotalTxRetries(); + method public long getTotalTxSuccess(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; field public static final int PROBE_STATUS_FAILURE = 3; // 0x3 field public static final int PROBE_STATUS_NO_PROBE = 1; // 0x1 field public static final int PROBE_STATUS_SUCCESS = 2; // 0x2 field public static final int PROBE_STATUS_UNKNOWN = 0; // 0x0 - field public final int linkSpeedMbps; - field public final int probeElapsedTimeMsSinceLastUpdate; - field public final int probeMcsRateSinceLastUpdate; - field public final int probeStatusSinceLastUpdate; - field public final int rssi; - field public final int rxLinkSpeedMbps; - field public final long timeStampMs; - field public final long totalBackgroundScanTimeMs; - field public final long totalBeaconRx; - field public final long totalCcaBusyFreqTimeMs; - field public final long totalHotspot2ScanTimeMs; - field public final long totalNanScanTimeMs; - field public final long totalPnoScanTimeMs; - field public final long totalRadioOnFreqTimeMs; - field public final long totalRadioOnTimeMs; - field public final long totalRadioRxTimeMs; - field public final long totalRadioTxTimeMs; - field public final long totalRoamScanTimeMs; - field public final long totalRxSuccess; - field public final long totalScanTimeMs; - field public final long totalTxBad; - field public final long totalTxRetries; - field public final long totalTxSuccess; } } diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto index 9f049cff66e50..f3953af70135c 100644 --- a/proto/src/wifi.proto +++ b/proto/src/wifi.proto @@ -1957,7 +1957,7 @@ message WifiUsabilityStatsEntry { optional LinkProbeStatus probe_status_since_last_update = 24; // The elapsed time of the most recent link probe since last stats update; - optional int32 probe_elapsed_time_ms_since_last_update = 25; + optional int32 probe_elapsed_time_since_last_update_ms = 25; // The MCS rate of the most recent link probe since last stats update optional int32 probe_mcs_rate_since_last_update = 26; diff --git a/wifi/java/android/net/wifi/IWifiUsabilityStatsListener.aidl b/wifi/java/android/net/wifi/IOnWifiUsabilityStatsListener.aidl similarity index 92% rename from wifi/java/android/net/wifi/IWifiUsabilityStatsListener.aidl rename to wifi/java/android/net/wifi/IOnWifiUsabilityStatsListener.aidl index 284ffaa182572..4687f3088eefb 100644 --- a/wifi/java/android/net/wifi/IWifiUsabilityStatsListener.aidl +++ b/wifi/java/android/net/wifi/IOnWifiUsabilityStatsListener.aidl @@ -23,7 +23,7 @@ import android.net.wifi.WifiUsabilityStatsEntry; * * @hide */ -oneway interface IWifiUsabilityStatsListener +oneway interface IOnWifiUsabilityStatsListener { /** * Service to manager callback providing current Wi-Fi usability stats. @@ -36,6 +36,6 @@ oneway interface IWifiUsabilityStatsListener * Wi-Fi usability stats. * @param stats The updated Wi-Fi usability statistics. */ - void onStatsUpdated(int seqNum, boolean isSameBssidAndFreq, + void onWifiUsabilityStats(int seqNum, boolean isSameBssidAndFreq, in WifiUsabilityStatsEntry stats); } diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index 17948e7e1bc05..62ea9af49f51b 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -28,7 +28,7 @@ import android.net.wifi.IDppCallback; import android.net.wifi.INetworkRequestMatchCallback; import android.net.wifi.ISoftApCallback; import android.net.wifi.ITrafficStateCallback; -import android.net.wifi.IWifiUsabilityStatsListener; +import android.net.wifi.IOnWifiUsabilityStatsListener; import android.net.wifi.PasspointManagementObjectDefinition; import android.net.wifi.ScanResult; import android.net.wifi.WifiActivityEnergyInfo; @@ -190,9 +190,9 @@ interface IWifiManager void unregisterSoftApCallback(int callbackIdentifier); - void addWifiUsabilityStatsListener(in IBinder binder, in IWifiUsabilityStatsListener listener, int listenerIdentifier); + void addOnWifiUsabilityStatsListener(in IBinder binder, in IOnWifiUsabilityStatsListener listener, int listenerIdentifier); - void removeWifiUsabilityStatsListener(int listenerIdentifier); + void removeOnWifiUsabilityStatsListener(int listenerIdentifier); void registerTrafficStateCallback(in IBinder binder, in ITrafficStateCallback callback, int callbackIdentifier); diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 4fd00f7e20924..c6226fc99bf54 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -4785,13 +4785,13 @@ public class WifiManager { /** * Interface for Wi-Fi usability statistics listener. Should be implemented by applications and - * set when calling {@link WifiManager#addWifiUsabilityStatsListener(Executor, - * WifiUsabilityStatsListener)}. + * set when calling {@link WifiManager#addOnWifiUsabilityStatsListener(Executor, + * OnWifiUsabilityStatsListener)}. * * @hide */ @SystemApi - public interface WifiUsabilityStatsListener { + public interface OnWifiUsabilityStatsListener { /** * Called when Wi-Fi usability statistics is updated. * @@ -4803,15 +4803,15 @@ public class WifiManager { * Wi-Fi usability stats. * @param stats The updated Wi-Fi usability statistics. */ - void onStatsUpdated(int seqNum, boolean isSameBssidAndFreq, - WifiUsabilityStatsEntry stats); + void onWifiUsabilityStats(int seqNum, boolean isSameBssidAndFreq, + @NonNull WifiUsabilityStatsEntry stats); } /** - * Adds a listener for Wi-Fi usability statistics. See {@link WifiUsabilityStatsListener}. + * Adds a listener for Wi-Fi usability statistics. See {@link OnWifiUsabilityStatsListener}. * Multiple listeners can be added. Callers will be invoked periodically by framework to * inform clients about the current Wi-Fi usability statistics. Callers can remove a previously - * added listener using {@link removeWifiUsabilityStatsListener}. + * added listener using {@link removeOnWifiUsabilityStatsListener}. * * @param executor The executor on which callback will be invoked. * @param listener Listener for Wifi usability statistics. @@ -4820,25 +4820,25 @@ public class WifiManager { */ @SystemApi @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) - public void addWifiUsabilityStatsListener(@NonNull @CallbackExecutor Executor executor, - @NonNull WifiUsabilityStatsListener listener) { + public void addOnWifiUsabilityStatsListener(@NonNull @CallbackExecutor Executor executor, + @NonNull OnWifiUsabilityStatsListener listener) { if (executor == null) throw new IllegalArgumentException("executor cannot be null"); if (listener == null) throw new IllegalArgumentException("listener cannot be null"); if (mVerboseLoggingEnabled) { - Log.v(TAG, "addWifiUsabilityStatsListener: listener=" + listener); + Log.v(TAG, "addOnWifiUsabilityStatsListener: listener=" + listener); } try { - mService.addWifiUsabilityStatsListener(new Binder(), - new IWifiUsabilityStatsListener.Stub() { + mService.addOnWifiUsabilityStatsListener(new Binder(), + new IOnWifiUsabilityStatsListener.Stub() { @Override - public void onStatsUpdated(int seqNum, boolean isSameBssidAndFreq, + public void onWifiUsabilityStats(int seqNum, boolean isSameBssidAndFreq, WifiUsabilityStatsEntry stats) { if (mVerboseLoggingEnabled) { - Log.v(TAG, "WifiUsabilityStatsListener: onStatsUpdated: seqNum=" - + seqNum); + Log.v(TAG, "OnWifiUsabilityStatsListener: " + + "onWifiUsabilityStats: seqNum=" + seqNum); } Binder.withCleanCallingIdentity(() -> - executor.execute(() -> listener.onStatsUpdated(seqNum, + executor.execute(() -> listener.onWifiUsabilityStats(seqNum, isSameBssidAndFreq, stats))); } }, @@ -4859,13 +4859,13 @@ public class WifiManager { */ @SystemApi @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) - public void removeWifiUsabilityStatsListener(@NonNull WifiUsabilityStatsListener listener) { + public void removeOnWifiUsabilityStatsListener(@NonNull OnWifiUsabilityStatsListener listener) { if (listener == null) throw new IllegalArgumentException("listener cannot be null"); if (mVerboseLoggingEnabled) { - Log.v(TAG, "removeWifiUsabilityStatsListener: listener=" + listener); + Log.v(TAG, "removeOnWifiUsabilityStatsListener: listener=" + listener); } try { - mService.removeWifiUsabilityStatsListener(listener.hashCode()); + mService.removeOnWifiUsabilityStatsListener(listener.hashCode()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -4879,7 +4879,8 @@ public class WifiManager { * * @param seqNum Sequence number of the Wi-Fi usability score. * @param score The Wi-Fi usability score. - * @param predictionHorizonSec Prediction horizon of the Wi-Fi usability score. + * @param predictionHorizonSec Prediction horizon of the Wi-Fi usability score in second, + * expected range: [0, 100]. * * @hide */ diff --git a/wifi/java/android/net/wifi/WifiUsabilityStatsEntry.java b/wifi/java/android/net/wifi/WifiUsabilityStatsEntry.java index 2dee97120f11d..51aa93a1c4c76 100644 --- a/wifi/java/android/net/wifi/WifiUsabilityStatsEntry.java +++ b/wifi/java/android/net/wifi/WifiUsabilityStatsEntry.java @@ -51,87 +51,88 @@ public final class WifiUsabilityStatsEntry implements Parcelable { public static final int PROBE_STATUS_FAILURE = 3; /** Absolute milliseconds from device boot when these stats were sampled */ - public final long timeStampMs; + private final long mTimeStampMillis; /** The RSSI (in dBm) at the sample time */ - public final int rssi; + private final int mRssi; /** Link speed at the sample time in Mbps */ - public final int linkSpeedMbps; + private final int mLinkSpeedMbps; /** The total number of tx success counted from the last radio chip reset */ - public final long totalTxSuccess; + private final long mTotalTxSuccess; /** The total number of MPDU data packet retries counted from the last radio chip reset */ - public final long totalTxRetries; + private final long mTotalTxRetries; /** The total number of tx bad counted from the last radio chip reset */ - public final long totalTxBad; + private final long mTotalTxBad; /** The total number of rx success counted from the last radio chip reset */ - public final long totalRxSuccess; + private final long mTotalRxSuccess; /** The total time the wifi radio is on in ms counted from the last radio chip reset */ - public final long totalRadioOnTimeMs; + private final long mTotalRadioOnTimeMillis; /** The total time the wifi radio is doing tx in ms counted from the last radio chip reset */ - public final long totalRadioTxTimeMs; + private final long mTotalRadioTxTimeMillis; /** The total time the wifi radio is doing rx in ms counted from the last radio chip reset */ - public final long totalRadioRxTimeMs; + private final long mTotalRadioRxTimeMillis; /** The total time spent on all types of scans in ms counted from the last radio chip reset */ - public final long totalScanTimeMs; + private final long mTotalScanTimeMillis; /** The total time spent on nan scans in ms counted from the last radio chip reset */ - public final long totalNanScanTimeMs; + private final long mTotalNanScanTimeMillis; /** The total time spent on background scans in ms counted from the last radio chip reset */ - public final long totalBackgroundScanTimeMs; + private final long mTotalBackgroundScanTimeMillis; /** The total time spent on roam scans in ms counted from the last radio chip reset */ - public final long totalRoamScanTimeMs; + private final long mTotalRoamScanTimeMillis; /** The total time spent on pno scans in ms counted from the last radio chip reset */ - public final long totalPnoScanTimeMs; + private final long mTotalPnoScanTimeMillis; /** The total time spent on hotspot2.0 scans and GAS exchange in ms counted from the last radio * chip reset */ - public final long totalHotspot2ScanTimeMs; + private final long mTotalHotspot2ScanTimeMillis; /** The total time CCA is on busy status on the current frequency in ms counted from the last * radio chip reset */ - public final long totalCcaBusyFreqTimeMs; - /** The total radio on time of the current frequency from the last radio chip reset */ - public final long totalRadioOnFreqTimeMs; + private final long mTotalCcaBusyFreqTimeMillis; + /** The total radio on time on the current frequency from the last radio chip reset */ + private final long mTotalRadioOnFreqTimeMillis; /** The total number of beacons received from the last radio chip reset */ - public final long totalBeaconRx; + private final long mTotalBeaconRx; /** The status of link probe since last stats update */ - public final int probeStatusSinceLastUpdate; + @ProbeStatus private final int mProbeStatusSinceLastUpdate; /** The elapsed time of the most recent link probe since last stats update */ - public final int probeElapsedTimeMsSinceLastUpdate; + private final int mProbeElapsedTimeSinceLastUpdateMillis; /** The MCS rate of the most recent link probe since last stats update */ - public final int probeMcsRateSinceLastUpdate; + private final int mProbeMcsRateSinceLastUpdate; /** Rx link speed at the sample time in Mbps */ - public final int rxLinkSpeedMbps; + private final int mRxLinkSpeedMbps; /** Constructor function {@hide} */ - public WifiUsabilityStatsEntry(long timeStampMs, int rssi, - int linkSpeedMbps, long totalTxSuccess, long totalTxRetries, - long totalTxBad, long totalRxSuccess, long totalRadioOnTimeMs, - long totalRadioTxTimeMs, long totalRadioRxTimeMs, long totalScanTimeMs, - long totalNanScanTimeMs, long totalBackgroundScanTimeMs, long totalRoamScanTimeMs, - long totalPnoScanTimeMs, long totalHotspot2ScanTimeMs, long totalCcaBusyFreqTimeMs, - long totalRadioOnFreqTimeMs, long totalBeaconRx, - @ProbeStatus int probeStatusSinceLastUpdate, int probeElapsedTimeMsSinceLastUpdate, + public WifiUsabilityStatsEntry(long timeStampMillis, int rssi, int linkSpeedMbps, + long totalTxSuccess, long totalTxRetries, long totalTxBad, long totalRxSuccess, + long totalRadioOnTimeMillis, long totalRadioTxTimeMillis, long totalRadioRxTimeMillis, + long totalScanTimeMillis, long totalNanScanTimeMillis, + long totalBackgroundScanTimeMillis, + long totalRoamScanTimeMillis, long totalPnoScanTimeMillis, + long totalHotspot2ScanTimeMillis, + long totalCcaBusyFreqTimeMillis, long totalRadioOnFreqTimeMillis, long totalBeaconRx, + @ProbeStatus int probeStatusSinceLastUpdate, int probeElapsedTimeSinceLastUpdateMillis, int probeMcsRateSinceLastUpdate, int rxLinkSpeedMbps) { - this.timeStampMs = timeStampMs; - this.rssi = rssi; - this.linkSpeedMbps = linkSpeedMbps; - this.totalTxSuccess = totalTxSuccess; - this.totalTxRetries = totalTxRetries; - this.totalTxBad = totalTxBad; - this.totalRxSuccess = totalRxSuccess; - this.totalRadioOnTimeMs = totalRadioOnTimeMs; - this.totalRadioTxTimeMs = totalRadioTxTimeMs; - this.totalRadioRxTimeMs = totalRadioRxTimeMs; - this.totalScanTimeMs = totalScanTimeMs; - this.totalNanScanTimeMs = totalNanScanTimeMs; - this.totalBackgroundScanTimeMs = totalBackgroundScanTimeMs; - this.totalRoamScanTimeMs = totalRoamScanTimeMs; - this.totalPnoScanTimeMs = totalPnoScanTimeMs; - this.totalHotspot2ScanTimeMs = totalHotspot2ScanTimeMs; - this.totalCcaBusyFreqTimeMs = totalCcaBusyFreqTimeMs; - this.totalRadioOnFreqTimeMs = totalRadioOnFreqTimeMs; - this.totalBeaconRx = totalBeaconRx; - this.probeStatusSinceLastUpdate = probeStatusSinceLastUpdate; - this.probeElapsedTimeMsSinceLastUpdate = probeElapsedTimeMsSinceLastUpdate; - this.probeMcsRateSinceLastUpdate = probeMcsRateSinceLastUpdate; - this.rxLinkSpeedMbps = rxLinkSpeedMbps; + mTimeStampMillis = timeStampMillis; + mRssi = rssi; + mLinkSpeedMbps = linkSpeedMbps; + mTotalTxSuccess = totalTxSuccess; + mTotalTxRetries = totalTxRetries; + mTotalTxBad = totalTxBad; + mTotalRxSuccess = totalRxSuccess; + mTotalRadioOnTimeMillis = totalRadioOnTimeMillis; + mTotalRadioTxTimeMillis = totalRadioTxTimeMillis; + mTotalRadioRxTimeMillis = totalRadioRxTimeMillis; + mTotalScanTimeMillis = totalScanTimeMillis; + mTotalNanScanTimeMillis = totalNanScanTimeMillis; + mTotalBackgroundScanTimeMillis = totalBackgroundScanTimeMillis; + mTotalRoamScanTimeMillis = totalRoamScanTimeMillis; + mTotalPnoScanTimeMillis = totalPnoScanTimeMillis; + mTotalHotspot2ScanTimeMillis = totalHotspot2ScanTimeMillis; + mTotalCcaBusyFreqTimeMillis = totalCcaBusyFreqTimeMillis; + mTotalRadioOnFreqTimeMillis = totalRadioOnFreqTimeMillis; + mTotalBeaconRx = totalBeaconRx; + mProbeStatusSinceLastUpdate = probeStatusSinceLastUpdate; + mProbeElapsedTimeSinceLastUpdateMillis = probeElapsedTimeSinceLastUpdateMillis; + mProbeMcsRateSinceLastUpdate = probeMcsRateSinceLastUpdate; + mRxLinkSpeedMbps = rxLinkSpeedMbps; } /** Implement the Parcelable interface */ @@ -141,29 +142,29 @@ public final class WifiUsabilityStatsEntry implements Parcelable { /** Implement the Parcelable interface */ public void writeToParcel(Parcel dest, int flags) { - dest.writeLong(timeStampMs); - dest.writeInt(rssi); - dest.writeInt(linkSpeedMbps); - dest.writeLong(totalTxSuccess); - dest.writeLong(totalTxRetries); - dest.writeLong(totalTxBad); - dest.writeLong(totalRxSuccess); - dest.writeLong(totalRadioOnTimeMs); - dest.writeLong(totalRadioTxTimeMs); - dest.writeLong(totalRadioRxTimeMs); - dest.writeLong(totalScanTimeMs); - dest.writeLong(totalNanScanTimeMs); - dest.writeLong(totalBackgroundScanTimeMs); - dest.writeLong(totalRoamScanTimeMs); - dest.writeLong(totalPnoScanTimeMs); - dest.writeLong(totalHotspot2ScanTimeMs); - dest.writeLong(totalCcaBusyFreqTimeMs); - dest.writeLong(totalRadioOnFreqTimeMs); - dest.writeLong(totalBeaconRx); - dest.writeInt(probeStatusSinceLastUpdate); - dest.writeInt(probeElapsedTimeMsSinceLastUpdate); - dest.writeInt(probeMcsRateSinceLastUpdate); - dest.writeInt(rxLinkSpeedMbps); + dest.writeLong(mTimeStampMillis); + dest.writeInt(mRssi); + dest.writeInt(mLinkSpeedMbps); + dest.writeLong(mTotalTxSuccess); + dest.writeLong(mTotalTxRetries); + dest.writeLong(mTotalTxBad); + dest.writeLong(mTotalRxSuccess); + dest.writeLong(mTotalRadioOnTimeMillis); + dest.writeLong(mTotalRadioTxTimeMillis); + dest.writeLong(mTotalRadioRxTimeMillis); + dest.writeLong(mTotalScanTimeMillis); + dest.writeLong(mTotalNanScanTimeMillis); + dest.writeLong(mTotalBackgroundScanTimeMillis); + dest.writeLong(mTotalRoamScanTimeMillis); + dest.writeLong(mTotalPnoScanTimeMillis); + dest.writeLong(mTotalHotspot2ScanTimeMillis); + dest.writeLong(mTotalCcaBusyFreqTimeMillis); + dest.writeLong(mTotalRadioOnFreqTimeMillis); + dest.writeLong(mTotalBeaconRx); + dest.writeInt(mProbeStatusSinceLastUpdate); + dest.writeInt(mProbeElapsedTimeSinceLastUpdateMillis); + dest.writeInt(mProbeMcsRateSinceLastUpdate); + dest.writeInt(mRxLinkSpeedMbps); } /** Implement the Parcelable interface */ @@ -186,4 +187,121 @@ public final class WifiUsabilityStatsEntry implements Parcelable { return new WifiUsabilityStatsEntry[size]; } }; + + /** Absolute milliseconds from device boot when these stats were sampled */ + public long getTimeStampMillis() { + return mTimeStampMillis; + } + + /** The RSSI (in dBm) at the sample time */ + public int getRssi() { + return mRssi; + } + + /** Link speed at the sample time in Mbps */ + public int getLinkSpeedMbps() { + return mLinkSpeedMbps; + } + + /** The total number of tx success counted from the last radio chip reset */ + public long getTotalTxSuccess() { + return mTotalTxSuccess; + } + + /** The total number of MPDU data packet retries counted from the last radio chip reset */ + public long getTotalTxRetries() { + return mTotalTxRetries; + } + + /** The total number of tx bad counted from the last radio chip reset */ + public long getTotalTxBad() { + return mTotalTxBad; + } + + /** The total number of rx success counted from the last radio chip reset */ + public long getTotalRxSuccess() { + return mTotalRxSuccess; + } + + /** The total time the wifi radio is on in ms counted from the last radio chip reset */ + public long getTotalRadioOnTimeMillis() { + return mTotalRadioOnTimeMillis; + } + + /** The total time the wifi radio is doing tx in ms counted from the last radio chip reset */ + public long getTotalRadioTxTimeMillis() { + return mTotalRadioTxTimeMillis; + } + + /** The total time the wifi radio is doing rx in ms counted from the last radio chip reset */ + public long getTotalRadioRxTimeMillis() { + return mTotalRadioRxTimeMillis; + } + + /** The total time spent on all types of scans in ms counted from the last radio chip reset */ + public long getTotalScanTimeMillis() { + return mTotalScanTimeMillis; + } + + /** The total time spent on nan scans in ms counted from the last radio chip reset */ + public long getTotalNanScanTimeMillis() { + return mTotalNanScanTimeMillis; + } + + /** The total time spent on background scans in ms counted from the last radio chip reset */ + public long getTotalBackgroundScanTimeMillis() { + return mTotalBackgroundScanTimeMillis; + } + + /** The total time spent on roam scans in ms counted from the last radio chip reset */ + public long getTotalRoamScanTimeMillis() { + return mTotalRoamScanTimeMillis; + } + + /** The total time spent on pno scans in ms counted from the last radio chip reset */ + public long getTotalPnoScanTimeMillis() { + return mTotalPnoScanTimeMillis; + } + + /** The total time spent on hotspot2.0 scans and GAS exchange in ms counted from the last radio + * chip reset */ + public long getTotalHotspot2ScanTimeMillis() { + return mTotalHotspot2ScanTimeMillis; + } + + /** The total time CCA is on busy status on the current frequency in ms counted from the last + * radio chip reset */ + public long getTotalCcaBusyFreqTimeMillis() { + return mTotalCcaBusyFreqTimeMillis; + } + + /** The total radio on time on the current frequency from the last radio chip reset */ + public long getTotalRadioOnFreqTimeMillis() { + return mTotalRadioOnFreqTimeMillis; + } + + /** The total number of beacons received from the last radio chip reset */ + public long getTotalBeaconRx() { + return mTotalBeaconRx; + } + + /** The status of link probe since last stats update */ + @ProbeStatus public int getProbeStatusSinceLastUpdate() { + return mProbeStatusSinceLastUpdate; + } + + /** The elapsed time of the most recent link probe since last stats update */ + public int getProbeElapsedTimeSinceLastUpdateMillis() { + return mProbeElapsedTimeSinceLastUpdateMillis; + } + + /** The MCS rate of the most recent link probe since last stats update */ + public int getProbeMcsRateSinceLastUpdate() { + return mProbeMcsRateSinceLastUpdate; + } + + /** Rx link speed at the sample time in Mbps */ + public int getRxLinkSpeedMbps() { + return mRxLinkSpeedMbps; + } } diff --git a/wifi/java/com/android/server/wifi/BaseWifiService.java b/wifi/java/com/android/server/wifi/BaseWifiService.java index c236c7a054882..842d78ddcda22 100644 --- a/wifi/java/com/android/server/wifi/BaseWifiService.java +++ b/wifi/java/com/android/server/wifi/BaseWifiService.java @@ -23,10 +23,10 @@ import android.net.DhcpInfo; import android.net.Network; import android.net.wifi.IDppCallback; import android.net.wifi.INetworkRequestMatchCallback; +import android.net.wifi.IOnWifiUsabilityStatsListener; import android.net.wifi.ISoftApCallback; import android.net.wifi.ITrafficStateCallback; import android.net.wifi.IWifiManager; -import android.net.wifi.IWifiUsabilityStatsListener; import android.net.wifi.ScanResult; import android.net.wifi.WifiActivityEnergyInfo; import android.net.wifi.WifiConfiguration; @@ -467,13 +467,13 @@ public class BaseWifiService extends IWifiManager.Stub { } @Override - public void addWifiUsabilityStatsListener( - IBinder binder, IWifiUsabilityStatsListener listener, int listenerIdentifier) { + public void addOnWifiUsabilityStatsListener( + IBinder binder, IOnWifiUsabilityStatsListener listener, int listenerIdentifier) { throw new UnsupportedOperationException(); } @Override - public void removeWifiUsabilityStatsListener(int listenerIdentifier) { + public void removeOnWifiUsabilityStatsListener(int listenerIdentifier) { throw new UnsupportedOperationException(); } diff --git a/wifi/tests/src/android/net/wifi/WifiManagerTest.java b/wifi/tests/src/android/net/wifi/WifiManagerTest.java index 5c2f626a24cc5..600abc927b7f8 100644 --- a/wifi/tests/src/android/net/wifi/WifiManagerTest.java +++ b/wifi/tests/src/android/net/wifi/WifiManagerTest.java @@ -59,9 +59,9 @@ import android.net.wifi.WifiManager.LocalOnlyHotspotReservation; import android.net.wifi.WifiManager.LocalOnlyHotspotSubscription; import android.net.wifi.WifiManager.NetworkRequestMatchCallback; import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback; +import android.net.wifi.WifiManager.OnWifiUsabilityStatsListener; import android.net.wifi.WifiManager.SoftApCallback; import android.net.wifi.WifiManager.TrafficStateCallback; -import android.net.wifi.WifiManager.WifiUsabilityStatsListener; import android.os.Handler; import android.os.IBinder; import android.os.Message; @@ -105,7 +105,7 @@ public class WifiManagerTest { @Mock SoftApCallback mSoftApCallback; @Mock TrafficStateCallback mTrafficStateCallback; @Mock NetworkRequestMatchCallback mNetworkRequestMatchCallback; - @Mock WifiUsabilityStatsListener mWifiUsabilityStatsListener; + @Mock OnWifiUsabilityStatsListener mOnWifiUsabilityStatsListener; private Executor mExecutor; private Handler mHandler; @@ -1348,29 +1348,29 @@ i * Verify that a call to cancel WPS immediately returns a failure. } /** - * Verify the call to addWifiUsabilityStatsListener goes to WifiServiceImpl. + * Verify the call to addOnWifiUsabilityStatsListener goes to WifiServiceImpl. */ @Test - public void addWifiUsabilityStatsListeneroesToWifiServiceImpl() throws Exception { + public void addOnWifiUsabilityStatsListeneroesToWifiServiceImpl() throws Exception { mExecutor = new SynchronousExecutor(); - mWifiManager.addWifiUsabilityStatsListener(mExecutor, mWifiUsabilityStatsListener); - verify(mWifiService).addWifiUsabilityStatsListener(any(IBinder.class), - any(IWifiUsabilityStatsListener.Stub.class), anyInt()); + mWifiManager.addOnWifiUsabilityStatsListener(mExecutor, mOnWifiUsabilityStatsListener); + verify(mWifiService).addOnWifiUsabilityStatsListener(any(IBinder.class), + any(IOnWifiUsabilityStatsListener.Stub.class), anyInt()); } /** - * Verify the call to removeWifiUsabilityStatsListener goes to WifiServiceImpl. + * Verify the call to removeOnWifiUsabilityStatsListener goes to WifiServiceImpl. */ @Test - public void removeWifiUsabilityListenerGoesToWifiServiceImpl() throws Exception { + public void removeOnWifiUsabilityListenerGoesToWifiServiceImpl() throws Exception { ArgumentCaptor listenerIdentifier = ArgumentCaptor.forClass(Integer.class); mExecutor = new SynchronousExecutor(); - mWifiManager.addWifiUsabilityStatsListener(mExecutor, mWifiUsabilityStatsListener); - verify(mWifiService).addWifiUsabilityStatsListener(any(IBinder.class), - any(IWifiUsabilityStatsListener.Stub.class), listenerIdentifier.capture()); + mWifiManager.addOnWifiUsabilityStatsListener(mExecutor, mOnWifiUsabilityStatsListener); + verify(mWifiService).addOnWifiUsabilityStatsListener(any(IBinder.class), + any(IOnWifiUsabilityStatsListener.Stub.class), listenerIdentifier.capture()); - mWifiManager.removeWifiUsabilityStatsListener(mWifiUsabilityStatsListener); - verify(mWifiService).removeWifiUsabilityStatsListener( + mWifiManager.removeOnWifiUsabilityStatsListener(mOnWifiUsabilityStatsListener); + verify(mWifiService).removeOnWifiUsabilityStatsListener( eq((int) listenerIdentifier.getValue())); } diff --git a/wifi/tests/src/android/net/wifi/WifiUsabilityStatsEntryTest.java b/wifi/tests/src/android/net/wifi/WifiUsabilityStatsEntryTest.java index a22f8ce853bf3..8e371134fbd61 100644 --- a/wifi/tests/src/android/net/wifi/WifiUsabilityStatsEntryTest.java +++ b/wifi/tests/src/android/net/wifi/WifiUsabilityStatsEntryTest.java @@ -81,29 +81,35 @@ public class WifiUsabilityStatsEntryTest { private static void assertWifiUsabilityStatsEntryEquals( WifiUsabilityStatsEntry expected, WifiUsabilityStatsEntry actual) { - assertEquals(expected.timeStampMs, actual.timeStampMs); - assertEquals(expected.rssi, actual.rssi); - assertEquals(expected.linkSpeedMbps, actual.linkSpeedMbps); - assertEquals(expected.totalTxSuccess, actual.totalTxSuccess); - assertEquals(expected.totalTxRetries, actual.totalTxRetries); - assertEquals(expected.totalTxBad, actual.totalTxBad); - assertEquals(expected.totalRxSuccess, actual.totalRxSuccess); - assertEquals(expected.totalRadioOnTimeMs, actual.totalRadioOnTimeMs); - assertEquals(expected.totalRadioTxTimeMs, actual.totalRadioTxTimeMs); - assertEquals(expected.totalRadioRxTimeMs, actual.totalRadioRxTimeMs); - assertEquals(expected.totalScanTimeMs, actual.totalScanTimeMs); - assertEquals(expected.totalNanScanTimeMs, actual.totalNanScanTimeMs); - assertEquals(expected.totalBackgroundScanTimeMs, actual.totalBackgroundScanTimeMs); - assertEquals(expected.totalRoamScanTimeMs, actual.totalRoamScanTimeMs); - assertEquals(expected.totalPnoScanTimeMs, actual.totalPnoScanTimeMs); - assertEquals(expected.totalHotspot2ScanTimeMs, actual.totalHotspot2ScanTimeMs); - assertEquals(expected.totalCcaBusyFreqTimeMs, actual.totalCcaBusyFreqTimeMs); - assertEquals(expected.totalRadioOnFreqTimeMs, actual.totalRadioOnFreqTimeMs); - assertEquals(expected.totalBeaconRx, actual.totalBeaconRx); - assertEquals(expected.probeStatusSinceLastUpdate, actual.probeStatusSinceLastUpdate); - assertEquals(expected.probeElapsedTimeMsSinceLastUpdate, - actual.probeElapsedTimeMsSinceLastUpdate); - assertEquals(expected.probeMcsRateSinceLastUpdate, actual.probeMcsRateSinceLastUpdate); - assertEquals(expected.rxLinkSpeedMbps, actual.rxLinkSpeedMbps); + assertEquals(expected.getTimeStampMillis(), actual.getTimeStampMillis()); + assertEquals(expected.getRssi(), actual.getRssi()); + assertEquals(expected.getLinkSpeedMbps(), actual.getLinkSpeedMbps()); + assertEquals(expected.getTotalTxSuccess(), actual.getTotalTxSuccess()); + assertEquals(expected.getTotalTxRetries(), actual.getTotalTxRetries()); + assertEquals(expected.getTotalTxBad(), actual.getTotalTxBad()); + assertEquals(expected.getTotalRxSuccess(), actual.getTotalRxSuccess()); + assertEquals(expected.getTotalRadioOnTimeMillis(), actual.getTotalRadioOnTimeMillis()); + assertEquals(expected.getTotalRadioTxTimeMillis(), actual.getTotalRadioTxTimeMillis()); + assertEquals(expected.getTotalRadioRxTimeMillis(), actual.getTotalRadioRxTimeMillis()); + assertEquals(expected.getTotalScanTimeMillis(), actual.getTotalScanTimeMillis()); + assertEquals(expected.getTotalNanScanTimeMillis(), actual.getTotalNanScanTimeMillis()); + assertEquals(expected.getTotalBackgroundScanTimeMillis(), + actual.getTotalBackgroundScanTimeMillis()); + assertEquals(expected.getTotalRoamScanTimeMillis(), actual.getTotalRoamScanTimeMillis()); + assertEquals(expected.getTotalPnoScanTimeMillis(), actual.getTotalPnoScanTimeMillis()); + assertEquals(expected.getTotalHotspot2ScanTimeMillis(), + actual.getTotalHotspot2ScanTimeMillis()); + assertEquals(expected.getTotalCcaBusyFreqTimeMillis(), + actual.getTotalCcaBusyFreqTimeMillis()); + assertEquals(expected.getTotalRadioOnFreqTimeMillis(), + actual.getTotalRadioOnFreqTimeMillis()); + assertEquals(expected.getTotalBeaconRx(), actual.getTotalBeaconRx()); + assertEquals(expected.getProbeStatusSinceLastUpdate(), + actual.getProbeStatusSinceLastUpdate()); + assertEquals(expected.getProbeElapsedTimeSinceLastUpdateMillis(), + actual.getProbeElapsedTimeSinceLastUpdateMillis()); + assertEquals(expected.getProbeMcsRateSinceLastUpdate(), + actual.getProbeMcsRateSinceLastUpdate()); + assertEquals(expected.getRxLinkSpeedMbps(), actual.getRxLinkSpeedMbps()); } }