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 24c4a895b7094461c98101924cf096680bfb7856f1San Mehat#include "Property.h" 25c4a895b7094461c98101924cf096680bfb7856f1San Mehat 26c4a895b7094461c98101924cf096680bfb7856f1San Mehatclass PropertyManager; 27c4a895b7094461c98101924cf096680bfb7856f1San Mehat 2882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass KeyManagementMask { 2982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 3021e90f0e10b5a75e583b10799c0084ddab3433d6San Mehat static const uint32_t UNKNOWN = 0; 3121e90f0e10b5a75e583b10799c0084ddab3433d6San Mehat static const uint32_t NONE = 0x01; 3221e90f0e10b5a75e583b10799c0084ddab3433d6San Mehat static const uint32_t WPA_PSK = 0x02; 3321e90f0e10b5a75e583b10799c0084ddab3433d6San Mehat static const uint32_t WPA_EAP = 0x04; 3421e90f0e10b5a75e583b10799c0084ddab3433d6San Mehat static const uint32_t IEEE8021X = 0x08; 3582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t ALL = WPA_PSK | WPA_EAP | IEEE8021X; 3682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 3782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 3882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass SecurityProtocolMask { 3982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 4082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WPA = 0x01; 4182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t RSN = 0x02; 4282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 4382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 4482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass AuthenticationAlgorithmMask { 4582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 4682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t OPEN = 0x01; 4782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t SHARED = 0x02; 4882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t LEAP = 0x04; 4982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 5082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 513c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass PairwiseCiphersMask { 5282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 5382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t NONE = 0x00; 5482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t TKIP = 0x01; 5582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t CCMP = 0x02; 5682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 5782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 583c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass GroupCiphersMask { 5982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 6082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WEP40 = 0x01; 6182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t WEP104 = 0x02; 6282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t TKIP = 0x04; 6382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat static const uint32_t CCMP = 0x08; 6482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 6582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 6682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatclass Supplicant; 673c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass Controller; 683c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatclass WifiController; 6982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 70c4a895b7094461c98101924cf096680bfb7856f1San Mehatclass WifiNetwork { 71c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkIntegerProperty : public IntegerProperty { 72c4a895b7094461c98101924cf096680bfb7856f1San Mehat protected: 73c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetwork *mWn; 74c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 75c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkIntegerProperty(WifiNetwork *wn, const char *name, bool ro, 76c4a895b7094461c98101924cf096680bfb7856f1San Mehat int elements); 77c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkIntegerProperty() {} 78c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual int set(int idx, int value) = 0; 79c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual int get(int idx, int *buffer) = 0; 80c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 81c4a895b7094461c98101924cf096680bfb7856f1San Mehat friend class WifiNetwork::WifiNetworkIntegerProperty; 82c4a895b7094461c98101924cf096680bfb7856f1San Mehat 83c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkStringProperty : public StringProperty { 84c4a895b7094461c98101924cf096680bfb7856f1San Mehat protected: 85c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetwork *mWn; 86c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 87c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkStringProperty(WifiNetwork *wn, const char *name, bool ro, 88c4a895b7094461c98101924cf096680bfb7856f1San Mehat int elements); 89c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkStringProperty() {} 90c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual int set(int idx, const char *value) = 0; 91c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual int get(int idx, char *buffer, size_t max) = 0; 92c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 93c4a895b7094461c98101924cf096680bfb7856f1San Mehat friend class WifiNetwork::WifiNetworkStringProperty; 94c4a895b7094461c98101924cf096680bfb7856f1San Mehat 95c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkEnabledProperty : public WifiNetworkIntegerProperty { 96c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 97c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkEnabledProperty(WifiNetwork *wn); 98c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkEnabledProperty() {}; 99c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, int value); 100c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, int *buffer); 101c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 102c4a895b7094461c98101924cf096680bfb7856f1San Mehat 103c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkPriorityProperty : public WifiNetworkIntegerProperty { 104c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 105c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkPriorityProperty(WifiNetwork *wn); 106c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkPriorityProperty() {}; 107c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, int value); 108c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, int *buffer); 109c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 110c4a895b7094461c98101924cf096680bfb7856f1San Mehat 111c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkDefaultKeyIndexProperty : public WifiNetworkIntegerProperty { 112c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 113c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkDefaultKeyIndexProperty(WifiNetwork *wn); 114c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkDefaultKeyIndexProperty() {}; 115c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, int value); 116c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, int *buffer); 117c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 118c4a895b7094461c98101924cf096680bfb7856f1San Mehat 119c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkSsidProperty : public WifiNetworkStringProperty { 120c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 121c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkSsidProperty(WifiNetwork *wn); 122c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkSsidProperty() {}; 123c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 124c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 125c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 126c4a895b7094461c98101924cf096680bfb7856f1San Mehat 127c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkBssidProperty : public WifiNetworkStringProperty { 128c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 129c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkBssidProperty(WifiNetwork *wn); 130c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkBssidProperty() {}; 131c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 132c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 133c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 134c4a895b7094461c98101924cf096680bfb7856f1San Mehat 135c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkPskProperty : public WifiNetworkStringProperty { 136c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 137c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkPskProperty(WifiNetwork *wn); 138c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkPskProperty() {}; 139c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 140c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 141c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 142c4a895b7094461c98101924cf096680bfb7856f1San Mehat 143c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkKeyManagementProperty : public WifiNetworkStringProperty { 144c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 145c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkKeyManagementProperty(WifiNetwork *wn); 146c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkKeyManagementProperty() {}; 147c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 148c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 149c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 150c4a895b7094461c98101924cf096680bfb7856f1San Mehat 151c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkAuthAlgorithmsProperty : public WifiNetworkStringProperty { 152c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 153c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkAuthAlgorithmsProperty(WifiNetwork *wn); 154c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkAuthAlgorithmsProperty() {}; 155c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 156c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 157c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 158c4a895b7094461c98101924cf096680bfb7856f1San Mehat 159c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkProtocolsProperty : public WifiNetworkStringProperty { 160c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 161c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkProtocolsProperty(WifiNetwork *wn); 162c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkProtocolsProperty() {}; 163c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 164c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 165c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 166c4a895b7094461c98101924cf096680bfb7856f1San Mehat 167c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkWepKeyProperty : public WifiNetworkStringProperty { 168c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 169c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkWepKeyProperty(WifiNetwork *wn); 170c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkWepKeyProperty() {}; 171c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 172c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 173c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 174c4a895b7094461c98101924cf096680bfb7856f1San Mehat 175c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkPairwiseCiphersProperty : public WifiNetworkStringProperty { 176c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 177c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkPairwiseCiphersProperty(WifiNetwork *wn); 178c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkPairwiseCiphersProperty() {}; 179c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 180c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 181c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 182c4a895b7094461c98101924cf096680bfb7856f1San Mehat 183c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkGroupCiphersProperty : public WifiNetworkStringProperty { 184c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 185c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkGroupCiphersProperty(WifiNetwork *wn); 186c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkGroupCiphersProperty() {}; 187c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 188c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 189c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 190c4a895b7094461c98101924cf096680bfb7856f1San Mehat 191c4a895b7094461c98101924cf096680bfb7856f1San Mehat class WifiNetworkHiddenSsidProperty : public WifiNetworkStringProperty { 192c4a895b7094461c98101924cf096680bfb7856f1San Mehat public: 193c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkHiddenSsidProperty(WifiNetwork *wn); 194c4a895b7094461c98101924cf096680bfb7856f1San Mehat virtual ~WifiNetworkHiddenSsidProperty() {}; 195c4a895b7094461c98101924cf096680bfb7856f1San Mehat int set(int idx, const char *value); 196c4a895b7094461c98101924cf096680bfb7856f1San Mehat int get(int idx, char *buffer, size_t max); 197c4a895b7094461c98101924cf096680bfb7856f1San Mehat }; 1983c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 1993c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatprivate: 20082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat Supplicant *mSuppl; 2013c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiController *mController; 20282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 20382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 20482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Unique network id - normally provided by supplicant 20582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 20682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int mNetid; 20782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 20882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 20982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The networks' SSID. Can either be an ASCII string, 21082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * which must be enclosed in double quotation marks 21182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * (ie: "MyNetwork"), or a string of hex digits which 21282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * are not enclosed in quotes (ie: 01ab7893) 21382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 21482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mSsid; 21582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 21682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 21782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * When set, this entry should only be used 21882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * when associating with the AP having the specified 21982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * BSSID. The value is a string in the format of an 22082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Ethernet MAC address 22182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 22282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mBssid; 22382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 22482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 22582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Pre-shared key for use with WPA-PSK 22682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 22782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mPsk; 22882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 22982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 23082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Up to four WEP keys. Either in ASCII string enclosed in 23182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * double quotes, or a string of hex digits 23282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 23382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mWepKeys[4]; 23482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 23582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 23682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Default WEP key index, ranging from 0 -> NUM_WEP_KEYS -1 23782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 23882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int mDefaultKeyIndex; 23982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 24082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 24182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * Priority determines the preference given to a network by 24282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * supplicant when choosing an access point with which 24382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * to associate 24482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 24582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int mPriority; 24682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 24782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 24882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * This is a network that does not broadcast it's SSID, so an 24982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * SSID-specific probe request must be used for scans. 25082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 25182a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat char *mHiddenSsid; 25282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 25382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 25482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of key management protocols supported by this configuration. 25582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 256c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t mKeyManagement; 25782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 25882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 25982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of security protocols supported by this configuration. 26082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 261c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t mProtocols; 26282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 26382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 26482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of authentication protocols supported by this configuration. 26582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 266c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t mAuthAlgorithms; 26782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 26882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 26982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of pairwise ciphers for WPA supported by this configuration. 27082a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 271c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t mPairwiseCiphers; 27282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 27382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat /* 27482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat * The set of group ciphers for WPA supported by this configuration. 27582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat */ 276c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t mGroupCiphers; 27782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 2783c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat /* 2793c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat * Set if this Network is enabled 2803c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat */ 2813c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat bool mEnabled; 2823c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 283c4a895b7094461c98101924cf096680bfb7856f1San Mehat char *mPropNamespace; 284c4a895b7094461c98101924cf096680bfb7856f1San Mehat struct { 285c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkEnabledProperty *propEnabled; 286c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkSsidProperty *propSsid; 287c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkBssidProperty *propBssid; 288c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkPskProperty *propPsk; 289c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkWepKeyProperty *propWepKey; 290c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkDefaultKeyIndexProperty *propDefKeyIdx; 291c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkPriorityProperty *propPriority; 292c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkKeyManagementProperty *propKeyManagement; 293c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkProtocolsProperty *propProtocols; 294c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkAuthAlgorithmsProperty *propAuthAlgorithms; 295c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkPairwiseCiphersProperty *propPairwiseCiphers; 296c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkGroupCiphersProperty *propGroupCiphers; 297c4a895b7094461c98101924cf096680bfb7856f1San Mehat WifiNetworkHiddenSsidProperty *propHiddenSsid; 298c4a895b7094461c98101924cf096680bfb7856f1San Mehat } mStaticProperties; 2993c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehatprivate: 3003c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork(); 3013c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 30282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehatpublic: 3033c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork(WifiController *c, Supplicant *suppl, int networkId); 3043c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork(WifiController *c, Supplicant *suppl, const char *data); 3053c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 30682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat virtual ~WifiNetwork(); 30782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 3083c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat WifiNetwork *clone(); 309c4a895b7094461c98101924cf096680bfb7856f1San Mehat int attachProperties(PropertyManager *pm, const char *nsName); 310c4a895b7094461c98101924cf096680bfb7856f1San Mehat int detachProperties(PropertyManager *pm, const char *nsName); 3113c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 31282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int getNetworkId() { return mNetid; } 31382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getSsid() { return mSsid; } 31482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getBssid() { return mBssid; } 31582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getPsk() { return mPsk; } 31682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getWepKey(int idx) { return mWepKeys[idx]; } 31782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int getDefaultKeyIndex() { return mDefaultKeyIndex; } 31882a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int getPriority() { return mPriority; } 31982a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat const char *getHiddenSsid() { return mHiddenSsid; } 320c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t getKeyManagement() { return mKeyManagement; } 321c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t getProtocols() { return mProtocols; } 322c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t getAuthAlgorithms() { return mAuthAlgorithms; } 323c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t getPairwiseCiphers() { return mPairwiseCiphers; } 324c4a895b7094461c98101924cf096680bfb7856f1San Mehat uint32_t getGroupCiphers() { return mGroupCiphers; } 3253c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat bool getEnabled() { return mEnabled; } 3263c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat Controller *getController() { return (Controller *) mController; } 32782a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 3283c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setEnabled(bool enabled); 3293c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setSsid(const char *ssid); 3303c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setBssid(const char *bssid); 3313c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setPsk(const char *psk); 3323c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setWepKey(int idx, const char *key); 33382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setDefaultKeyIndex(int idx); 33482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat int setPriority(int pri); 3353c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int setHiddenSsid(const char *ssid); 336c4a895b7094461c98101924cf096680bfb7856f1San Mehat int setKeyManagement(uint32_t mask); 337c4a895b7094461c98101924cf096680bfb7856f1San Mehat int setProtocols(uint32_t mask); 338c4a895b7094461c98101924cf096680bfb7856f1San Mehat int setAuthAlgorithms(uint32_t mask); 339c4a895b7094461c98101924cf096680bfb7856f1San Mehat int setPairwiseCiphers(uint32_t mask); 340c4a895b7094461c98101924cf096680bfb7856f1San Mehat int setGroupCiphers(uint32_t mask); 3413c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat 3423c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat // XXX:Should this really be exposed?.. meh 3433c5a6f0bc8aefc4dacab8e95ba9017a7ac7d91f5San Mehat int refresh(); 344c4a895b7094461c98101924cf096680bfb7856f1San Mehat 345c4a895b7094461c98101924cf096680bfb7856f1San Mehatprivate: 346c4a895b7094461c98101924cf096680bfb7856f1San Mehat int parseKeyManagementMask(const char *buffer, uint32_t *mask); 347c4a895b7094461c98101924cf096680bfb7856f1San Mehat int parseProtocolsMask(const char *buffer, uint32_t *mask); 348c4a895b7094461c98101924cf096680bfb7856f1San Mehat int parseAuthAlgorithmsMask(const char *buffer, uint32_t *mask); 349c4a895b7094461c98101924cf096680bfb7856f1San Mehat int parsePairwiseCiphersMask(const char *buffer, uint32_t *mask); 350c4a895b7094461c98101924cf096680bfb7856f1San Mehat int parseGroupCiphersMask(const char *buffer, uint32_t *mask); 351c4a895b7094461c98101924cf096680bfb7856f1San Mehat void createProperties(); 35282a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat}; 35382a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 35482a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehattypedef android::List<WifiNetwork *> WifiNetworkCollection; 35582a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat 35682a2116e6b67db910bba22c4874e6ca5efd3eec0San Mehat#endif 357