diff options
author | 2024-02-05 17:22:48 +0000 | |
---|---|---|
committer | 2024-02-05 21:44:34 +0000 | |
commit | 53f11b30268748b69a2b289f0458e6d78b632b0f (patch) | |
tree | 19880c74ee2e6c488734c2d389037ae0d9ebc14f | |
parent | eccadb466f9d3fcfae1cb6d7b2d787697091df9b (diff) |
Add vendor data to ServiceDiscoveryInfo and
update the callback path.
Bug: 323894425
Bug: 296069900
Test: m
Change-Id: I68a0ea24bb07adc954565c637335922a2fae4913
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); }); } |