diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 439fff3bbe114..e38dc9e76384b 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -97,6 +97,9 @@ Connected, no Internet + + Access point temporarily full + Very Slow diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index e0a88e4cf206c..3d5433eda6238 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -721,7 +721,17 @@ public class AccessPoint implements Comparable { summary.append(mContext.getString(R.string.wifi_not_in_range)); } else { // In range, not disabled. if (config != null) { // Is saved network - summary.append(mContext.getString(R.string.wifi_remembered)); + // Last attempt to connect to this failed. Show reason why + switch (config.recentFailure.getAssociationStatus()) { + case WifiConfiguration.RecentFailure.STATUS_AP_UNABLE_TO_HANDLE_NEW_STA: + summary.append(mContext.getString( + R.string.wifi_ap_unable_to_handle_new_sta)); + break; + default: + // "Saved" + summary.append(mContext.getString(R.string.wifi_remembered)); + break; + } } } diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 13d54abdd0050..a145327807a7d 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -418,12 +418,6 @@ public class WifiConfiguration implements Parcelable { */ public String defaultGwMacAddress; - /** - * @hide - * last failure - */ - public String lastFailure; - /** * @hide * last time we connected, this configuration had validated internet access @@ -1415,6 +1409,53 @@ public class WifiConfiguration implements Parcelable { */ private NetworkSelectionStatus mNetworkSelectionStatus = new NetworkSelectionStatus(); + /** + * @hide + * This class is intended to store extra failure reason information for the most recent + * connection attempt, so that it may be surfaced to the settings UI + */ + public static class RecentFailure { + + /** + * No recent failure, or no specific reason given for the recent connection failure + */ + public static final int NONE = 0; + /** + * Connection to this network recently failed due to Association Rejection Status 17 + * (AP is full) + */ + public static final int STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17; + /** + * Association Rejection Status code (NONE for success/non-association-rejection-fail) + */ + private int mAssociationStatus = NONE; + + /** + * @param status the association status code for the recent failure + */ + public void setAssociationStatus(int status) { + mAssociationStatus = status; + } + /** + * Sets the RecentFailure to NONE + */ + public void clear() { + mAssociationStatus = NONE; + } + /** + * Get the recent failure code + */ + public int getAssociationStatus() { + return mAssociationStatus; + } + } + + /** + * @hide + * RecentFailure member + */ + final public RecentFailure recentFailure = new RecentFailure(); + /** * @hide * @return network selection status @@ -1705,7 +1746,8 @@ public class WifiConfiguration implements Parcelable { sbuf.append('\n'); } } - + sbuf.append("recentFailure: ").append("Association Rejection code: ") + .append(recentFailure.getAssociationStatus()).append("\n"); return sbuf.toString(); } @@ -2029,7 +2071,6 @@ public class WifiConfiguration implements Parcelable { visibility = new Visibility(source.visibility); } - lastFailure = source.lastFailure; didSelfAdd = source.didSelfAdd; lastConnectUid = source.lastConnectUid; lastUpdateUid = source.lastUpdateUid; @@ -2053,6 +2094,7 @@ public class WifiConfiguration implements Parcelable { creationTime = source.creationTime; updateTime = source.updateTime; shared = source.shared; + recentFailure.setAssociationStatus(source.recentFailure.getAssociationStatus()); } } @@ -2119,6 +2161,7 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(noInternetAccessExpected ? 1 : 0); dest.writeInt(shared ? 1 : 0); dest.writeString(mPasspointManagementObjectTree); + dest.writeInt(recentFailure.getAssociationStatus()); } /** Implement the Parcelable interface {@hide} */ @@ -2186,6 +2229,7 @@ public class WifiConfiguration implements Parcelable { config.noInternetAccessExpected = in.readInt() != 0; config.shared = in.readInt() != 0; config.mPasspointManagementObjectTree = in.readString(); + config.recentFailure.setAssociationStatus(in.readInt()); return config; }