212 lines
6.6 KiB
Java
212 lines
6.6 KiB
Java
/*
|
|
* Copyright (C) 2014 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.net.wifi;
|
|
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
|
|
/**
|
|
* Represents local wifi adapter. Different devices have different kinds of
|
|
* wifi adapters; each with different capabilities. Use this class to find out
|
|
* which capabilites are supported by the wifi adapter on the device.
|
|
*/
|
|
public class WifiAdapter implements Parcelable {
|
|
|
|
/* Keep this list in sync with wifi_hal.h */
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_INFRA = 0x0001; // Basic infrastructure mode
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_INFRA_5G = 0x0002; // Support for 5 GHz Band
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_PASSPOINT = 0x0004; // Support for GAS/ANQP
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_P2P = 0x0008; // Wifi-Direct
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_MOBILE_HOTSPOT = 0x0010; // Soft AP
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_SCANNER = 0x0020; // WifiScanner APIs
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_NAN = 0x0040; // Neighbor Awareness Networking
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_D2D_RTT = 0x0080; // Device-to-device RTT
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_D2AP_RTT = 0x0100; // Device-to-AP RTT
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_BATCH_SCAN = 0x0200; // Batched Scan (deprecated)
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_PNO = 0x0400; // Preferred network offload
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_ADDITIONAL_STA = 0x0800; // Support for two STAs
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_TDLS = 0x1000; // Tunnel directed link setup
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_TDLS_OFFCHANNEL = 0x2000; // Support for TDLS off channel
|
|
/** @hide */
|
|
public static final int WIFI_FEATURE_EPR = 0x4000; // Enhanced power reporting
|
|
|
|
private String name;
|
|
private int supportedFeatures;
|
|
|
|
/** @hide */
|
|
public WifiAdapter(String name, int supportedFeatures) {
|
|
this.name = name;
|
|
this.supportedFeatures = supportedFeatures;
|
|
}
|
|
|
|
/**
|
|
* @return name of the adapter
|
|
*/
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
private int getSupportedFeatures() {
|
|
return supportedFeatures;
|
|
}
|
|
|
|
private boolean isFeatureSupported(int feature) {
|
|
return (supportedFeatures & feature) == feature;
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports 5 GHz band
|
|
*/
|
|
public boolean is5GHzBandSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_INFRA_5G);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports passpoint
|
|
*/
|
|
public boolean isPasspointSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_PASSPOINT);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports WifiP2pManager (Wi-Fi Direct)
|
|
*/
|
|
public boolean isP2pSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_P2P);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports portable Wi-Fi hotspot
|
|
*/
|
|
public boolean isPortableHotspotSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_MOBILE_HOTSPOT);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports WifiScanner APIs
|
|
*/
|
|
public boolean isWifiScannerSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_SCANNER);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports Neighbour Awareness Network APIs
|
|
* @hide
|
|
*/
|
|
public boolean isNanSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_NAN);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports Device-to-device RTT
|
|
*/
|
|
public boolean isDeviceToDeviceRttSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_D2D_RTT);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports Device-to-AP RTT
|
|
*/
|
|
public boolean isDeviceToApRttSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_D2AP_RTT);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports offloaded connectivity scan
|
|
*/
|
|
public boolean isPreferredNetworkOffloadSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_PNO);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports multiple simultaneous connections
|
|
* @hide
|
|
*/
|
|
public boolean isAdditionalStaSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_ADDITIONAL_STA);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports Tunnel Directed Link Setup
|
|
*/
|
|
public boolean isTdlsSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_TDLS);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports Off Channel Tunnel Directed Link Setup
|
|
*/
|
|
public boolean isOffChannelTdlsSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_TDLS_OFFCHANNEL);
|
|
}
|
|
|
|
/**
|
|
* @return true if this adapter supports advanced power/performance counters
|
|
*/
|
|
public boolean isEnhancedPowerReportingSupported() {
|
|
return isFeatureSupported(WIFI_FEATURE_EPR);
|
|
}
|
|
|
|
/* Parcelable implementation */
|
|
/**
|
|
* Implement the Parcelable interface
|
|
* {@hide}
|
|
*/
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Implement the Parcelable interface
|
|
* {@hide}
|
|
*/
|
|
public void writeToParcel(Parcel dest, int flags) {
|
|
dest.writeString(name);
|
|
dest.writeInt(supportedFeatures);
|
|
}
|
|
|
|
/**
|
|
* Implement the Parcelable interface
|
|
* {@hide}
|
|
*/
|
|
public static final Creator<WifiAdapter> CREATOR =
|
|
new Creator<WifiAdapter>() {
|
|
public WifiAdapter createFromParcel(Parcel in) {
|
|
WifiAdapter adaptor = new WifiAdapter(in.readString(), in.readInt());
|
|
return adaptor;
|
|
}
|
|
|
|
public WifiAdapter[] newArray(int size) {
|
|
return new WifiAdapter[size];
|
|
}
|
|
};
|
|
}
|