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.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * From <code>defs.h</code> in <code>wpa_supplicant</code>. 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * These enumeration values are used to indicate the current wpa_supplicant 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * state. This is more fine-grained than most users will be interested in. 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In general, it is better to use 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.net.NetworkInfo.State NetworkInfo.State}. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Note, the order of these enum constants must match the numerical values of the 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * state constants in <code>defs.h</code> in <code>wpa_supplicant</code>. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic enum SupplicantState implements Parcelable { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state indicates that client is not associated, but is likely to 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * start looking for an access point. This state is entered when a 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connection is lost. 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DISCONNECTED, 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 42319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * Interface is disabled 43319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * <p/> 44319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * This state is entered if the network interface is disabled. 45319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * wpa_supplicant refuses any new operations that would 46319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * use the radio until the interface has been enabled. 47319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff */ 48319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff INTERFACE_DISABLED, 49319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff 50319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff /** 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inactive state (wpa_supplicant disabled). 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state is entered if there are no enabled networks in the 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuration. wpa_supplicant is not trying to associate with a new 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * network and external interaction (e.g., ctrl_iface call to add or 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * enable a network) is needed to start association. 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project INACTIVE, 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Scanning for a network. 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state is entered when wpa_supplicant starts scanning for a 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * network. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SCANNING, 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 69319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * Trying to authenticate with a BSS/SSID 70319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * <p/> 71319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * This state is entered when wpa_supplicant has found a suitable BSS 72319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * to authenticate with and the driver is configured to try to 73319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff * authenticate with this BSS. 74319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff */ 75319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff AUTHENTICATING, 76319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff 77319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff /** 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Trying to associate with a BSS/SSID. 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state is entered when wpa_supplicant has found a suitable BSS 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to associate with and the driver is configured to try to associate 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with this BSS in ap_scan=1 mode. When using ap_scan=2 mode, this 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * state is entered when the driver is configured to try to associate 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with a network using the configured SSID and security policy. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ASSOCIATING, 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Association completed. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state is entered when the driver reports that association has 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * been successfully completed with an AP. If IEEE 802.1X is used 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (with or without WPA/WPA2), wpa_supplicant remains in this state 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * until the IEEE 802.1X/EAPOL authentication has been completed. 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ASSOCIATED, 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WPA 4-Way Key Handshake in progress. 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state is entered when WPA/WPA2 4-Way Handshake is started. In 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * case of WPA-PSK, this happens when receiving the first EAPOL-Key 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * frame after association. In case of WPA-EAP, this state is entered 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * when the IEEE 802.1X/EAPOL authentication has been completed. 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FOUR_WAY_HANDSHAKE, 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WPA Group Key Handshake in progress. 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state is entered when 4-Way Key Handshake has been completed 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (i.e., when the supplicant sends out message 4/4) and when Group 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Key rekeying is started by the AP (i.e., when supplicant receives 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * message 1/2). 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project GROUP_HANDSHAKE, 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * All authentication completed. 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state is entered when the full authentication process is 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * completed. In case of WPA2, this happens when the 4-Way Handshake is 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * successfully completed. With WPA, this state is entered after the 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Group Key Handshake; with IEEE 802.1X (non-WPA) connection is 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * completed after dynamic keys are received (or if not used, after 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the EAP authentication has been completed). With static WEP keys and 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * plaintext connections, this state is entered when an association 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * has been completed. 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This state indicates that the supplicant has completed its 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * processing for the association phase and that data connection is 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * fully configured. Note, however, that there may not be any IP 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * address associated with the connection yet. Typically, a DHCP 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * request needs to be sent at this point to obtain an address. 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project COMPLETED, 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * An Android-added state that is reported when a client issues an 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * explicit DISCONNECT command. In such a case, the supplicant is 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not only dissociated from the current access point (as for the 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * DISCONNECTED state above), but it also does not attempt to connect 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to any access point until a RECONNECT or REASSOCIATE command 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is issued by the client. 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DORMANT, 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * No connection to wpa_supplicant. 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is an additional pseudo-state to handle the case where 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * wpa_supplicant is not running and/or we have not been able 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to establish a connection to it. 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project UNINITIALIZED, 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A pseudo-state that should normally never be seen. 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project INVALID; 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns {@code true} if the supplicant state is valid and {@code false} 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * otherwise. 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param state The supplicant state 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return {@code true} if the supplicant state is valid and {@code false} 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * otherwise. 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isValidState(SupplicantState state) { 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return state != UNINITIALIZED && state != INVALID; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 173319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff 17407573b32494acbabd21979d8b9584c1ed3f7a6adIrfan Sheriff /** Supplicant associating or authenticating is considered a handshake state {@hide} */ 17507573b32494acbabd21979d8b9584c1ed3f7a6adIrfan Sheriff public static boolean isHandshakeState(SupplicantState state) { 176319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff switch(state) { 177319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case AUTHENTICATING: 178319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case ASSOCIATING: 179319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case ASSOCIATED: 180319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case FOUR_WAY_HANDSHAKE: 181319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case GROUP_HANDSHAKE: 182319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff return true; 183319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case COMPLETED: 184319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case DISCONNECTED: 185319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case INTERFACE_DISABLED: 186319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case INACTIVE: 187319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case SCANNING: 188319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case DORMANT: 189319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case UNINITIALIZED: 190319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case INVALID: 191319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff return false; 192319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff default: 193319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff throw new IllegalArgumentException("Unknown supplicant state"); 194319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff } 195319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff } 196319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff 197ffadfb9ffdced62db215319d3edc7717802088fbVinit Deshapnde /** @hide */ 198ffadfb9ffdced62db215319d3edc7717802088fbVinit Deshapnde public static boolean isConnecting(SupplicantState state) { 1999b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff switch(state) { 200319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case AUTHENTICATING: 2019b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case ASSOCIATING: 2029b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case ASSOCIATED: 2039b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case FOUR_WAY_HANDSHAKE: 2049b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case GROUP_HANDSHAKE: 2059b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case COMPLETED: 2069b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff return true; 2079b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case DISCONNECTED: 208319da8c4c59be36fe2e221a0aba230ef6b77a14fIrfan Sheriff case INTERFACE_DISABLED: 2099b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case INACTIVE: 2109b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case SCANNING: 2119b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case DORMANT: 2129b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case UNINITIALIZED: 2139b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff case INVALID: 2149b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff return false; 2159b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff default: 2169b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff throw new IllegalArgumentException("Unknown supplicant state"); 2179b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff } 2189b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff } 2199b3710b253db932d560f2f08d62b6eb2d37e3c67Irfan Sheriff 220ffadfb9ffdced62db215319d3edc7717802088fbVinit Deshapnde /** @hide */ 221ffadfb9ffdced62db215319d3edc7717802088fbVinit Deshapnde public static boolean isDriverActive(SupplicantState state) { 2221523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff switch(state) { 2231523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case DISCONNECTED: 2241523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case DORMANT: 2251523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case INACTIVE: 2261523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case AUTHENTICATING: 2271523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case ASSOCIATING: 2281523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case ASSOCIATED: 2291523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case SCANNING: 2301523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case FOUR_WAY_HANDSHAKE: 2311523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case GROUP_HANDSHAKE: 2321523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case COMPLETED: 2331523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff return true; 2341523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case INTERFACE_DISABLED: 2351523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case UNINITIALIZED: 2361523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff case INVALID: 2371523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff return false; 2381523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff default: 2391523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff throw new IllegalArgumentException("Unknown supplicant state"); 2401523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff } 2411523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff } 2421523da22e91217e06a01610c202d5e52c2e9dfceIrfan Sheriff 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Implement the Parcelable interface {@hide} */ 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Implement the Parcelable interface {@hide} */ 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(name()); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Implement the Parcelable interface {@hide} */ 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<SupplicantState> CREATOR = 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Creator<SupplicantState>() { 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public SupplicantState createFromParcel(Parcel in) { 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return SupplicantState.valueOf(in.readString()); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public SupplicantState[] newArray(int size) { 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new SupplicantState[size]; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 266