WifiInfo.java revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.net.wifi; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.NetworkInfo.DetailedState; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.EnumMap; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Describes the state of any Wifi connection that is active or 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is in the process of being set up. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class WifiInfo implements Parcelable { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is the map described in the Javadoc comment above. The positions 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of the elements of the array must correspond to the ordinal values 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of <code>DetailedState</code>. 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final EnumMap<SupplicantState, DetailedState> stateMap = 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new EnumMap<SupplicantState, DetailedState>(SupplicantState.class); 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static { 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.DISCONNECTED, DetailedState.DISCONNECTED); 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.INACTIVE, DetailedState.IDLE); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.SCANNING, DetailedState.SCANNING); 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.ASSOCIATING, DetailedState.CONNECTING); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.ASSOCIATED, DetailedState.CONNECTING); 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.FOUR_WAY_HANDSHAKE, DetailedState.AUTHENTICATING); 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.GROUP_HANDSHAKE, DetailedState.AUTHENTICATING); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.COMPLETED, DetailedState.OBTAINING_IPADDR); 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.DORMANT, DetailedState.DISCONNECTED); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.UNINITIALIZED, DetailedState.IDLE); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stateMap.put(SupplicantState.INVALID, DetailedState.FAILED); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private SupplicantState mSupplicantState; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mBSSID; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mSSID; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mNetworkId; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mHiddenSSID; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Received Signal Strength Indicator */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mRssi; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Link speed in Mbps */ 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String LINK_SPEED_UNITS = "Mbps"; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mLinkSpeed; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mIpAddress; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mMacAddress; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project WifiInfo() { 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSSID = null; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBSSID = null; 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNetworkId = -1; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSupplicantState = SupplicantState.UNINITIALIZED; 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRssi = -9999; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mLinkSpeed = -1; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIpAddress = 0; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHiddenSSID = false; 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setSSID(String SSID) { 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSSID = SSID; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // network is considered not hidden by default 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHiddenSSID = false; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the service set identifier (SSID) of the current 802.11 network. 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the SSID is an ASCII string, it will be returned surrounded by double 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * quotation marks.Otherwise, it is returned as a string of hex digits. The 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SSID may be {@code null} if there is no network currently connected. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the SSID 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getSSID() { 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mSSID; 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setBSSID(String BSSID) { 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBSSID = BSSID; 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the basic service set identifier (BSSID) of the current access point. 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The BSSID may be {@code null} if there is no network currently connected. 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the BSSID, in the form of a six-byte MAC address: {@code XX:XX:XX:XX:XX:XX} 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getBSSID() { 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mBSSID; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the received signal strength indicator of the current 802.11 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * network. 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p><strong>This is not normalized, but should be!</strong></p> 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the RSSI, in the range ??? to ??? 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getRssi() { 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mRssi; 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setRssi(int rssi) { 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRssi = rssi; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the current link speed in {@link #LINK_SPEED_UNITS}. 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the link speed. 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #LINK_SPEED_UNITS 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getLinkSpeed() { 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mLinkSpeed; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setLinkSpeed(int linkSpeed) { 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mLinkSpeed = linkSpeed; 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Record the MAC address of the WLAN interface 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param macAddress the MAC address in {@code XX:XX:XX:XX:XX:XX} form 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setMacAddress(String macAddress) { 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mMacAddress = macAddress; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getMacAddress() { 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMacAddress; 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setNetworkId(int id) { 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNetworkId = id; 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Each configured network has a unique small integer ID, used to identify 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the network when performing operations on the supplicant. This method 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returns the ID for the currently connected network. 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the network ID, or -1 if there is no currently connected network 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getNetworkId() { 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mNetworkId; 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the detailed state of the supplicant's negotiation with an 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * access point, in the form of a {@link SupplicantState SupplicantState} object. 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the current {@link SupplicantState SupplicantState} 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public SupplicantState getSupplicantState() { 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mSupplicantState; 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setSupplicantState(SupplicantState state) { 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSupplicantState = state; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setIpAddress(int address) { 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIpAddress = address; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getIpAddress() { 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mIpAddress; 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return {@code true} if this network does not broadcast its SSID, so an 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SSID-specific probe request must be used for scans. 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getHiddenSSID() { 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mHiddenSSID; 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** {@hide} */ 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setHiddenSSID(boolean hiddenSSID) { 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHiddenSSID = hiddenSSID; 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Map a supplicant state into a fine-grained network connectivity state. 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param suppState the supplicant state 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the corresponding {@link DetailedState} 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static DetailedState getDetailedStateOf(SupplicantState suppState) { 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return stateMap.get(suppState); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the <code>SupplicantState</code> from the string name 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of the state. 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stateName the name of the state, as a <code>String</code> returned 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in an event sent by {@code wpa_supplicant}. 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setSupplicantState(String stateName) { 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSupplicantState = valueOf(stateName); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static SupplicantState valueOf(String stateName) { 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ("4WAY_HANDSHAKE".equalsIgnoreCase(stateName)) 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return SupplicantState.FOUR_WAY_HANDSHAKE; 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else { 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return SupplicantState.valueOf(stateName.toUpperCase()); 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IllegalArgumentException e) { 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return SupplicantState.INVALID; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StringBuffer sb = new StringBuffer(); 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String none = "<none>"; 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append("SSID: ").append(mSSID == null ? none : mSSID). 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append(", BSSID: ").append(mBSSID == null ? none : mBSSID). 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append(", MAC: ").append(mMacAddress == null ? none : mMacAddress). 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append(", Supplicant state: "). 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append(mSupplicantState == null ? none : mSupplicantState). 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append(", RSSI: ").append(mRssi). 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append(", Link speed: ").append(mLinkSpeed). 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project append(", Net ID: ").append(mNetworkId); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return sb.toString(); 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Implement the Parcelable interface {@hide} */ 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Implement the Parcelable interface {@hide} */ 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(mNetworkId); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(mRssi); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(mLinkSpeed); 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(mIpAddress); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(getSSID()); 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(mBSSID); 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(mMacAddress); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSupplicantState.writeToParcel(dest, flags); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Implement the Parcelable interface {@hide} */ 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<WifiInfo> CREATOR = 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Creator<WifiInfo>() { 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public WifiInfo createFromParcel(Parcel in) { 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project WifiInfo info = new WifiInfo(); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.setNetworkId(in.readInt()); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.setRssi(in.readInt()); 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.setLinkSpeed(in.readInt()); 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.setIpAddress(in.readInt()); 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.setSSID(in.readString()); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.mBSSID = in.readString(); 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.mMacAddress = in.readString(); 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.mSupplicantState = SupplicantState.CREATOR.createFromParcel(in); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return info; 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public WifiInfo[] newArray(int size) { 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new WifiInfo[size]; 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 282