WifiNetwork.h revision 3c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5
182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat/* 282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Copyright (C) 2008 The Android Open Source Project 382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * 482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Licensed under the Apache License, Version 2.0 (the "License"); 582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * you may not use this file except in compliance with the License. 682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * You may obtain a copy of the License at 782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * 882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * http://www.apache.org/licenses/LICENSE-2.0 982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * 1082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Unless required by applicable law or agreed to in writing, software 1182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * distributed under the License is distributed on an "AS IS" BASIS, 1282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * See the License for the specific language governing permissions and 1482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * limitations under the License. 1582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 1682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 1782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat#ifndef _WIFI_NETWORK_H 1882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat#define _WIFI_NETWORK_H 1982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 2082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat#include <sys/types.h> 2182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 223c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat#include <utils/List.h> 2382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 2482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass KeyManagementMask { 2582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 2682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t NONE = 0; 2782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WPA_PSK = 0x01; 2882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WPA_EAP = 0x02; 2982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t IEEE8021X = 0x04; 3082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t ALL = WPA_PSK | WPA_EAP | IEEE8021X; 3182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 3282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 3382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass SecurityProtocolMask { 3482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 3582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WPA = 0x01; 3682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t RSN = 0x02; 3782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 3882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 3982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass AuthenticationAlgorithmMask { 4082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 4182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t OPEN = 0x01; 4282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t SHARED = 0x02; 4382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t LEAP = 0x04; 4482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 4582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 463c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass PairwiseCiphersMask { 4782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 4882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t NONE = 0x00; 4982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t TKIP = 0x01; 5082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t CCMP = 0x02; 5182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 5282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 533c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass GroupCiphersMask { 5482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 5582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WEP40 = 0x01; 5682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WEP104 = 0x02; 5782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t TKIP = 0x04; 5882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t CCMP = 0x08; 5982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 6082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 6182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass Supplicant; 623c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass InterfaceConfig; 633c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass Controller; 643c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass WifiController; 6582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 663c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat#include "IPropertyProvider.h" 673c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 683c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass WifiNetwork : public IPropertyProvider{ 693c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatpublic: 703c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat static const char *PropertyNames[]; 713c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 723c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatprivate: 7382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat Supplicant *mSuppl; 743c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat InterfaceConfig *mIfaceCfg; 753c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiController *mController; 7682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 7782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 7882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Unique network id - normally provided by supplicant 7982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 8082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int mNetid; 8182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 8282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 8382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The networks' SSID. Can either be an ASCII string, 8482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * which must be enclosed in double quotation marks 8582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * (ie: "MyNetwork"), or a string of hex digits which 8682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * are not enclosed in quotes (ie: 01ab7893) 8782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 8882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mSsid; 8982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 9082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 9182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * When set, this entry should only be used 9282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * when associating with the AP having the specified 9382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * BSSID. The value is a string in the format of an 9482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Ethernet MAC address 9582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 9682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mBssid; 9782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 9882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 9982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Pre-shared key for use with WPA-PSK 10082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 10182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mPsk; 10282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 10382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 10482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Up to four WEP keys. Either in ASCII string enclosed in 10582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * double quotes, or a string of hex digits 10682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 10782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mWepKeys[4]; 10882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 10982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 11082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Default WEP key index, ranging from 0 -> NUM_WEP_KEYS -1 11182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 11282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int mDefaultKeyIndex; 11382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 11482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 11582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Priority determines the preference given to a network by 11682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * supplicant when choosing an access point with which 11782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * to associate 11882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 11982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int mPriority; 12082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 12182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 12282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * This is a network that does not broadcast it's SSID, so an 12382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * SSID-specific probe request must be used for scans. 12482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 12582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mHiddenSsid; 12682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 12782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 12882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of key management protocols supported by this configuration. 12982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 13082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t mAllowedKeyManagement; 13182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 13282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 13382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of security protocols supported by this configuration. 13482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 13582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t mAllowedProtocols; 13682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 13782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 13882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of authentication protocols supported by this configuration. 13982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 14082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t mAllowedAuthAlgorithms; 14182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 14282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 14382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of pairwise ciphers for WPA supported by this configuration. 14482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 14582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t mAllowedPairwiseCiphers; 14682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 14782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 14882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of group ciphers for WPA supported by this configuration. 14982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 15082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t mAllowedGroupCiphers; 15182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 1523c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat /* 1533c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat * Set if this Network is enabled 1543c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat */ 1553c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat bool mEnabled; 1563c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 1573c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatprivate: 1583c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork(); 1593c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int registerProperties(); 1603c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int unregisterProperties(); 1613c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 16282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 1633c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork(WifiController *c, Supplicant *suppl, int networkId); 1643c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork(WifiController *c, Supplicant *suppl, const char *data); 1653c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 16682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat virtual ~WifiNetwork(); 16782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 1683c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork *clone(); 1693c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 17082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int getNetworkId() { return mNetid; } 17182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getSsid() { return mSsid; } 17282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getBssid() { return mBssid; } 17382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getPsk() { return mPsk; } 17482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getWepKey(int idx) { return mWepKeys[idx]; } 17582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int getDefaultKeyIndex() { return mDefaultKeyIndex; } 17682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int getPriority() { return mPriority; } 17782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getHiddenSsid() { return mHiddenSsid; } 17882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t getAllowedKeyManagement() { return mAllowedKeyManagement; } 17982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t getAllowedProtocols() { return mAllowedProtocols; } 18082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t getAllowedAuthAlgorithms() { return mAllowedAuthAlgorithms; } 18182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t getAllowedPairwiseCiphers() { return mAllowedPairwiseCiphers; } 18282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat uint32_t getAllowedGroupCiphers() { return mAllowedGroupCiphers; } 1833c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat bool getEnabled() { return mEnabled; } 1843c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat Controller *getController() { return (Controller *) mController; } 18582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 1863c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int set(const char *name, const char *value); 1873c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat const char *get(const char *name, char *buffer, size_t maxsize); 1883c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 1893c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat// InterfaceConfig *getIfaceCfg() { return mIfaceCfg; } 1903c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 1913c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setEnabled(bool enabled); 1923c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setSsid(const char *ssid); 1933c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setBssid(const char *bssid); 1943c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setPsk(const char *psk); 1953c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setWepKey(int idx, const char *key); 19682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setDefaultKeyIndex(int idx); 19782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setPriority(int pri); 1983c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setHiddenSsid(const char *ssid); 19982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setAllowedKeyManagement(uint32_t mask); 20082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setAllowedProtocols(uint32_t mask); 2013c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setAllowedAuthAlgorithms(uint32_t mask); 20282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setAllowedPairwiseCiphers(uint32_t mask); 20382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setAllowedGroupCiphers(uint32_t mask); 2043c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 2053c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat // XXX:Should this really be exposed?.. meh 2063c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int refresh(); 20782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 20882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 20982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehattypedef android::List<WifiNetwork *> WifiNetworkCollection; 21082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 21182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat#endif 212