summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gabriel Biren <gbiren@google.com> 2024-02-05 17:22:48 +0000
committer Gabriel Biren <gbiren@google.com> 2024-02-05 21:44:34 +0000
commit53f11b30268748b69a2b289f0458e6d78b632b0f (patch)
tree19880c74ee2e6c488734c2d389037ae0d9ebc14f
parenteccadb466f9d3fcfae1cb6d7b2d787697091df9b (diff)
Add vendor data to ServiceDiscoveryInfo and
update the callback path. Bug: 323894425 Bug: 296069900 Test: m Change-Id: I68a0ea24bb07adc954565c637335922a2fae4913
-rw-r--r--framework/aidl-export/android/net/wifi/OuiKeyedData.aidl19
-rw-r--r--framework/api/system-current.txt4
-rw-r--r--framework/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl5
-rw-r--r--framework/java/android/net/wifi/aware/ServiceDiscoveryInfo.java31
-rw-r--r--framework/java/android/net/wifi/aware/WifiAwareManager.java10
5 files changed, 62 insertions, 7 deletions
diff --git a/framework/aidl-export/android/net/wifi/OuiKeyedData.aidl b/framework/aidl-export/android/net/wifi/OuiKeyedData.aidl
new file mode 100644
index 0000000000..802c5e7b36
--- /dev/null
+++ b/framework/aidl-export/android/net/wifi/OuiKeyedData.aidl
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2024, 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 OuiKeyedData;
diff --git a/framework/api/system-current.txt b/framework/api/system-current.txt
index 27a68b2288..18f7c7ba59 100644
--- a/framework/api/system-current.txt
+++ b/framework/api/system-current.txt
@@ -1458,6 +1458,10 @@ package android.net.wifi.aware {
method @FlaggedApi("com.android.wifi.flags.vendor_parcelable_parameters") @NonNull public android.net.wifi.aware.PublishConfig.Builder setVendorData(@NonNull java.util.List<android.net.wifi.OuiKeyedData>);
}
+ public final class ServiceDiscoveryInfo {
+ method @FlaggedApi("com.android.wifi.flags.vendor_parcelable_parameters") @NonNull public java.util.List<android.net.wifi.OuiKeyedData> getVendorData();
+ }
+
public final class SubscribeConfig implements android.os.Parcelable {
method @FlaggedApi("com.android.wifi.flags.vendor_parcelable_parameters") @NonNull public java.util.List<android.net.wifi.OuiKeyedData> getVendorData();
method public boolean isSuspendable();
diff --git a/framework/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl b/framework/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl
index 2ab88b3535..392ec6cc2e 100644
--- a/framework/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl
+++ b/framework/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl
@@ -17,6 +17,7 @@
package android.net.wifi.aware;
import android.net.wifi.aware.AwarePairingConfig;
+import android.net.wifi.OuiKeyedData;
/**
* Callback interface that WifiAwareManager implements
@@ -36,10 +37,10 @@ oneway interface IWifiAwareDiscoverySessionCallback
void onMatch(int peerId, in byte[] serviceSpecificInfo, in byte[] matchFilter,
int peerCipherSuite, in byte[] scid, String pairingAlias,
- in AwarePairingConfig pairingConfig);
+ in AwarePairingConfig pairingConfig, in OuiKeyedData[] vendorData);
void onMatchWithDistance(int peerId, in byte[] serviceSpecificInfo, in byte[] matchFilter,
int distanceMm, int peerCipherSuite, in byte[] scid, String pairingAlias,
- in AwarePairingConfig pairingConfig);
+ in AwarePairingConfig pairingConfig, in OuiKeyedData[] vendorData);
void onMessageSendSuccess(int messageId);
void onMessageSendFail(int messageId, int reason);
diff --git a/framework/java/android/net/wifi/aware/ServiceDiscoveryInfo.java b/framework/java/android/net/wifi/aware/ServiceDiscoveryInfo.java
index 48b9a2b0bf..d7a7dfccbd 100644
--- a/framework/java/android/net/wifi/aware/ServiceDiscoveryInfo.java
+++ b/framework/java/android/net/wifi/aware/ServiceDiscoveryInfo.java
@@ -16,9 +16,19 @@
package android.net.wifi.aware;
+import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.RequiresApi;
+import android.annotation.SystemApi;
+import android.net.wifi.OuiKeyedData;
+import android.os.Build;
+import com.android.modules.utils.build.SdkLevel;
+import com.android.wifi.flags.Flags;
+
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
/**
@@ -34,6 +44,7 @@ public final class ServiceDiscoveryInfo {
private final PeerHandle mPeerHandle;
private final String mPairingAlias;
private final AwarePairingConfig mPairingConfig;
+ private final List<OuiKeyedData> mVendorData;
/**
* @hide
@@ -41,7 +52,7 @@ public final class ServiceDiscoveryInfo {
public ServiceDiscoveryInfo(PeerHandle peerHandle, int peerCipherSuite,
@Nullable byte[] serviceSpecificInfo,
@NonNull List<byte[]> matchFilter, @Nullable byte[] scid, String pairingAlias,
- AwarePairingConfig pairingConfig) {
+ AwarePairingConfig pairingConfig, @Nullable OuiKeyedData[] vendorData) {
mServiceSpecificInfo = serviceSpecificInfo;
mMatchFilters = matchFilter;
mPeerCipherSuite = peerCipherSuite;
@@ -49,6 +60,7 @@ public final class ServiceDiscoveryInfo {
mPeerHandle = peerHandle;
mPairingAlias = pairingAlias;
mPairingConfig = pairingConfig;
+ mVendorData = vendorData != null ? Arrays.asList(vendorData) : Collections.emptyList();
}
/**
@@ -130,4 +142,21 @@ public final class ServiceDiscoveryInfo {
public AwarePairingConfig getPairingConfig() {
return mPairingConfig;
}
+
+ /**
+ * Get the vendor-provided configuration data, if it exists.
+ *
+ * @return Vendor configuration data, or empty list if it does not exist.
+ * @hide
+ */
+ @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
+ @FlaggedApi(Flags.FLAG_VENDOR_PARCELABLE_PARAMETERS)
+ @SystemApi
+ @NonNull
+ public List<OuiKeyedData> getVendorData() {
+ if (!SdkLevel.isAtLeastV()) {
+ throw new UnsupportedOperationException();
+ }
+ return mVendorData != null ? mVendorData : Collections.emptyList();
+ }
}
diff --git a/framework/java/android/net/wifi/aware/WifiAwareManager.java b/framework/java/android/net/wifi/aware/WifiAwareManager.java
index 74551f0d32..b58d4d771f 100644
--- a/framework/java/android/net/wifi/aware/WifiAwareManager.java
+++ b/framework/java/android/net/wifi/aware/WifiAwareManager.java
@@ -41,6 +41,7 @@ import android.net.NetworkSpecifier;
import android.net.wifi.IBooleanListener;
import android.net.wifi.IIntegerListener;
import android.net.wifi.IListListener;
+import android.net.wifi.OuiKeyedData;
import android.net.wifi.WifiManager;
import android.net.wifi.util.HexEncoding;
import android.os.Binder;
@@ -1068,7 +1069,7 @@ public class WifiAwareManager {
@Override
public void onMatch(int peerId, byte[] serviceSpecificInfo, byte[] matchFilter,
int peerCipherSuite, byte[] scid, String pairingAlias,
- AwarePairingConfig pairingConfig) {
+ AwarePairingConfig pairingConfig, @Nullable OuiKeyedData[] vendorData) {
if (VDBG) Log.v(TAG, "onMatch: peerId=" + peerId);
mHandler.post(() -> {
@@ -1078,7 +1079,7 @@ public class WifiAwareManager {
mOriginalCallback.onServiceDiscovered(
new ServiceDiscoveryInfo(new PeerHandle(peerId), peerCipherSuite,
serviceSpecificInfo, matchFilterList, scid, pairingAlias,
- pairingConfig));
+ pairingConfig, vendorData));
});
}
@@ -1098,7 +1099,7 @@ public class WifiAwareManager {
@Override
public void onMatchWithDistance(int peerId, byte[] serviceSpecificInfo, byte[] matchFilter,
int distanceMm, int peerCipherSuite, byte[] scid, String pairingAlias,
- AwarePairingConfig pairingConfig) {
+ AwarePairingConfig pairingConfig, @Nullable OuiKeyedData[] vendorData) {
if (VDBG) {
Log.v(TAG, "onMatchWithDistance: peerId=" + peerId + ", distanceMm=" + distanceMm);
}
@@ -1116,7 +1117,8 @@ public class WifiAwareManager {
matchFilterList,
scid,
pairingAlias,
- pairingConfig),
+ pairingConfig,
+ vendorData),
distanceMm);
});
}