Wifi: Add AP wifi technology to ScanResult
This CL adds to ScanResult structure information about the Wifi technology. Bug: 143382822 Test: atest com.android.wifi.server Change-Id: Ibe1d30e2efc4693be22148443b26446b90d89179
This commit is contained in:
@@ -29786,6 +29786,7 @@ package android.net.wifi {
|
||||
|
||||
public class ScanResult implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method public int getWifiStandard();
|
||||
method public boolean is80211mcResponder();
|
||||
method public boolean isPasspointNetwork();
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
@@ -29796,6 +29797,11 @@ package android.net.wifi {
|
||||
field public static final int CHANNEL_WIDTH_80MHZ = 2; // 0x2
|
||||
field public static final int CHANNEL_WIDTH_80MHZ_PLUS_MHZ = 4; // 0x4
|
||||
field public String SSID;
|
||||
field public static final int WIFI_STANDARD_11AC = 5; // 0x5
|
||||
field public static final int WIFI_STANDARD_11AX = 6; // 0x6
|
||||
field public static final int WIFI_STANDARD_11N = 4; // 0x4
|
||||
field public static final int WIFI_STANDARD_LEGACY = 1; // 0x1
|
||||
field public static final int WIFI_STANDARD_UNKNOWN = 0; // 0x0
|
||||
field public String capabilities;
|
||||
field public int centerFreq0;
|
||||
field public int centerFreq1;
|
||||
@@ -29997,11 +30003,6 @@ package android.net.wifi {
|
||||
field public static final String FREQUENCY_UNITS = "MHz";
|
||||
field public static final String LINK_SPEED_UNITS = "Mbps";
|
||||
field public static final int LINK_SPEED_UNKNOWN = -1; // 0xffffffff
|
||||
field public static final int WIFI_STANDARD_11AC = 5; // 0x5
|
||||
field public static final int WIFI_STANDARD_11AX = 6; // 0x6
|
||||
field public static final int WIFI_STANDARD_11N = 4; // 0x4
|
||||
field public static final int WIFI_STANDARD_LEGACY = 1; // 0x1
|
||||
field public static final int WIFI_STANDARD_UNKNOWN = 0; // 0x0
|
||||
}
|
||||
|
||||
public class WifiManager {
|
||||
|
||||
@@ -16,11 +16,15 @@
|
||||
|
||||
package android.net.wifi;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.UnsupportedAppUsage;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -223,11 +227,86 @@ public class ScanResult implements Parcelable {
|
||||
*/
|
||||
public static final int CHANNEL_WIDTH_80MHZ_PLUS_MHZ = 4;
|
||||
|
||||
/**
|
||||
* AP Channel bandwidth; one of {@link #CHANNEL_WIDTH_20MHZ}, {@link #CHANNEL_WIDTH_40MHZ},
|
||||
* {@link #CHANNEL_WIDTH_80MHZ}, {@link #CHANNEL_WIDTH_160MHZ}
|
||||
* or {@link #CHANNEL_WIDTH_80MHZ_PLUS_MHZ}.
|
||||
*/
|
||||
/**
|
||||
* Wi-Fi unknown standard
|
||||
*/
|
||||
public static final int WIFI_STANDARD_UNKNOWN = 0;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11a/b/g
|
||||
*/
|
||||
public static final int WIFI_STANDARD_LEGACY = 1;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11n
|
||||
*/
|
||||
public static final int WIFI_STANDARD_11N = 4;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11ac
|
||||
*/
|
||||
public static final int WIFI_STANDARD_11AC = 5;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11ax
|
||||
*/
|
||||
public static final int WIFI_STANDARD_11AX = 6;
|
||||
|
||||
/** @hide */
|
||||
@IntDef(prefix = { "WIFI_STANDARD_" }, value = {
|
||||
WIFI_STANDARD_UNKNOWN,
|
||||
WIFI_STANDARD_LEGACY,
|
||||
WIFI_STANDARD_11N,
|
||||
WIFI_STANDARD_11AC,
|
||||
WIFI_STANDARD_11AX
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface WifiStandard{}
|
||||
|
||||
/**
|
||||
* AP wifi standard.
|
||||
*/
|
||||
private @WifiStandard int mWifiStandard;
|
||||
|
||||
/**
|
||||
* return the AP wifi standard.
|
||||
*/
|
||||
public @WifiStandard int getWifiStandard() {
|
||||
return mWifiStandard;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the AP wifi standard.
|
||||
* @hide
|
||||
*/
|
||||
public void setWifiStandard(@WifiStandard int standard) {
|
||||
mWifiStandard = standard;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert Wi-Fi standard to string
|
||||
*/
|
||||
private static @Nullable String wifiStandardToString(@WifiStandard int standard) {
|
||||
switch(standard) {
|
||||
case WIFI_STANDARD_LEGACY:
|
||||
return "legacy";
|
||||
case WIFI_STANDARD_11N:
|
||||
return "11n";
|
||||
case WIFI_STANDARD_11AC:
|
||||
return "11ac";
|
||||
case WIFI_STANDARD_11AX:
|
||||
return "11ax";
|
||||
case WIFI_STANDARD_UNKNOWN:
|
||||
return "unknown";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* AP Channel bandwidth; one of {@link #CHANNEL_WIDTH_20MHZ}, {@link #CHANNEL_WIDTH_40MHZ},
|
||||
* {@link #CHANNEL_WIDTH_80MHZ}, {@link #CHANNEL_WIDTH_160MHZ}
|
||||
* or {@link #CHANNEL_WIDTH_80MHZ_PLUS_MHZ}.
|
||||
*/
|
||||
public int channelWidth;
|
||||
|
||||
/**
|
||||
@@ -549,6 +628,7 @@ public class ScanResult implements Parcelable {
|
||||
this.carrierApEapType = UNSPECIFIED;
|
||||
this.carrierName = null;
|
||||
this.radioChainInfos = null;
|
||||
this.mWifiStandard = WIFI_STANDARD_UNKNOWN;
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@@ -571,6 +651,7 @@ public class ScanResult implements Parcelable {
|
||||
this.carrierApEapType = UNSPECIFIED;
|
||||
this.carrierName = null;
|
||||
this.radioChainInfos = null;
|
||||
this.mWifiStandard = WIFI_STANDARD_UNKNOWN;
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@@ -600,6 +681,7 @@ public class ScanResult implements Parcelable {
|
||||
this.carrierApEapType = UNSPECIFIED;
|
||||
this.carrierName = null;
|
||||
this.radioChainInfos = null;
|
||||
this.mWifiStandard = WIFI_STANDARD_UNKNOWN;
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@@ -641,6 +723,7 @@ public class ScanResult implements Parcelable {
|
||||
carrierApEapType = source.carrierApEapType;
|
||||
carrierName = source.carrierName;
|
||||
radioChainInfos = source.radioChainInfos;
|
||||
this.mWifiStandard = source.mWifiStandard;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -679,6 +762,7 @@ public class ScanResult implements Parcelable {
|
||||
sb.append(", ChannelBandwidth: ").append(channelWidth);
|
||||
sb.append(", centerFreq0: ").append(centerFreq0);
|
||||
sb.append(", centerFreq1: ").append(centerFreq1);
|
||||
sb.append(", standard: ").append(wifiStandardToString(mWifiStandard));
|
||||
sb.append(", 80211mcResponder: ");
|
||||
sb.append(((flags & FLAG_80211mc_RESPONDER) != 0) ? "is supported" : "is not supported");
|
||||
sb.append(", Carrier AP: ").append(isCarrierAp ? "yes" : "no");
|
||||
@@ -714,6 +798,7 @@ public class ScanResult implements Parcelable {
|
||||
dest.writeInt(channelWidth);
|
||||
dest.writeInt(centerFreq0);
|
||||
dest.writeInt(centerFreq1);
|
||||
dest.writeInt(mWifiStandard);
|
||||
dest.writeLong(seen);
|
||||
dest.writeInt(untrusted ? 1 : 0);
|
||||
dest.writeInt(numUsage);
|
||||
@@ -796,6 +881,7 @@ public class ScanResult implements Parcelable {
|
||||
fixed with flags below */
|
||||
);
|
||||
|
||||
sr.mWifiStandard = in.readInt();
|
||||
sr.seen = in.readLong();
|
||||
sr.untrusted = in.readInt() != 0;
|
||||
sr.numUsage = in.readInt();
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package android.net.wifi;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.IntRange;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
@@ -28,8 +27,6 @@ import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
@@ -98,46 +95,10 @@ public class WifiInfo implements Parcelable {
|
||||
*/
|
||||
private int mRssi;
|
||||
|
||||
/**
|
||||
* Wi-Fi unknown standard
|
||||
*/
|
||||
public static final int WIFI_STANDARD_UNKNOWN = 0;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11a/b/g
|
||||
*/
|
||||
public static final int WIFI_STANDARD_LEGACY = 1;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11n
|
||||
*/
|
||||
public static final int WIFI_STANDARD_11N = 4;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11ac
|
||||
*/
|
||||
public static final int WIFI_STANDARD_11AC = 5;
|
||||
|
||||
/**
|
||||
* Wi-Fi 802.11ax
|
||||
*/
|
||||
public static final int WIFI_STANDARD_11AX = 6;
|
||||
|
||||
/** @hide */
|
||||
@IntDef(prefix = { "WIFI_STANDARD_" }, value = {
|
||||
WIFI_STANDARD_UNKNOWN,
|
||||
WIFI_STANDARD_LEGACY,
|
||||
WIFI_STANDARD_11N,
|
||||
WIFI_STANDARD_11AC,
|
||||
WIFI_STANDARD_11AX
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface WifiStandard{}
|
||||
|
||||
/**
|
||||
* Wi-Fi standard for the connection
|
||||
*/
|
||||
private @WifiStandard int mWifiStandard;
|
||||
private @ScanResult.WifiStandard int mWifiStandard;
|
||||
|
||||
/**
|
||||
* The unit in which links speeds are expressed.
|
||||
@@ -422,7 +383,7 @@ public class WifiInfo implements Parcelable {
|
||||
* Sets the Wi-Fi standard
|
||||
* @hide
|
||||
*/
|
||||
public void setWifiStandard(@WifiStandard int wifiStandard) {
|
||||
public void setWifiStandard(@ScanResult.WifiStandard int wifiStandard) {
|
||||
mWifiStandard = wifiStandard;
|
||||
}
|
||||
|
||||
@@ -430,7 +391,7 @@ public class WifiInfo implements Parcelable {
|
||||
* Get connection Wi-Fi standard
|
||||
* @return the connection Wi-Fi standard
|
||||
*/
|
||||
public @WifiStandard int getWifiStandard() {
|
||||
public @ScanResult.WifiStandard int getWifiStandard() {
|
||||
return mWifiStandard;
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,8 @@ public class ScanResultTest {
|
||||
public static final int TEST_LEVEL = -56;
|
||||
public static final int TEST_FREQUENCY = 2412;
|
||||
public static final long TEST_TSF = 04660l;
|
||||
public static final @ScanResult.WifiStandard int TEST_WIFI_STANDARD =
|
||||
ScanResult.WIFI_STANDARD_11AC;
|
||||
|
||||
/**
|
||||
* Setup before tests.
|
||||
@@ -149,12 +151,14 @@ public class ScanResultTest {
|
||||
@Test
|
||||
public void verifyScanResultToStringWithoutRadioChainInfo() throws Exception {
|
||||
ScanResult scanResult = createScanResult();
|
||||
assertEquals("SSID: \"test_ssid\", BSSID: 04:ac:fe:45:34:10, capabilities: CCMP, " +
|
||||
"level: -56, frequency: 2412, timestamp: 2480, distance: 0(cm), distanceSd: 0(cm), " +
|
||||
"passpoint: no, ChannelBandwidth: 0, centerFreq0: 0, centerFreq1: 0, " +
|
||||
"80211mcResponder: is not supported, Carrier AP: no, " +
|
||||
"Carrier AP EAP Type: 0, Carrier name: null, " +
|
||||
"Radio Chain Infos: null", scanResult.toString());
|
||||
assertEquals("SSID: \"test_ssid\", BSSID: 04:ac:fe:45:34:10, capabilities: CCMP, "
|
||||
+ "level: -56, frequency: 2412, timestamp: 2480, "
|
||||
+ "distance: 0(cm), distanceSd: 0(cm), "
|
||||
+ "passpoint: no, ChannelBandwidth: 0, centerFreq0: 0, centerFreq1: 0, "
|
||||
+ "standard: 11ac, "
|
||||
+ "80211mcResponder: is not supported, Carrier AP: no, "
|
||||
+ "Carrier AP EAP Type: 0, Carrier name: null, "
|
||||
+ "Radio Chain Infos: null", scanResult.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,13 +174,15 @@ public class ScanResultTest {
|
||||
scanResult.radioChainInfos[1] = new ScanResult.RadioChainInfo();
|
||||
scanResult.radioChainInfos[1].id = 1;
|
||||
scanResult.radioChainInfos[1].level = -54;
|
||||
assertEquals("SSID: \"test_ssid\", BSSID: 04:ac:fe:45:34:10, capabilities: CCMP, " +
|
||||
"level: -56, frequency: 2412, timestamp: 2480, distance: 0(cm), distanceSd: 0(cm), " +
|
||||
"passpoint: no, ChannelBandwidth: 0, centerFreq0: 0, centerFreq1: 0, " +
|
||||
"80211mcResponder: is not supported, Carrier AP: no, " +
|
||||
"Carrier AP EAP Type: 0, Carrier name: null, " +
|
||||
"Radio Chain Infos: [RadioChainInfo: id=0, level=-45, " +
|
||||
"RadioChainInfo: id=1, level=-54]", scanResult.toString());
|
||||
assertEquals("SSID: \"test_ssid\", BSSID: 04:ac:fe:45:34:10, capabilities: CCMP, "
|
||||
+ "level: -56, frequency: 2412, timestamp: 2480, distance: 0(cm), "
|
||||
+ "distanceSd: 0(cm), "
|
||||
+ "passpoint: no, ChannelBandwidth: 0, centerFreq0: 0, centerFreq1: 0, "
|
||||
+ "standard: 11ac, "
|
||||
+ "80211mcResponder: is not supported, Carrier AP: no, "
|
||||
+ "Carrier AP EAP Type: 0, Carrier name: null, "
|
||||
+ "Radio Chain Infos: [RadioChainInfo: id=0, level=-45, "
|
||||
+ "RadioChainInfo: id=1, level=-54]", scanResult.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -197,6 +203,7 @@ public class ScanResultTest {
|
||||
result.level = TEST_LEVEL;
|
||||
result.frequency = TEST_FREQUENCY;
|
||||
result.timestamp = TEST_TSF;
|
||||
result.setWifiStandard(TEST_WIFI_STANDARD);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -207,6 +214,7 @@ public class ScanResultTest {
|
||||
assertEquals(expected.level, actual.level);
|
||||
assertEquals(expected.frequency, actual.frequency);
|
||||
assertEquals(expected.timestamp, actual.timestamp);
|
||||
assertEquals(expected.getWifiStandard(), actual.getWifiStandard());
|
||||
assertArrayEquals(expected.radioChainInfos, actual.radioChainInfos);
|
||||
assertArrayEquals(expected.informationElements, actual.informationElements);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ public class WifiInfoTest {
|
||||
private static final String TEST_PACKAGE_NAME = "com.test.example";
|
||||
private static final String TEST_FQDN = "test.com";
|
||||
private static final String TEST_PROVIDER_NAME = "test";
|
||||
private static final int TEST_WIFI_STANDARD = WifiInfo.WIFI_STANDARD_11AC;
|
||||
private static final int TEST_WIFI_STANDARD = ScanResult.WIFI_STANDARD_11AC;
|
||||
|
||||
/**
|
||||
* Verify parcel write/read with WifiInfo.
|
||||
|
||||
Reference in New Issue
Block a user