1738803fee62a98f244250996380820c4923e7f7bYuhao Zheng/* 2738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * Copyright (c) 2014, The Android Open Source Project 3738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * 4738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * Licensed under the Apache License, Version 2.0 (the "License"); 5738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * you may not use this file except in compliance with the License. 6738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * You may obtain a copy of the License at 7738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * 8738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * http://www.apache.org/licenses/LICENSE-2.0 9738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * 10738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * Unless required by applicable law or agreed to in writing, software 11738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * distributed under the License is distributed on an "AS IS" BASIS, 12738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * See the License for the specific language governing permissions and 14738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * limitations under the License. 15738803fee62a98f244250996380820c4923e7f7bYuhao Zheng */ 16738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 17738803fee62a98f244250996380820c4923e7f7bYuhao Zhengpackage android.net.wifi; 18738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 19738803fee62a98f244250996380820c4923e7f7bYuhao Zhengimport android.os.Parcel; 20738803fee62a98f244250996380820c4923e7f7bYuhao Zhengimport android.os.Parcelable; 21738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 22738803fee62a98f244250996380820c4923e7f7bYuhao Zhengimport java.util.ArrayList; 23738803fee62a98f244250996380820c4923e7f7bYuhao Zhengimport java.util.Collection; 24738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 25738803fee62a98f244250996380820c4923e7f7bYuhao Zheng/** 26738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * Bundle of customized scan settings 27738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * 28738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * @see WifiManager#startCustomizedScan 29738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * 30738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * @hide 31738803fee62a98f244250996380820c4923e7f7bYuhao Zheng */ 32738803fee62a98f244250996380820c4923e7f7bYuhao Zhengpublic class ScanSettings implements Parcelable { 33738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 34738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** channel set to scan. this can be null or empty, indicating a full scan */ 35738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public Collection<WifiChannel> channelSet; 36738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 37738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** public constructor */ 38738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public ScanSettings() { } 39738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 40738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** copy constructor */ 41738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public ScanSettings(ScanSettings source) { 42738803fee62a98f244250996380820c4923e7f7bYuhao Zheng if (source.channelSet != null) 43738803fee62a98f244250996380820c4923e7f7bYuhao Zheng channelSet = new ArrayList<WifiChannel>(source.channelSet); 44738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 45738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 46738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** check for validity */ 47738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public boolean isValid() { 48738803fee62a98f244250996380820c4923e7f7bYuhao Zheng for (WifiChannel channel : channelSet) 49738803fee62a98f244250996380820c4923e7f7bYuhao Zheng if (!channel.isValid()) return false; 50738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return true; 51738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 52738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 53738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** implement Parcelable interface */ 54738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 55738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public int describeContents() { 56738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return 0; 57738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 58738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 59738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** implement Parcelable interface */ 60738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 61738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public void writeToParcel(Parcel out, int flags) { 62738803fee62a98f244250996380820c4923e7f7bYuhao Zheng out.writeInt(channelSet == null ? 0 : channelSet.size()); 63738803fee62a98f244250996380820c4923e7f7bYuhao Zheng if (channelSet != null) 64738803fee62a98f244250996380820c4923e7f7bYuhao Zheng for (WifiChannel channel : channelSet) channel.writeToParcel(out, flags); 65738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 66738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 67738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** implement Parcelable interface */ 68738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public static final Parcelable.Creator<ScanSettings> CREATOR = 69738803fee62a98f244250996380820c4923e7f7bYuhao Zheng new Parcelable.Creator<ScanSettings>() { 70738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 71738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public ScanSettings createFromParcel(Parcel in) { 72738803fee62a98f244250996380820c4923e7f7bYuhao Zheng ScanSettings settings = new ScanSettings(); 73738803fee62a98f244250996380820c4923e7f7bYuhao Zheng int size = in.readInt(); 74738803fee62a98f244250996380820c4923e7f7bYuhao Zheng if (size > 0) { 75738803fee62a98f244250996380820c4923e7f7bYuhao Zheng settings.channelSet = new ArrayList<WifiChannel>(size); 76738803fee62a98f244250996380820c4923e7f7bYuhao Zheng while (size-- > 0) 77738803fee62a98f244250996380820c4923e7f7bYuhao Zheng settings.channelSet.add(WifiChannel.CREATOR.createFromParcel(in)); 78738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 79738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return settings; 80738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 81738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 82738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 83738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public ScanSettings[] newArray(int size) { 84738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return new ScanSettings[size]; 85738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 86738803fee62a98f244250996380820c4923e7f7bYuhao Zheng }; 87738803fee62a98f244250996380820c4923e7f7bYuhao Zheng} 88