From 7aad3c84ed96afee5d092727ff86587489c5e0e3 Mon Sep 17 00:00:00 2001 From: Ahmed ElArabawy Date: Wed, 28 Aug 2019 17:47:28 -0700 Subject: [PATCH] Wifi: Settings to have access to Wifi technology This CL adds to WifiInfo structure information about the Wifi technology. This makes it available to Settings app to use to present in user interface. Bug: 138634524 Bug: 140168755 Test: atest com.android.wifi.server Change-Id: I8aae8e8928462be7729c85fc15e0e7bdd97c1e6e --- api/current.txt | 6 ++ .../android/settingslib/wifi/WifiUtils.java | 1 + wifi/java/android/net/wifi/WifiInfo.java | 66 ++++++++++++++++++- .../src/android/net/wifi/WifiInfoTest.java | 3 + 4 files changed, 75 insertions(+), 1 deletion(-) diff --git a/api/current.txt b/api/current.txt index 71dc58b700214..bff20da9c6035 100644 --- a/api/current.txt +++ b/api/current.txt @@ -29975,10 +29975,16 @@ package android.net.wifi { method public String getSSID(); method public android.net.wifi.SupplicantState getSupplicantState(); method @IntRange(from=0xffffffff) public int getTxLinkSpeedMbps(); + method public int getWifiTechnology(); method public void writeToParcel(android.os.Parcel, int); 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_TECHNOLOGY_11AC = 5; // 0x5 + field public static final int WIFI_TECHNOLOGY_11AX = 6; // 0x6 + field public static final int WIFI_TECHNOLOGY_11N = 4; // 0x4 + field public static final int WIFI_TECHNOLOGY_LEGACY = 1; // 0x1 + field public static final int WIFI_TECHNOLOGY_UNKNOWN = 0; // 0x0 } public class WifiManager { diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java index 4e6c005457c0e..658a0b59622c2 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java @@ -93,6 +93,7 @@ public class WifiUtils { if (bssid != null) { visibility.append(" ").append(bssid); } + visibility.append(" technology = ").append(info.getWifiTechnology()); visibility.append(" rssi=").append(info.getRssi()); visibility.append(" "); visibility.append(" score=").append(info.score); diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 0b557942c87bf..62ba95dc806bb 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -16,6 +16,7 @@ package android.net.wifi; +import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.Nullable; import android.annotation.SystemApi; @@ -27,6 +28,8 @@ 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; @@ -34,7 +37,7 @@ import java.util.EnumMap; import java.util.Locale; /** - * Describes the state of any Wifi connection that is active or + * Describes the state of any Wi-Fi connection that is active or * is in the process of being set up. */ public class WifiInfo implements Parcelable { @@ -95,6 +98,47 @@ public class WifiInfo implements Parcelable { */ private int mRssi; + /** + * Wi-Fi unknown technology + */ + public static final int WIFI_TECHNOLOGY_UNKNOWN = 0; + + /** + * Wi-Fi 802.11a/b/g + */ + public static final int WIFI_TECHNOLOGY_LEGACY = 1; + + /** + * Wi-Fi 802.11n + */ + public static final int WIFI_TECHNOLOGY_11N = 4; + + /** + * Wi-Fi 802.11ac + */ + public static final int WIFI_TECHNOLOGY_11AC = 5; + + /** + * Wi-Fi 802.11ax + */ + public static final int WIFI_TECHNOLOGY_11AX = 6; + + /** @hide */ + @IntDef(prefix = { "WIFI_TECHNOLOGY_" }, value = { + WIFI_TECHNOLOGY_UNKNOWN, + WIFI_TECHNOLOGY_LEGACY, + WIFI_TECHNOLOGY_11N, + WIFI_TECHNOLOGY_11AC, + WIFI_TECHNOLOGY_11AX + }) + @Retention(RetentionPolicy.SOURCE) + public @interface WifiTechnology{} + + /** + * Wi-Fi technology for the connection + */ + private @WifiTechnology int mWifiTechnology; + /** * The unit in which links speeds are expressed. */ @@ -286,6 +330,7 @@ public class WifiInfo implements Parcelable { txSuccessRate = source.txSuccessRate; rxSuccessRate = source.rxSuccessRate; score = source.score; + mWifiTechnology = source.mWifiTechnology; } } @@ -373,6 +418,22 @@ public class WifiInfo implements Parcelable { mRssi = rssi; } + /** + * Sets the Wi-Fi technology + * @hide + */ + public void setWifiTechnology(@WifiTechnology int wifiTechnology) { + mWifiTechnology = wifiTechnology; + } + + /** + * Get connection Wi-Fi technology + * @return the connection Wi-Fi technology + */ + public @WifiTechnology int getWifiTechnology() { + return mWifiTechnology; + } + /** * Returns the current link speed in {@link #LINK_SPEED_UNITS}. * @return the link speed or {@link #LINK_SPEED_UNKNOWN} if link speed is unknown. @@ -679,6 +740,7 @@ public class WifiInfo implements Parcelable { .append(", MAC: ").append(mMacAddress == null ? none : mMacAddress) .append(", Supplicant state: ") .append(mSupplicantState == null ? none : mSupplicantState) + .append(", Wi-Fi technology: ").append(mWifiTechnology) .append(", RSSI: ").append(mRssi) .append(", Link speed: ").append(mLinkSpeed).append(LINK_SPEED_UNITS) .append(", Tx Link speed: ").append(mTxLinkSpeed).append(LINK_SPEED_UNITS) @@ -734,6 +796,7 @@ public class WifiInfo implements Parcelable { dest.writeString(mNetworkSuggestionOrSpecifierPackageName); dest.writeString(mFqdn); dest.writeString(mProviderFriendlyName); + dest.writeInt(mWifiTechnology); } /** Implement the Parcelable interface {@hide} */ @@ -775,6 +838,7 @@ public class WifiInfo implements Parcelable { info.mNetworkSuggestionOrSpecifierPackageName = in.readString(); info.mFqdn = in.readString(); info.mProviderFriendlyName = in.readString(); + info.mWifiTechnology = in.readInt(); return info; } diff --git a/wifi/tests/src/android/net/wifi/WifiInfoTest.java b/wifi/tests/src/android/net/wifi/WifiInfoTest.java index 0ce5d66cf4f70..ea08ea8e83338 100644 --- a/wifi/tests/src/android/net/wifi/WifiInfoTest.java +++ b/wifi/tests/src/android/net/wifi/WifiInfoTest.java @@ -38,6 +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_TECHNOLOGY = WifiInfo.WIFI_TECHNOLOGY_11AC; /** * Verify parcel write/read with WifiInfo. @@ -54,6 +55,7 @@ public class WifiInfoTest { writeWifiInfo.setFQDN(TEST_FQDN); writeWifiInfo.setProviderFriendlyName(TEST_PROVIDER_NAME); writeWifiInfo.setNetworkSuggestionOrSpecifierPackageName(TEST_PACKAGE_NAME); + writeWifiInfo.setWifiTechnology(TEST_WIFI_TECHNOLOGY); Parcel parcel = Parcel.obtain(); writeWifiInfo.writeToParcel(parcel, 0); @@ -72,5 +74,6 @@ public class WifiInfoTest { assertEquals(TEST_PACKAGE_NAME, readWifiInfo.getNetworkSuggestionOrSpecifierPackageName()); assertEquals(TEST_FQDN, readWifiInfo.getPasspointFqdn()); assertEquals(TEST_PROVIDER_NAME, readWifiInfo.getPasspointProviderFriendlyName()); + assertEquals(TEST_WIFI_TECHNOLOGY, readWifiInfo.getWifiTechnology()); } }