Loading wifi/java/android/net/wifi/WifiConfiguration.java +172 −39 Original line number Diff line number Diff line Loading @@ -703,24 +703,6 @@ public class WifiConfiguration implements Parcelable { */ public int numUserTriggeredJoinAttempts; /** * @hide * Connect choices * * remember the keys identifying the known WifiConfiguration over which this configuration * was preferred by user or a "WiFi Network Management app", that is, * a WifiManager.CONNECT_NETWORK or SELECT_NETWORK was received while this configuration * was visible to the user: * configKey is : "SSID"-WEP-WPA_PSK-WPA_EAP * * The integer represents the configuration's RSSI at that time (useful?) * * The overall auto-join algorithm make use of past connect choice so as to sort configuration, * the exact algorithm still fluctuating as of 5/7/2014 * */ public HashMap<String, Integer> connectChoices; /** @hide * Boost given to RSSI on a home network for the purpose of calculating the score * This adds stickiness to home networks, as defined by: Loading Loading @@ -830,6 +812,16 @@ public class WifiConfiguration implements Parcelable { */ public static final long INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP = -1L; /** * This constant indicates the current configuration has connect choice set */ private static final int CONNECT_CHOICE_EXISTS = 1; /** * This constant indicates the current configuration does not have connect choice set */ private static final int CONNECT_CHOICE_NOT_EXISTS = -1; // fields for QualityNetwork Selection /** * Network selection status, should be in one of three status: enable, temporaily disabled Loading @@ -853,7 +845,128 @@ public class WifiConfiguration implements Parcelable { private int[] mNetworkSeclectionDisableCounter = new int[NETWORK_SELECTION_DISABLED_MAX]; /** * return current Quality network selection status in String (for debug purpose) * Connect Choice over this configuration * * When current wifi configuration is visible to the user but user explicitly choose to * connect to another network X, the another networks X's configure key will be stored here. * We will consider user has a preference of X over this network. And in the future, * network selection will always give X a higher preference over this configuration. * configKey is : "SSID"-WEP-WPA_PSK-WPA_EAP */ private String mConnectChoice; /** * The system timestamp when we records the connectChoice. This value is obtained from * System.currentTimeMillis */ private long mConnectChoiceTimestamp = INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP; /** * Used to cache the temporary candidate during the network selection procedure. It will be * kept updating once a new scan result has a higher score than current one */ private ScanResult mCandidate; /** * Used to cache the score of the current temporary candidate during the network * selection procedure. */ private int mCandidateScore; /** * Indicate whether this network is visible in latest Qualified Network Selection. This * means there is scan result found related to this Configuration and meet the minimum * requirement. The saved network need not join latest Qualified Network Selection. For * example, it is disabled. True means network is visible in latest Qualified Network * Selection and false means network is invisible */ private boolean mSeenInLastQualifiedNetworkSelection; /** * set whether this network is visible in latest Qualified Network Selection * @param seen value set to candidate */ public void setSeenInLastQualifiedNetworkSelection(boolean seen) { mSeenInLastQualifiedNetworkSelection = seen; } /** * get whether this network is visible in latest Qualified Network Selection * @return returns true -- network is visible in latest Qualified Network Selection * false -- network is invisible in latest Qualified Network Selection */ public boolean getSeenInLastQualifiedNetworkSelection() { return mSeenInLastQualifiedNetworkSelection; } /** * set the temporary candidate of current network selection procedure * @param scanCandidate {@link ScanResult} the candidate set to mCandidate */ public void setCandidate(ScanResult scanCandidate) { mCandidate = scanCandidate; } /** * get the temporary candidate of current network selection procedure * @return returns {@link ScanResult} temporary candidate of current network selection * procedure */ public ScanResult getCandidate() { return mCandidate; } /** * set the score of the temporary candidate of current network selection procedure * @param score value set to mCandidateScore */ public void setCandidateScore(int score) { mCandidateScore = score; } /** * get the score of the temporary candidate of current network selection procedure * @return returns score of the temporary candidate of current network selection procedure */ public int getCandidateScore() { return mCandidateScore; } /** * get user preferred choice over this configuration *@return returns configKey of user preferred choice over this configuration */ public String getConnectChoice() { return mConnectChoice; } /** * set user preferred choice over this configuration * @param newConnectChoice, the configKey of user preferred choice over this configuration */ public void setConnectChoice(String newConnectChoice) { mConnectChoice = newConnectChoice; } /** * get the timeStamp when user select a choice over this configuration * @return returns when current connectChoice is set (time from System.currentTimeMillis) */ public long getConnectChoiceTimestamp() { return mConnectChoiceTimestamp; } /** * set the timeStamp when user select a choice over this configuration * @param timeStamp, the timestamp set to connectChoiceTimestamp, expected timestamp should * be obtained from System.currentTimeMillis */ public void setConnectChoiceTimestamp(long timeStamp) { mConnectChoiceTimestamp = timeStamp; } /** * get current Quality network selection status * @return returns current Quality network selection status in String (for debug purpose) */ public String getNetworkStatusString() { return QUALITY_NETWORK_SELECTION_STATUS[mStatus]; Loading @@ -873,6 +986,7 @@ public class WifiConfiguration implements Parcelable { } } /** * get current network disable reason * @return current network disable reason in String (for debug purpose) */ public String getNetworkDisableReasonString() { Loading @@ -881,6 +995,7 @@ public class WifiConfiguration implements Parcelable { /** * get current network network selection status * @return return current network network selection status */ public int getNetworkSelectionStatus() { return mStatus; Loading @@ -900,12 +1015,14 @@ public class WifiConfiguration implements Parcelable { } /** * return whether current network is permanently disabled * @return returns whether current network is permanently disabled */ public boolean isNetworkPermanentlyDisabled() { return mStatus == NETWORK_SELECTION_PERMANENTLY_DISABLED; } /** * set current networ work selection status * @param status network selection status to set */ public void setNetworkSelectionStatus(int status) { Loading @@ -913,14 +1030,16 @@ public class WifiConfiguration implements Parcelable { mStatus = status; } } /** * @return current network's disable reason * @return returns current network's disable reason */ public int getNetworkSelectionDisableReason() { return mNetworkSelectionDisableReason; } /** * set Network disable reason * @param reason Network disable reason */ public void setNetworkSelectionDisableReason(int reason) { Loading @@ -930,12 +1049,17 @@ public class WifiConfiguration implements Parcelable { throw new IllegalArgumentException("Illegal reason value: " + reason); } } /** * @param reason whether current network is disabled by this reason * check whether network is disabled by this reason * @param reason a specific disable reason * @return true -- network is disabled for this reason * false -- network is not disabled for this reason */ public boolean isDisabledByReason(int reason) { return mNetworkSelectionDisableReason == reason; } /** * @param timeStamp Set when current network is disabled in millisecond since January 1, * 1970 00:00:00.0 UTC Loading @@ -945,7 +1069,7 @@ public class WifiConfiguration implements Parcelable { } /** * @return Get when current network is disabled in millisecond since January 1, * @return returns when current network is disabled in millisecond since January 1, * 1970 00:00:00.0 UTC */ public long getDisableTime() { Loading @@ -953,6 +1077,7 @@ public class WifiConfiguration implements Parcelable { } /** * get the disable counter of a specific reason * @param reason specific failure reason * @exception throw IllegalArgumentException for illegal input * @return counter number for specific error reason. Loading Loading @@ -991,6 +1116,7 @@ public class WifiConfiguration implements Parcelable { throw new IllegalArgumentException("Illegal reason value: " + reason); } } /** * clear the counter of a specific failure reason * @hide Loading @@ -1004,6 +1130,7 @@ public class WifiConfiguration implements Parcelable { throw new IllegalArgumentException("Illegal reason value: " + reason); } } /** * clear all the failure reason counters */ Loading Loading @@ -1042,6 +1169,8 @@ public class WifiConfiguration implements Parcelable { } mTemporarilyDisabledTimestamp = source.mTemporarilyDisabledTimestamp; mNetworkSelectionBSSID = source.mNetworkSelectionBSSID; setConnectChoice(source.getConnectChoice()); setConnectChoiceTimestamp(source.getConnectChoiceTimestamp()); } public void writeToParcel(Parcel dest) { Loading @@ -1053,6 +1182,13 @@ public class WifiConfiguration implements Parcelable { } dest.writeLong(getDisableTime()); dest.writeString(getNetworkSelectionBSSID()); if (getConnectChoice() != null) { dest.writeInt(CONNECT_CHOICE_EXISTS); dest.writeString(getConnectChoice()); dest.writeLong(getConnectChoiceTimestamp()); } else { dest.writeInt(CONNECT_CHOICE_NOT_EXISTS); } } public void readFromParcel(Parcel in) { Loading @@ -1064,6 +1200,13 @@ public class WifiConfiguration implements Parcelable { } setDisableTime(in.readLong()); setNetworkSelectionBSSID(in.readString()); if (in.readInt() == CONNECT_CHOICE_EXISTS) { setConnectChoice(in.readString()); setConnectChoiceTimestamp(in.readLong()); } else { setConnectChoice(null); setConnectChoiceTimestamp(INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP); } } } Loading Loading @@ -1183,7 +1326,11 @@ public class WifiConfiguration implements Parcelable { } } } if (mNetworkSelectionStatus.getConnectChoice() != null) { sbuf.append(" connect choice: ").append(mNetworkSelectionStatus.getConnectChoice()); sbuf.append(" connect choice set time: ").append(mNetworkSelectionStatus .getConnectChoiceTimestamp()); } if (this.numAssociation > 0) { sbuf.append(" numAssociation ").append(this.numAssociation).append("\n"); Loading Loading @@ -1335,16 +1482,7 @@ public class WifiConfiguration implements Parcelable { sbuf.append('\n'); } } if (this.connectChoices != null) { for(String key : this.connectChoices.keySet()) { Integer choice = this.connectChoices.get(key); if (choice != null) { sbuf.append(" choice: ").append(key); sbuf.append(" = ").append(choice); sbuf.append('\n'); } } } sbuf.append("triggeredLow: ").append(this.numUserTriggeredWifiDisableLowRSSI); sbuf.append(" triggeredBad: ").append(this.numUserTriggeredWifiDisableBadRSSI); sbuf.append(" triggeredNotHigh: ").append(this.numUserTriggeredWifiDisableNotHighRSSI); Loading Loading @@ -1631,11 +1769,6 @@ public class WifiConfiguration implements Parcelable { mIpConfiguration = new IpConfiguration(source.mIpConfiguration); if ((source.connectChoices != null) && (source.connectChoices.size() > 0)) { connectChoices = new HashMap<String, Integer>(); connectChoices.putAll(source.connectChoices); } if ((source.linkedConfigurations != null) && (source.linkedConfigurations.size() > 0)) { linkedConfigurations = new HashMap<String, Integer>(); Loading Loading
wifi/java/android/net/wifi/WifiConfiguration.java +172 −39 Original line number Diff line number Diff line Loading @@ -703,24 +703,6 @@ public class WifiConfiguration implements Parcelable { */ public int numUserTriggeredJoinAttempts; /** * @hide * Connect choices * * remember the keys identifying the known WifiConfiguration over which this configuration * was preferred by user or a "WiFi Network Management app", that is, * a WifiManager.CONNECT_NETWORK or SELECT_NETWORK was received while this configuration * was visible to the user: * configKey is : "SSID"-WEP-WPA_PSK-WPA_EAP * * The integer represents the configuration's RSSI at that time (useful?) * * The overall auto-join algorithm make use of past connect choice so as to sort configuration, * the exact algorithm still fluctuating as of 5/7/2014 * */ public HashMap<String, Integer> connectChoices; /** @hide * Boost given to RSSI on a home network for the purpose of calculating the score * This adds stickiness to home networks, as defined by: Loading Loading @@ -830,6 +812,16 @@ public class WifiConfiguration implements Parcelable { */ public static final long INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP = -1L; /** * This constant indicates the current configuration has connect choice set */ private static final int CONNECT_CHOICE_EXISTS = 1; /** * This constant indicates the current configuration does not have connect choice set */ private static final int CONNECT_CHOICE_NOT_EXISTS = -1; // fields for QualityNetwork Selection /** * Network selection status, should be in one of three status: enable, temporaily disabled Loading @@ -853,7 +845,128 @@ public class WifiConfiguration implements Parcelable { private int[] mNetworkSeclectionDisableCounter = new int[NETWORK_SELECTION_DISABLED_MAX]; /** * return current Quality network selection status in String (for debug purpose) * Connect Choice over this configuration * * When current wifi configuration is visible to the user but user explicitly choose to * connect to another network X, the another networks X's configure key will be stored here. * We will consider user has a preference of X over this network. And in the future, * network selection will always give X a higher preference over this configuration. * configKey is : "SSID"-WEP-WPA_PSK-WPA_EAP */ private String mConnectChoice; /** * The system timestamp when we records the connectChoice. This value is obtained from * System.currentTimeMillis */ private long mConnectChoiceTimestamp = INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP; /** * Used to cache the temporary candidate during the network selection procedure. It will be * kept updating once a new scan result has a higher score than current one */ private ScanResult mCandidate; /** * Used to cache the score of the current temporary candidate during the network * selection procedure. */ private int mCandidateScore; /** * Indicate whether this network is visible in latest Qualified Network Selection. This * means there is scan result found related to this Configuration and meet the minimum * requirement. The saved network need not join latest Qualified Network Selection. For * example, it is disabled. True means network is visible in latest Qualified Network * Selection and false means network is invisible */ private boolean mSeenInLastQualifiedNetworkSelection; /** * set whether this network is visible in latest Qualified Network Selection * @param seen value set to candidate */ public void setSeenInLastQualifiedNetworkSelection(boolean seen) { mSeenInLastQualifiedNetworkSelection = seen; } /** * get whether this network is visible in latest Qualified Network Selection * @return returns true -- network is visible in latest Qualified Network Selection * false -- network is invisible in latest Qualified Network Selection */ public boolean getSeenInLastQualifiedNetworkSelection() { return mSeenInLastQualifiedNetworkSelection; } /** * set the temporary candidate of current network selection procedure * @param scanCandidate {@link ScanResult} the candidate set to mCandidate */ public void setCandidate(ScanResult scanCandidate) { mCandidate = scanCandidate; } /** * get the temporary candidate of current network selection procedure * @return returns {@link ScanResult} temporary candidate of current network selection * procedure */ public ScanResult getCandidate() { return mCandidate; } /** * set the score of the temporary candidate of current network selection procedure * @param score value set to mCandidateScore */ public void setCandidateScore(int score) { mCandidateScore = score; } /** * get the score of the temporary candidate of current network selection procedure * @return returns score of the temporary candidate of current network selection procedure */ public int getCandidateScore() { return mCandidateScore; } /** * get user preferred choice over this configuration *@return returns configKey of user preferred choice over this configuration */ public String getConnectChoice() { return mConnectChoice; } /** * set user preferred choice over this configuration * @param newConnectChoice, the configKey of user preferred choice over this configuration */ public void setConnectChoice(String newConnectChoice) { mConnectChoice = newConnectChoice; } /** * get the timeStamp when user select a choice over this configuration * @return returns when current connectChoice is set (time from System.currentTimeMillis) */ public long getConnectChoiceTimestamp() { return mConnectChoiceTimestamp; } /** * set the timeStamp when user select a choice over this configuration * @param timeStamp, the timestamp set to connectChoiceTimestamp, expected timestamp should * be obtained from System.currentTimeMillis */ public void setConnectChoiceTimestamp(long timeStamp) { mConnectChoiceTimestamp = timeStamp; } /** * get current Quality network selection status * @return returns current Quality network selection status in String (for debug purpose) */ public String getNetworkStatusString() { return QUALITY_NETWORK_SELECTION_STATUS[mStatus]; Loading @@ -873,6 +986,7 @@ public class WifiConfiguration implements Parcelable { } } /** * get current network disable reason * @return current network disable reason in String (for debug purpose) */ public String getNetworkDisableReasonString() { Loading @@ -881,6 +995,7 @@ public class WifiConfiguration implements Parcelable { /** * get current network network selection status * @return return current network network selection status */ public int getNetworkSelectionStatus() { return mStatus; Loading @@ -900,12 +1015,14 @@ public class WifiConfiguration implements Parcelable { } /** * return whether current network is permanently disabled * @return returns whether current network is permanently disabled */ public boolean isNetworkPermanentlyDisabled() { return mStatus == NETWORK_SELECTION_PERMANENTLY_DISABLED; } /** * set current networ work selection status * @param status network selection status to set */ public void setNetworkSelectionStatus(int status) { Loading @@ -913,14 +1030,16 @@ public class WifiConfiguration implements Parcelable { mStatus = status; } } /** * @return current network's disable reason * @return returns current network's disable reason */ public int getNetworkSelectionDisableReason() { return mNetworkSelectionDisableReason; } /** * set Network disable reason * @param reason Network disable reason */ public void setNetworkSelectionDisableReason(int reason) { Loading @@ -930,12 +1049,17 @@ public class WifiConfiguration implements Parcelable { throw new IllegalArgumentException("Illegal reason value: " + reason); } } /** * @param reason whether current network is disabled by this reason * check whether network is disabled by this reason * @param reason a specific disable reason * @return true -- network is disabled for this reason * false -- network is not disabled for this reason */ public boolean isDisabledByReason(int reason) { return mNetworkSelectionDisableReason == reason; } /** * @param timeStamp Set when current network is disabled in millisecond since January 1, * 1970 00:00:00.0 UTC Loading @@ -945,7 +1069,7 @@ public class WifiConfiguration implements Parcelable { } /** * @return Get when current network is disabled in millisecond since January 1, * @return returns when current network is disabled in millisecond since January 1, * 1970 00:00:00.0 UTC */ public long getDisableTime() { Loading @@ -953,6 +1077,7 @@ public class WifiConfiguration implements Parcelable { } /** * get the disable counter of a specific reason * @param reason specific failure reason * @exception throw IllegalArgumentException for illegal input * @return counter number for specific error reason. Loading Loading @@ -991,6 +1116,7 @@ public class WifiConfiguration implements Parcelable { throw new IllegalArgumentException("Illegal reason value: " + reason); } } /** * clear the counter of a specific failure reason * @hide Loading @@ -1004,6 +1130,7 @@ public class WifiConfiguration implements Parcelable { throw new IllegalArgumentException("Illegal reason value: " + reason); } } /** * clear all the failure reason counters */ Loading Loading @@ -1042,6 +1169,8 @@ public class WifiConfiguration implements Parcelable { } mTemporarilyDisabledTimestamp = source.mTemporarilyDisabledTimestamp; mNetworkSelectionBSSID = source.mNetworkSelectionBSSID; setConnectChoice(source.getConnectChoice()); setConnectChoiceTimestamp(source.getConnectChoiceTimestamp()); } public void writeToParcel(Parcel dest) { Loading @@ -1053,6 +1182,13 @@ public class WifiConfiguration implements Parcelable { } dest.writeLong(getDisableTime()); dest.writeString(getNetworkSelectionBSSID()); if (getConnectChoice() != null) { dest.writeInt(CONNECT_CHOICE_EXISTS); dest.writeString(getConnectChoice()); dest.writeLong(getConnectChoiceTimestamp()); } else { dest.writeInt(CONNECT_CHOICE_NOT_EXISTS); } } public void readFromParcel(Parcel in) { Loading @@ -1064,6 +1200,13 @@ public class WifiConfiguration implements Parcelable { } setDisableTime(in.readLong()); setNetworkSelectionBSSID(in.readString()); if (in.readInt() == CONNECT_CHOICE_EXISTS) { setConnectChoice(in.readString()); setConnectChoiceTimestamp(in.readLong()); } else { setConnectChoice(null); setConnectChoiceTimestamp(INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP); } } } Loading Loading @@ -1183,7 +1326,11 @@ public class WifiConfiguration implements Parcelable { } } } if (mNetworkSelectionStatus.getConnectChoice() != null) { sbuf.append(" connect choice: ").append(mNetworkSelectionStatus.getConnectChoice()); sbuf.append(" connect choice set time: ").append(mNetworkSelectionStatus .getConnectChoiceTimestamp()); } if (this.numAssociation > 0) { sbuf.append(" numAssociation ").append(this.numAssociation).append("\n"); Loading Loading @@ -1335,16 +1482,7 @@ public class WifiConfiguration implements Parcelable { sbuf.append('\n'); } } if (this.connectChoices != null) { for(String key : this.connectChoices.keySet()) { Integer choice = this.connectChoices.get(key); if (choice != null) { sbuf.append(" choice: ").append(key); sbuf.append(" = ").append(choice); sbuf.append('\n'); } } } sbuf.append("triggeredLow: ").append(this.numUserTriggeredWifiDisableLowRSSI); sbuf.append(" triggeredBad: ").append(this.numUserTriggeredWifiDisableBadRSSI); sbuf.append(" triggeredNotHigh: ").append(this.numUserTriggeredWifiDisableNotHighRSSI); Loading Loading @@ -1631,11 +1769,6 @@ public class WifiConfiguration implements Parcelable { mIpConfiguration = new IpConfiguration(source.mIpConfiguration); if ((source.connectChoices != null) && (source.connectChoices.size() > 0)) { connectChoices = new HashMap<String, Integer>(); connectChoices.putAll(source.connectChoices); } if ((source.linkedConfigurations != null) && (source.linkedConfigurations.size() > 0)) { linkedConfigurations = new HashMap<String, Integer>(); Loading