summaryrefslogtreecommitdiffstats
path: root/wifi/java/android/net/wifi/WifiConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'wifi/java/android/net/wifi/WifiConfiguration.java')
-rw-r--r--wifi/java/android/net/wifi/WifiConfiguration.java133
1 files changed, 131 insertions, 2 deletions
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;
}