diff --git a/api/system-current.txt b/api/system-current.txt index f25ec5b45ac28..60145a8242f6d 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7204,6 +7204,7 @@ package android.net.wifi { method public int getBandwidth(); method @Nullable public android.net.MacAddress getBssid(); method public int getFrequency(); + method public int getWifiStandard(); method public void writeToParcel(@NonNull android.os.Parcel, int); field public static final int CHANNEL_WIDTH_160MHZ = 6; // 0x6 field public static final int CHANNEL_WIDTH_20MHZ = 2; // 0x2 diff --git a/wifi/api/system-current.txt b/wifi/api/system-current.txt index c3e573c311c2c..ed5ed82e6adfe 100644 --- a/wifi/api/system-current.txt +++ b/wifi/api/system-current.txt @@ -292,6 +292,7 @@ package android.net.wifi { method public int getBandwidth(); method @Nullable public android.net.MacAddress getBssid(); method public int getFrequency(); + method public int getWifiStandard(); method public void writeToParcel(@NonNull android.os.Parcel, int); field public static final int CHANNEL_WIDTH_160MHZ = 6; // 0x6 field public static final int CHANNEL_WIDTH_20MHZ = 2; // 0x2 diff --git a/wifi/java/android/net/wifi/SoftApInfo.java b/wifi/java/android/net/wifi/SoftApInfo.java index 40981f7b0fb13..cf61f81e6d227 100644 --- a/wifi/java/android/net/wifi/SoftApInfo.java +++ b/wifi/java/android/net/wifi/SoftApInfo.java @@ -86,8 +86,6 @@ public final class SoftApInfo implements Parcelable { */ public static final int CHANNEL_WIDTH_160MHZ = 6; - - /** The frequency which AP resides on. */ private int mFrequency = 0; @@ -98,6 +96,11 @@ public final class SoftApInfo implements Parcelable { @Nullable private MacAddress mBssid; + /** + * The operational mode of the AP. + */ + private @WifiAnnotations.WifiStandard int mWifiStandard = ScanResult.WIFI_STANDARD_UNKNOWN; + /** * Get the frequency which AP resides on. */ @@ -162,6 +165,27 @@ public final class SoftApInfo implements Parcelable { mBssid = bssid; } + /** + * Set the operational mode of the AP. + * + * @param wifiStandard values from {@link ScanResult}'s {@code WIFI_STANDARD_} + * @hide + */ + public void setWifiStandard(@WifiAnnotations.WifiStandard int wifiStandard) { + mWifiStandard = wifiStandard; + } + + /** + * Get the operational mode of the AP. + * @return valid values from {@link ScanResult}'s {@code WIFI_STANDARD_} + */ + public @WifiAnnotations.WifiStandard int getWifiStandard() { + if (!SdkLevelUtil.isAtLeastS()) { + throw new UnsupportedOperationException(); + } + return mWifiStandard; + } + /** * @hide */ @@ -170,6 +194,7 @@ public final class SoftApInfo implements Parcelable { mFrequency = source.mFrequency; mBandwidth = source.mBandwidth; mBssid = source.mBssid; + mWifiStandard = source.mWifiStandard; } } @@ -191,6 +216,7 @@ public final class SoftApInfo implements Parcelable { dest.writeInt(mFrequency); dest.writeInt(mBandwidth); dest.writeParcelable(mBssid, flags); + dest.writeInt(mWifiStandard); } @NonNull @@ -201,6 +227,7 @@ public final class SoftApInfo implements Parcelable { info.mFrequency = in.readInt(); info.mBandwidth = in.readInt(); info.mBssid = in.readParcelable(MacAddress.class.getClassLoader()); + info.mWifiStandard = in.readInt(); return info; } @@ -215,8 +242,9 @@ public final class SoftApInfo implements Parcelable { StringBuilder sbuf = new StringBuilder(); sbuf.append("SoftApInfo{"); sbuf.append("bandwidth= ").append(mBandwidth); - sbuf.append(",frequency= ").append(mFrequency); + sbuf.append(", frequency= ").append(mFrequency); if (mBssid != null) sbuf.append(",bssid=").append(mBssid.toString()); + sbuf.append(", wifiStandard= ").append(mWifiStandard); sbuf.append("}"); return sbuf.toString(); } @@ -228,11 +256,12 @@ public final class SoftApInfo implements Parcelable { SoftApInfo softApInfo = (SoftApInfo) o; return mFrequency == softApInfo.mFrequency && mBandwidth == softApInfo.mBandwidth - && Objects.equals(mBssid, softApInfo.mBssid); + && Objects.equals(mBssid, softApInfo.mBssid) + && mWifiStandard == softApInfo.mWifiStandard; } @Override public int hashCode() { - return Objects.hash(mFrequency, mBandwidth, mBssid); + return Objects.hash(mFrequency, mBandwidth, mBssid, mWifiStandard); } } diff --git a/wifi/tests/src/android/net/wifi/SoftApInfoTest.java b/wifi/tests/src/android/net/wifi/SoftApInfoTest.java index 458a95494438c..2821c35f93473 100644 --- a/wifi/tests/src/android/net/wifi/SoftApInfoTest.java +++ b/wifi/tests/src/android/net/wifi/SoftApInfoTest.java @@ -17,6 +17,7 @@ package android.net.wifi; import android.net.MacAddress; +import android.net.wifi.util.SdkLevelUtil; import android.os.Parcel; import static org.junit.Assert.assertEquals; @@ -40,6 +41,7 @@ public class SoftApInfoTest { info.setFrequency(2412); info.setBandwidth(SoftApInfo.CHANNEL_WIDTH_20MHZ); info.setBssid(MacAddress.fromString("aa:bb:cc:dd:ee:ff")); + info.setWifiStandard(ScanResult.WIFI_STANDARD_LEGACY); SoftApInfo copiedInfo = new SoftApInfo(info); @@ -57,6 +59,7 @@ public class SoftApInfoTest { info.setFrequency(2412); info.setBandwidth(SoftApInfo.CHANNEL_WIDTH_20MHZ); info.setBssid(MacAddress.fromString("aa:bb:cc:dd:ee:ff")); + info.setWifiStandard(ScanResult.WIFI_STANDARD_LEGACY); Parcel parcelW = Parcel.obtain(); info.writeToParcel(parcelW, 0); @@ -72,4 +75,19 @@ public class SoftApInfoTest { assertEquals(info.hashCode(), fromParcel.hashCode()); } + + /** + * Verifies the initial value same as expected. + */ + @Test + public void testInitialValue() throws Exception { + SoftApInfo info = new SoftApInfo(); + assertEquals(info.getFrequency(), 0); + assertEquals(info.getBandwidth(), SoftApInfo.CHANNEL_WIDTH_INVALID); + if (SdkLevelUtil.isAtLeastS()) { + assertEquals(info.getBssid(), null); + assertEquals(info.getWifiStandard(), ScanResult.WIFI_STANDARD_UNKNOWN); + } + } + }