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 Zheng/** 23738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * Wifi Channel 24738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * 25738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * @see ScanSettings 26738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * 27738803fee62a98f244250996380820c4923e7f7bYuhao Zheng * @hide 28738803fee62a98f244250996380820c4923e7f7bYuhao Zheng */ 29738803fee62a98f244250996380820c4923e7f7bYuhao Zhengpublic class WifiChannel implements Parcelable { 30738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 31738803fee62a98f244250996380820c4923e7f7bYuhao Zheng private static final int MIN_FREQ_MHZ = 2412; 32738803fee62a98f244250996380820c4923e7f7bYuhao Zheng private static final int MAX_FREQ_MHZ = 5825; 33738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 34738803fee62a98f244250996380820c4923e7f7bYuhao Zheng private static final int MIN_CHANNEL_NUM = 1; 35738803fee62a98f244250996380820c4923e7f7bYuhao Zheng private static final int MAX_CHANNEL_NUM = 196; 36738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 37738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** frequency */ 38738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public int freqMHz; 39738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 40738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** channel number */ 41738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public int channelNum; 42738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 43738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** is it a DFS channel? */ 44738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public boolean isDFS; 45738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 46738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** public constructor */ 47738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public WifiChannel() { } 48738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 49738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** check for validity */ 50738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public boolean isValid() { 51738803fee62a98f244250996380820c4923e7f7bYuhao Zheng if (freqMHz < MIN_FREQ_MHZ || freqMHz > MAX_FREQ_MHZ) return false; 52738803fee62a98f244250996380820c4923e7f7bYuhao Zheng if (channelNum < MIN_CHANNEL_NUM || channelNum > MAX_CHANNEL_NUM) return false; 53738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return true; 54738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 55738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 56738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** implement Parcelable interface */ 57738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 58738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public int describeContents() { 59738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return 0; 60738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 61738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 62738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** implement Parcelable interface */ 63738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 64738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public void writeToParcel(Parcel out, int flags) { 65738803fee62a98f244250996380820c4923e7f7bYuhao Zheng out.writeInt(freqMHz); 66738803fee62a98f244250996380820c4923e7f7bYuhao Zheng out.writeInt(channelNum); 67738803fee62a98f244250996380820c4923e7f7bYuhao Zheng out.writeInt(isDFS ? 1 : 0); 68738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 69738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 70738803fee62a98f244250996380820c4923e7f7bYuhao Zheng /** implement Parcelable interface */ 71738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public static final Parcelable.Creator<WifiChannel> CREATOR = 72738803fee62a98f244250996380820c4923e7f7bYuhao Zheng new Parcelable.Creator<WifiChannel>() { 73738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 74738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public WifiChannel createFromParcel(Parcel in) { 75738803fee62a98f244250996380820c4923e7f7bYuhao Zheng WifiChannel channel = new WifiChannel(); 76738803fee62a98f244250996380820c4923e7f7bYuhao Zheng channel.freqMHz = in.readInt(); 77738803fee62a98f244250996380820c4923e7f7bYuhao Zheng channel.channelNum = in.readInt(); 78738803fee62a98f244250996380820c4923e7f7bYuhao Zheng channel.isDFS = in.readInt() != 0; 79738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return channel; 80738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 81738803fee62a98f244250996380820c4923e7f7bYuhao Zheng 82738803fee62a98f244250996380820c4923e7f7bYuhao Zheng @Override 83738803fee62a98f244250996380820c4923e7f7bYuhao Zheng public WifiChannel[] newArray(int size) { 84738803fee62a98f244250996380820c4923e7f7bYuhao Zheng return new WifiChannel[size]; 85738803fee62a98f244250996380820c4923e7f7bYuhao Zheng } 86738803fee62a98f244250996380820c4923e7f7bYuhao Zheng }; 87738803fee62a98f244250996380820c4923e7f7bYuhao Zheng} 88