Merge "Wifi usability: Comments from API review council are addressed"
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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<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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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<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()));
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user