From dcd8a10153395a92e456f57799982c325b01b250 Mon Sep 17 00:00:00 2001 From: Shuibing Dai Date: Sat, 14 Jan 2023 23:11:29 -0800 Subject: Add codes for scan vendor ies support Bug: 258285219 Test: atest android.net.wifi Change-Id: Ie8e7b18de0dc8ce9ce2263e5cc62168e241a0fc9 --- .../android/net/wifi/nl80211/SingleScanSettings.java | 17 +++++++++++++++-- .../android/net/wifi/nl80211/WifiNl80211Manager.java | 5 +++++ 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'wifi/java') diff --git a/wifi/java/src/android/net/wifi/nl80211/SingleScanSettings.java b/wifi/java/src/android/net/wifi/nl80211/SingleScanSettings.java index 1d479fc14d29..4a821bbcd54d 100644 --- a/wifi/java/src/android/net/wifi/nl80211/SingleScanSettings.java +++ b/wifi/java/src/android/net/wifi/nl80211/SingleScanSettings.java @@ -21,6 +21,7 @@ import android.os.Parcelable; import android.util.Log; import java.util.ArrayList; +import java.util.Arrays; import java.util.Objects; /** @@ -35,6 +36,7 @@ public class SingleScanSettings implements Parcelable { public boolean enable6GhzRnr; public ArrayList channelSettings; public ArrayList hiddenNetworks; + public byte[] vendorIes; /** public constructor */ public SingleScanSettings() { } @@ -53,13 +55,15 @@ public class SingleScanSettings implements Parcelable { return scanType == settings.scanType && enable6GhzRnr == settings.enable6GhzRnr && channelSettings.equals(settings.channelSettings) - && hiddenNetworks.equals(settings.hiddenNetworks); + && hiddenNetworks.equals(settings.hiddenNetworks) + && Arrays.equals(vendorIes, settings.vendorIes); } /** override hash code */ @Override public int hashCode() { - return Objects.hash(scanType, channelSettings, hiddenNetworks, enable6GhzRnr); + return Objects.hash(scanType, channelSettings, hiddenNetworks, enable6GhzRnr, + Arrays.hashCode(vendorIes)); } @@ -88,6 +92,11 @@ public class SingleScanSettings implements Parcelable { out.writeBoolean(enable6GhzRnr); out.writeTypedList(channelSettings); out.writeTypedList(hiddenNetworks); + if (vendorIes == null) { + out.writeByteArray(new byte[0]); + } else { + out.writeByteArray(vendorIes); + } } /** implement Parcelable interface */ @@ -108,6 +117,10 @@ public class SingleScanSettings implements Parcelable { in.readTypedList(result.channelSettings, ChannelSettings.CREATOR); result.hiddenNetworks = new ArrayList(); in.readTypedList(result.hiddenNetworks, HiddenNetwork.CREATOR); + result.vendorIes = in.createByteArray(); + if (result.vendorIes == null) { + result.vendorIes = new byte[0]; + } if (in.dataAvail() != 0) { Log.e(TAG, "Found trailing data after parcel parsing."); } diff --git a/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java b/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java index 2ad57712e7b3..5fd362a64509 100644 --- a/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java +++ b/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java @@ -96,6 +96,10 @@ public class WifiNl80211Manager { public static final String SCANNING_PARAM_ENABLE_6GHZ_RNR = "android.net.wifi.nl80211.SCANNING_PARAM_ENABLE_6GHZ_RNR"; + // Extra scanning parameter used to add vendor IEs (byte[]). + public static final String EXTRA_SCANNING_PARAM_VENDOR_IES = + "android.net.wifi.nl80211.extra.SCANNING_PARAM_VENDOR_IES"; + private AlarmManager mAlarmManager; private Handler mEventHandler; @@ -1135,6 +1139,7 @@ public class WifiNl80211Manager { settings.hiddenNetworks = new ArrayList<>(); if (extraScanningParams != null) { settings.enable6GhzRnr = extraScanningParams.getBoolean(SCANNING_PARAM_ENABLE_6GHZ_RNR); + settings.vendorIes = extraScanningParams.getByteArray(EXTRA_SCANNING_PARAM_VENDOR_IES); } if (freqs != null) { -- cgit v1.2.3-59-g8ed1b