diff options
Diffstat (limited to 'wifi/java/android/net')
10 files changed, 174 insertions, 26 deletions
diff --git a/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java b/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java index 533b8bc..6263463 100644 --- a/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java +++ b/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java @@ -21,37 +21,37 @@ import android.os.Parcelable; /** * Record of energy and activity information from controller and - * underlying wifi stack state.Timestamp the record with system - * time + * underlying wifi stack state. Timestamp the record with elapsed + * real-time. * @hide */ public final class WifiActivityEnergyInfo implements Parcelable { + private final long mTimestamp; private final int mStackState; private final int mControllerTxTimeMs; private final int mControllerRxTimeMs; private final int mControllerIdleTimeMs; private final int mControllerEnergyUsed; - private final long timestamp; public static final int STACK_STATE_INVALID = 0; public static final int STACK_STATE_STATE_ACTIVE = 1; public static final int STACK_STATE_STATE_SCANNING = 2; public static final int STACK_STATE_STATE_IDLE = 3; - public WifiActivityEnergyInfo(int stackState, int txTime, int rxTime, - int idleTime, int energyUsed) { + public WifiActivityEnergyInfo(long timestamp, int stackState, + int txTime, int rxTime, int idleTime, int energyUsed) { + mTimestamp = timestamp; mStackState = stackState; mControllerTxTimeMs = txTime; mControllerRxTimeMs = rxTime; mControllerIdleTimeMs = idleTime; mControllerEnergyUsed = energyUsed; - timestamp = System.currentTimeMillis(); } @Override public String toString() { return "WifiActivityEnergyInfo{" - + " timestamp=" + timestamp + + " timestamp=" + mTimestamp + " mStackState=" + mStackState + " mControllerTxTimeMs=" + mControllerTxTimeMs + " mControllerRxTimeMs=" + mControllerRxTimeMs @@ -63,13 +63,14 @@ public final class WifiActivityEnergyInfo implements Parcelable { public static final Parcelable.Creator<WifiActivityEnergyInfo> CREATOR = new Parcelable.Creator<WifiActivityEnergyInfo>() { public WifiActivityEnergyInfo createFromParcel(Parcel in) { + long timestamp = in.readLong(); int stackState = in.readInt(); int txTime = in.readInt(); int rxTime = in.readInt(); int idleTime = in.readInt(); int energyUsed = in.readInt(); - return new WifiActivityEnergyInfo(stackState, txTime, rxTime, - idleTime, energyUsed); + return new WifiActivityEnergyInfo(timestamp, stackState, + txTime, rxTime, idleTime, energyUsed); } public WifiActivityEnergyInfo[] newArray(int size) { return new WifiActivityEnergyInfo[size]; @@ -77,6 +78,7 @@ public final class WifiActivityEnergyInfo implements Parcelable { }; public void writeToParcel(Parcel out, int flags) { + out.writeLong(mTimestamp); out.writeInt(mStackState); out.writeInt(mControllerTxTimeMs); out.writeInt(mControllerRxTimeMs); @@ -127,7 +129,7 @@ public final class WifiActivityEnergyInfo implements Parcelable { * @return timestamp(wall clock) of record creation */ public long getTimeStamp() { - return timestamp; + return mTimestamp; } /** diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 22c236e..2bb1cc5 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -17,9 +17,9 @@ package android.net.wifi; import android.annotation.SystemApi; +import android.content.pm.PackageManager; import android.net.IpConfiguration; import android.net.IpConfiguration.ProxySettings; -import android.net.IpConfiguration.IpAssignment; import android.net.ProxyInfo; import android.net.StaticIpConfiguration; import android.os.Parcel; @@ -398,12 +398,34 @@ public class WifiConfiguration implements Parcelable { /** * @hide + * Universal name for app creating the configuration + * see {#link {@link PackageManager#getNameForUid(int)} + */ + @SystemApi + public String creatorName; + + /** + * @hide + * Universal name for app updating the configuration + * see {#link {@link PackageManager#getNameForUid(int)} + */ + @SystemApi + public String lastUpdateName; + + /** + * @hide * Uid used by autoJoin */ public String autoJoinBSSID; /** * @hide + * Status of user approval for connection + */ + public int userApproved = USER_UNSPECIFIED; + + /** + * @hide * BSSID list on which this configuration was seen. * TODO: prevent this list to grow infinitely, age-out the results */ @@ -649,6 +671,28 @@ public class WifiConfiguration implements Parcelable { /** @hide */ public static final int AUTO_JOIN_DELETED = 200; + // States for the userApproved field + /** + * @hide + * User hasn't specified if connection is okay + */ + public static final int USER_UNSPECIFIED = 0; + /** + * @hide + * User has approved this for connection + */ + public static final int USER_APPROVED = 1; + /** + * @hide + * User has banned this from connection + */ + public static final int USER_BANNED = 2; + /** + * @hide + * Waiting for user input + */ + public static final int USER_PENDING = 3; + /** * @hide */ @@ -708,6 +752,31 @@ public class WifiConfiguration implements Parcelable { /** * @hide + * Last time the system tried to roam and failed because of authentication failure or DHCP + * RENEW failure. + */ + public long lastRoamingFailure; + + /** @hide */ + public static int ROAMING_FAILURE_IP_CONFIG = 1; + /** @hide */ + public static int ROAMING_FAILURE_AUTH_FAILURE = 2; + + /** + * @hide + * Initial amount of time this Wifi configuration gets blacklisted for network switching + * because of roaming failure + */ + public long roamingFailureBlackListTimeMilli = 1000; + + /** + * @hide + * Last roaming failure reason code + */ + public int lastRoamingFailureReason; + + /** + * @hide * Last time the system was disconnected to this configuration. */ public long lastDisconnected; @@ -877,6 +946,8 @@ public class WifiConfiguration implements Parcelable { ephemeral = false; validatedInternetAccess = false; mIpConfiguration = new IpConfiguration(); + lastUpdateUid = -1; + creatorUid = -1; } /** @@ -921,6 +992,15 @@ public class WifiConfiguration implements Parcelable { } /** + * Helper function, idenfity if a configuration should be treated as an enterprise network + * @hide + */ + public boolean isEnterprise() { + return allowedKeyManagement.get(KeyMgmt.WPA_EAP) || + allowedKeyManagement.get(KeyMgmt.IEEE8021X); + } + + /** * most recent time we have seen this configuration * @return most recent scanResult * @hide @@ -1137,7 +1217,6 @@ public class WifiConfiguration implements Parcelable { sbuf.append("IP config:\n"); sbuf.append(mIpConfiguration.toString()); - if (this.creatorUid != 0) sbuf.append(" uid=" + Integer.toString(creatorUid)); if (this.autoJoinBSSID != null) sbuf.append(" autoJoinBSSID=" + autoJoinBSSID); long now_ms = System.currentTimeMillis(); if (this.blackListTimestamp != 0) { @@ -1149,6 +1228,12 @@ public class WifiConfiguration implements Parcelable { sbuf.append(" blackListed: ").append(Long.toString(diff/1000)).append( "sec"); } } + if (creatorUid != 0) sbuf.append(" cuid=" + Integer.toString(creatorUid)); + if (creatorName != null) sbuf.append(" cname=" + creatorName); + if (lastUpdateUid != 0) sbuf.append(" luid=" + lastUpdateUid); + if (lastUpdateName != null) sbuf.append(" lname=" + lastUpdateName); + sbuf.append("userApproved=" + userApprovedAsString(userApproved)); + if (this.lastConnected != 0) { sbuf.append('\n'); long diff = now_ms - this.lastConnected; @@ -1168,6 +1253,18 @@ public class WifiConfiguration implements Parcelable { sbuf.append( "sec"); } } + if (this.lastRoamingFailure != 0) { + sbuf.append('\n'); + long diff = now_ms - this.lastRoamingFailure; + if (diff <= 0) { + sbuf.append("lastRoamingFailure since <incorrect>"); + } else { + sbuf.append("lastRoamingFailure: ").append(Long.toString(diff/1000)); + sbuf.append( "sec"); + } + } + sbuf.append("roamingFailureBlackListTimeMilli: "). + append(Long.toString(this.roamingFailureBlackListTimeMilli)); sbuf.append('\n'); if (this.linkedConfigurations != null) { for(String key : this.linkedConfigurations.keySet()) { @@ -1273,6 +1370,20 @@ public class WifiConfiguration implements Parcelable { return SSID; } + /** @hide **/ + public static String userApprovedAsString(int userApproved) { + switch (userApproved) { + case USER_APPROVED: + return "USER_APPROVED"; + case USER_BANNED: + return "USER_BANNED"; + case USER_UNSPECIFIED: + return "USER_UNSPECIFIED"; + default: + return "INVALID"; + } + } + /** * Get an identifier for associating credentials with this config * @param current configuration contains values for additional fields @@ -1536,11 +1647,16 @@ public class WifiConfiguration implements Parcelable { lastConnectUid = source.lastConnectUid; lastUpdateUid = source.lastUpdateUid; creatorUid = source.creatorUid; + creatorName = source.creatorName; + lastUpdateName = source.lastUpdateName; peerWifiConfiguration = source.peerWifiConfiguration; blackListTimestamp = source.blackListTimestamp; lastConnected = source.lastConnected; lastDisconnected = source.lastDisconnected; lastConnectionFailure = source.lastConnectionFailure; + lastRoamingFailure = source.lastRoamingFailure; + lastRoamingFailureReason = source.lastRoamingFailureReason; + roamingFailureBlackListTimeMilli = source.roamingFailureBlackListTimeMilli; numConnectionFailures = source.numConnectionFailures; numIpConfigFailures = source.numIpConfigFailures; numAuthFailures = source.numAuthFailures; @@ -1559,6 +1675,7 @@ public class WifiConfiguration implements Parcelable { = source.autoJoinUseAggressiveJoinAttemptThreshold; autoJoinBailedDueToLowRssi = source.autoJoinBailedDueToLowRssi; dirty = source.dirty; + userApproved = source.userApproved; numNoInternetAccessReports = source.numNoInternetAccessReports; } } @@ -1610,8 +1727,13 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(creatorUid); dest.writeInt(lastConnectUid); dest.writeInt(lastUpdateUid); + dest.writeString(creatorName); + dest.writeString(lastUpdateName); dest.writeLong(blackListTimestamp); dest.writeLong(lastConnectionFailure); + dest.writeLong(lastRoamingFailure); + dest.writeInt(lastRoamingFailureReason); + dest.writeLong(roamingFailureBlackListTimeMilli); dest.writeInt(numConnectionFailures); dest.writeInt(numIpConfigFailures); dest.writeInt(numAuthFailures); @@ -1627,6 +1749,7 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(numUserTriggeredJoinAttempts); dest.writeInt(autoJoinUseAggressiveJoinAttemptThreshold); dest.writeInt(autoJoinBailedDueToLowRssi ? 1 : 0); + dest.writeInt(userApproved); dest.writeInt(numNoInternetAccessReports); } @@ -1674,8 +1797,13 @@ public class WifiConfiguration implements Parcelable { config.creatorUid = in.readInt(); config.lastConnectUid = in.readInt(); config.lastUpdateUid = in.readInt(); + config.creatorName = in.readString(); + config.lastUpdateName = in.readString(); config.blackListTimestamp = in.readLong(); config.lastConnectionFailure = in.readLong(); + config.lastRoamingFailure = in.readLong(); + config.lastRoamingFailureReason = in.readInt(); + config.roamingFailureBlackListTimeMilli = in.readLong(); config.numConnectionFailures = in.readInt(); config.numIpConfigFailures = in.readInt(); config.numAuthFailures = in.readInt(); @@ -1691,6 +1819,7 @@ public class WifiConfiguration implements Parcelable { config.numUserTriggeredJoinAttempts = in.readInt(); config.autoJoinUseAggressiveJoinAttemptThreshold = in.readInt(); config.autoJoinBailedDueToLowRssi = in.readInt() != 0; + config.userApproved = in.readInt(); config.numNoInternetAccessReports = in.readInt(); return config; } diff --git a/wifi/java/android/net/wifi/WifiLinkLayerStats.java b/wifi/java/android/net/wifi/WifiLinkLayerStats.java index 7fac7cf..1de4fd8 100644 --- a/wifi/java/android/net/wifi/WifiLinkLayerStats.java +++ b/wifi/java/android/net/wifi/WifiLinkLayerStats.java @@ -18,12 +18,6 @@ package android.net.wifi; import android.os.Parcelable; import android.os.Parcel; -import android.text.TextUtils; -import java.util.HashMap; -import java.util.Date; -import java.util.ArrayList; - -import java.util.BitSet; /** * A class representing link layer statistics collected over a Wifi Interface. diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 40d40bb..b292c22 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -86,6 +86,28 @@ public class WifiManager { public static final String EXTRA_SCAN_AVAILABLE = "scan_enabled"; /** + * Broadcast intent action indicating that the credential of a Wi-Fi network + * has been changed. One extra provides the ssid of the network. Another + * extra provides the event type, whether the credential is saved or forgot. + * @hide + */ + @SystemApi + public static final String WIFI_CREDENTIAL_CHANGED_ACTION = + "android.net.wifi.WIFI_CREDENTIAL_CHANGED"; + /** @hide */ + @SystemApi + public static final String EXTRA_WIFI_CREDENTIAL_EVENT_TYPE = "et"; + /** @hide */ + @SystemApi + public static final String EXTRA_WIFI_CREDENTIAL_SSID = "ssid"; + /** @hide */ + @SystemApi + public static final int WIFI_CREDENTIAL_SAVED = 0; + /** @hide */ + @SystemApi + public static final int WIFI_CREDENTIAL_FORGOT = 1; + + /** * Broadcast intent action indicating that Wi-Fi has been enabled, disabled, * enabling, disabling, or unknown. One extra provides this state as an int. * Another extra provides the previous state, if available. diff --git a/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java b/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java index c7d62e5..9b2fdc8 100644 --- a/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java +++ b/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java @@ -21,8 +21,6 @@ import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; -import java.util.HashMap; - /** * Connection Statistics For a WiFi Network. * @hide diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java index c7275f8..f3cf28b 100644 --- a/wifi/java/android/net/wifi/WifiScanner.java +++ b/wifi/java/android/net/wifi/WifiScanner.java @@ -634,6 +634,10 @@ public class WifiScanner { * @param results list of scan results, one for each access point visible currently */ public void onFound(ScanResult[] results); + /** indicates that access points were missed by on going scans + * @param results list of scan results, for each access point that is not visible anymore + */ + public void onLost(ScanResult[] results); } /** @hide */ @@ -985,6 +989,10 @@ public class WifiScanner { ((BssidListener) listener).onFound( ((ParcelableScanResults) msg.obj).getResults()); return; + case CMD_AP_LOST: + ((BssidListener) listener).onLost( + ((ParcelableScanResults) msg.obj).getResults()); + return; case CMD_WIFI_CHANGE_DETECTED: ((WifiChangeListener) listener).onChanging( ((ParcelableScanResults) msg.obj).getResults()); diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java index d65d03e..92c7e36 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java @@ -77,6 +77,7 @@ public class WifiP2pWfdInfo implements Parcelable { public boolean setDeviceType(int deviceType) { if (deviceType >= WFD_SOURCE && deviceType <= SOURCE_OR_PRIMARY_SINK) { + mDeviceInfo &= ~DEVICE_TYPE; mDeviceInfo |= deviceType; return true; } diff --git a/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java b/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java index 0a7230f..a100aed 100644 --- a/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java +++ b/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java @@ -20,9 +20,7 @@ import android.net.wifi.WifiEnterpriseConfig; import android.os.Parcelable; import android.os.Parcel; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.Iterator; import java.util.Map; import java.util.Set; diff --git a/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java b/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java index bbf5fc6..427c84c 100644 --- a/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java +++ b/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java @@ -18,8 +18,6 @@ package android.net.wifi.passpoint; import android.os.Parcelable; import android.os.Parcel; -import android.util.Log; - import java.util.HashMap; /** diff --git a/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java b/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java index f84ac88..c08877e 100644 --- a/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java +++ b/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java @@ -17,7 +17,6 @@ package android.net.wifi.passpoint; import android.net.wifi.WifiConfiguration; -import android.net.wifi.ScanResult; import android.os.Parcelable; import android.os.Parcel; import android.security.Credentials; @@ -25,7 +24,6 @@ import android.util.Log; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.List; /** @hide */ |