Wifi usability: Comments from API review council are addressed
Addressed all comments from API review council:
1. Rename WifiUsabilityStatsListener to OnWifiUsabilityStatsListener.
2. Change the modifier of member variables in WifiUsabilityStatsEntry.java to private and use getters.
3. Document the unit of predicitonHoirzonSec and its expected range.
4. Add @ProbeStaus in probeStatusSinceLastUpdate.
5. Rename probeElapsedTimeMsSinceLastUpdate to
ProbeElapsedTimeSinceLastUpdateMs.
6. Marked @NonNull for Argument 3 in onWifiUsabilityStats.
Bug: 126391553
Bug: 126699865
Bug: 113262380
Test: frameworks/base/wifi/tests/runtests.sh
Change-Id: I20d9ad05dc0bb537b09006ca44a447401b3e1001
Signed-off-by: Mingguang Xu <mingguangxu@google.com>
diff --git a/Android.bp b/Android.bp
index e14281a..53f9a04 100644
--- a/Android.bp
+++ b/Android.bp
@@ -635,7 +635,7 @@
"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 0f1ab29..c7c0201 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -4746,7 +4746,7 @@
}
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);
@@ -4761,7 +4761,7 @@
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);
@@ -4806,8 +4806,8 @@
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 {
@@ -4942,35 +4942,35 @@
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<android.net.wifi.WifiUsabilityStatsEntry> 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 f106ced..55c460d 100644
--- a/proto/src/wifi.proto
+++ b/proto/src/wifi.proto
@@ -1954,7 +1954,7 @@
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 284ffaa..4687f30 100644
--- a/wifi/java/android/net/wifi/IWifiUsabilityStatsListener.aidl
+++ b/wifi/java/android/net/wifi/IOnWifiUsabilityStatsListener.aidl
@@ -23,7 +23,7 @@
*
* @hide
*/
-oneway interface IWifiUsabilityStatsListener
+oneway interface IOnWifiUsabilityStatsListener
{
/**
* Service to manager callback providing current Wi-Fi usability stats.
@@ -36,6 +36,6 @@
* 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 17948e7..62ea9af 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.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 @@
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 4fd00f7..c6226fc 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -4785,13 +4785,13 @@
/**
* 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 @@
* 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 @@
*/
@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 @@
*/
@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 @@
*
* @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 2dee971..51aa93a 100644
--- a/wifi/java/android/net/wifi/WifiUsabilityStatsEntry.java
+++ b/wifi/java/android/net/wifi/WifiUsabilityStatsEntry.java
@@ -51,87 +51,88 @@
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 @@
/** 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 @@
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 c236c7a..842d78d 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.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 @@
}
@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 5c2f626..600abc9 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.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 @@
@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 @@
}
/**
- * 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<Integer> 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 a22f8ce..8e37113 100644
--- a/wifi/tests/src/android/net/wifi/WifiUsabilityStatsEntryTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiUsabilityStatsEntryTest.java
@@ -81,29 +81,35 @@
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());
}
}