diff options
Diffstat (limited to 'wifi')
-rw-r--r-- | wifi/java/android/net/wifi/IWifiManager.aidl | 4 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiAdapter.aidl | 19 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiAdapter.java | 135 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiManager.java | 11 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiScanner.java | 11 |
5 files changed, 178 insertions, 2 deletions
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index e83eed7..22ba924 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -18,6 +18,7 @@ package android.net.wifi; import android.net.wifi.BatchedScanResult; import android.net.wifi.BatchedScanSettings; +import android.net.wifi.WifiAdapter; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.ScanSettings; @@ -25,6 +26,7 @@ import android.net.wifi.WifiChannel; import android.net.wifi.ScanResult; import android.net.DhcpInfo; + import android.os.Messenger; import android.os.WorkSource; @@ -35,6 +37,8 @@ import android.os.WorkSource; */ interface IWifiManager { + List<WifiAdapter> getAdaptors(); + List<WifiConfiguration> getConfiguredNetworks(); int addOrUpdateNetwork(in WifiConfiguration config); diff --git a/wifi/java/android/net/wifi/WifiAdapter.aidl b/wifi/java/android/net/wifi/WifiAdapter.aidl new file mode 100644 index 0000000..931da92 --- /dev/null +++ b/wifi/java/android/net/wifi/WifiAdapter.aidl @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2008, 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; + +parcelable WifiAdapter; diff --git a/wifi/java/android/net/wifi/WifiAdapter.java b/wifi/java/android/net/wifi/WifiAdapter.java new file mode 100644 index 0000000..f6ee730 --- /dev/null +++ b/wifi/java/android/net/wifi/WifiAdapter.java @@ -0,0 +1,135 @@ +/* + * 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; + +/** @hide */ +public class WifiAdapter implements Parcelable { + + /* Keep this list in sync with wifi_hal.h */ + public static final int WIFI_FEATURE_INFRA = 0x0001; // Basic infrastructure mode + public static final int WIFI_FEATURE_INFRA_5G = 0x0002; // Support for 5 GHz Band + public static final int WIFI_FEATURE_PASSPOINT = 0x0004; // Support for GAS/ANQP + public static final int WIFI_FEATURE_P2P = 0x0008; // Wifi-Direct + public static final int WIFI_FEATURE_MOBILE_HOTSPOT = 0x0010; // Soft AP + public static final int WIFI_FEATURE_SCANNER = 0x0020; // WifiScanner APIs + public static final int WIFI_FEATURE_NAN = 0x0040; // Neighbor Awareness Networking + public static final int WIFI_FEATURE_D2D_RTT = 0x0080; // Device-to-device RTT + public static final int WIFI_FEATURE_D2AP_RTT = 0x0100; // Device-to-AP RTT + public static final int WIFI_FEATURE_BATCH_SCAN = 0x0200; // Batched Scan (deprecated) + public static final int WIFI_FEATURE_PNO = 0x0400; // Preferred network offload + public static final int WIFI_FEATURE_ADDITIONAL_STA = 0x0800; // Support for two STAs + public static final int WIFI_FEATURE_TDLS = 0x1000; // Tunnel directed link setup + public static final int WIFI_FEATURE_TDLS_OFFCHANNEL = 0x2000; // Support for TDLS off channel + public static final int WIFI_FEATURE_EPR = 0x4000; // Enhanced power reporting + + private String name; + private int supportedFeatures; + + public WifiAdapter(String name, int supportedFeatures) { + this.name = name; + this.supportedFeatures = supportedFeatures; + } + + public String getName() { + return name; + } + + private int getSupportedFeatures() { + return supportedFeatures; + } + + private boolean isFeatureSupported(int feature) { + return (supportedFeatures & feature) == feature; + } + + public boolean isPasspointSupported() { + return isFeatureSupported(WIFI_FEATURE_PASSPOINT); + } + + public boolean isWifiDirectSupported() { + return isFeatureSupported(WIFI_FEATURE_P2P); + } + + public boolean isMobileHotstpoSupported() { + return isFeatureSupported(WIFI_FEATURE_MOBILE_HOTSPOT); + } + + public boolean isWifiScannerSupported() { + return isFeatureSupported(WIFI_FEATURE_SCANNER); + } + + public boolean isNanSupported() { + return isFeatureSupported(WIFI_FEATURE_NAN); + } + + public boolean isDeviceToDeviceRttSupported() { + return isFeatureSupported(WIFI_FEATURE_D2D_RTT); + } + + public boolean isDeviceToApRttSupported() { + return isFeatureSupported(WIFI_FEATURE_D2AP_RTT); + } + + public boolean isPreferredNetworkOffloadSupported() { + return isFeatureSupported(WIFI_FEATURE_PNO); + } + + public boolean isAdditionalStaSupported() { + return isFeatureSupported(WIFI_FEATURE_ADDITIONAL_STA); + } + + public boolean isTdlsSupported() { + return isFeatureSupported(WIFI_FEATURE_TDLS); + } + + public boolean isOffChannelTdlsSupported() { + return isFeatureSupported(WIFI_FEATURE_TDLS_OFFCHANNEL); + } + + 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]; + } + }; +} diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index e99ea35..f9a9e7d 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -568,6 +568,17 @@ public class WifiManager { } /** + * @hide + */ + public List<WifiAdapter> getAdaptors() { + try { + return mService.getAdaptors(); + } catch (RemoteException e) { + return null; + } + } + + /** * Return a list of all the networks configured in the supplicant. * Not all fields of WifiConfiguration are returned. Only the following * fields are filled in: diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java index 21b700d..f3294bb 100644 --- a/wifi/java/android/net/wifi/WifiScanner.java +++ b/wifi/java/android/net/wifi/WifiScanner.java @@ -16,6 +16,7 @@ package android.net.wifi; +import android.annotation.SystemApi; import android.content.Context; import android.os.Handler; import android.os.HandlerThread; @@ -42,6 +43,7 @@ import java.util.concurrent.CountDownLatch; * .WIFI_SCANNING_SERVICE)}. * @hide */ +@SystemApi public class WifiScanner { /** no band specified; use channel list instead */ @@ -61,7 +63,7 @@ public class WifiScanner { public static final int WIFI_BAND_BOTH_WITH_DFS = 7; /* both bands with DFS channels */ /** Minimum supported scanning period */ - public static final int MIN_SCAN_PERIOD_MS = 2000; /* minimum supported period */ + public static final int MIN_SCAN_PERIOD_MS = 1000; /* minimum supported period */ /** Maximum supported scanning period */ public static final int MAX_SCAN_PERIOD_MS = 1024000; /* maximum supported period */ @@ -78,6 +80,7 @@ public class WifiScanner { * Generic action callback invocation interface * @hide */ + @SystemApi public static interface ActionListener { public void onSuccess(); public void onFailure(int reason, String description); @@ -138,7 +141,7 @@ public class WifiScanner { public int band; /** list of channels; used when band is set to WIFI_BAND_UNSPECIFIED */ public ChannelSpec[] channels; - /** period of background scan; in millisecond */ + /** period of background scan; in millisecond, 0 => single shot scan */ public int periodInMs; /** must have a valid REPORT_EVENT value */ public int reportEvents; @@ -267,6 +270,7 @@ public class WifiScanner { /** @hide */ public void scan(ScanSettings settings, ScanListener listener) { validateChannel(); + settings.periodInMs = 0; sAsyncChannel.sendMessage(CMD_SCAN, 0, putListener(listener), settings); } @@ -313,6 +317,7 @@ public class WifiScanner { } /** @hide */ + @SystemApi public static class WifiChangeSettings implements Parcelable { public int rssiSampleSize; /* sample size for RSSI averaging */ public int lostApSampleSize; /* samples to confirm AP's loss */ @@ -443,6 +448,7 @@ public class WifiScanner { } /** @hide */ + @SystemApi public void configureWifiChange(WifiChangeSettings settings) { validateChannel(); sAsyncChannel.sendMessage(CMD_CONFIGURE_WIFI_CHANGE, 0, 0, settings); @@ -457,6 +463,7 @@ public class WifiScanner { } /** @hide */ + @SystemApi public static class HotlistSettings implements Parcelable { public HotspotInfo[] hotspotInfos; public int apLostThreshold; |