Snap for 8626064 from 833a0b75b29a4daf945efd0a40d8d9326633024f to mainline-go-adservices-release
Change-Id: Ia0492ec17540e3c3d03010e89eeaac12f98c1665
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java
index 5913027..290cacf 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java
@@ -44,6 +44,7 @@
import com.googlecode.android_scripting.rpc.RpcOptional;
import com.googlecode.android_scripting.rpc.RpcParameter;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -896,6 +897,40 @@
}
/**
+ * Add filter "macAddress", "addressType", and "irk" to existing ScanFilter
+ *
+ * @param macAddress the macAddress to filter against
+ * @param addressType the type of macAddress to filter against
+ * @param irk IRK for address resolution in hex format
+ * @throws Exception
+ */
+ @Rpc(description =
+ "Add filter \"macAddress\", \"addressType\", and \"irk\" to existing ScanFilter")
+ public void bleSetScanFilterDeviceAddressTypeAndIrkHexString(
+ @RpcParameter(name = "macAddress") String macAddress,
+ @RpcParameter(name = "addressType") Integer addressType,
+ @RpcParameter(name = "irk") String irk
+ ) throws UnsupportedEncodingException {
+ mScanFilterBuilder.setDeviceAddress(macAddress, addressType, hexStringToByteArray(irk));
+ }
+
+ private static byte[] hexStringToByteArray(String s) {
+ if (s == null) {
+ throw new IllegalArgumentException("Hex String must not be null");
+ }
+ int len = s.length();
+ if ((len % 2) != 0 || len < 1) { // Multiple of 2 or empty
+ throw new IllegalArgumentException("Hex String must be an even number > 0");
+ }
+ byte[] data = new byte[len / 2];
+ for (int i = 0; i < len; i += 2) {
+ data[i / 2] = (byte) ((byte) (Character.digit(s.charAt(i), 16) << 4)
+ + (byte) Character.digit(s.charAt(i + 1), 16));
+ }
+ return data;
+ }
+
+ /**
* Add filter "manufacturereDataId and/or manufacturerData" to existing
* ScanFilter
* @param manufacturerDataId the manufacturer data id to filter against
diff --git a/Common/src/com/googlecode/android_scripting/facade/wifi/WifiAwareManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/wifi/WifiAwareManagerFacade.java
index c690a38..7586039 100644
--- a/Common/src/com/googlecode/android_scripting/facade/wifi/WifiAwareManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/wifi/WifiAwareManagerFacade.java
@@ -25,6 +25,7 @@
import android.net.NetworkSpecifier;
import android.net.wifi.RttManager;
import android.net.wifi.RttManager.RttResult;
+import android.net.wifi.WifiScanner;
import android.net.wifi.aware.AttachCallback;
import android.net.wifi.aware.ConfigRequest;
import android.net.wifi.aware.DiscoverySession;
@@ -47,6 +48,7 @@
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
+import com.android.modules.utils.build.SdkLevel;
import libcore.util.HexEncoding;
@@ -64,6 +66,7 @@
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
/**
* WifiAwareManager functions.
@@ -280,7 +283,11 @@
if (j.has("RangingEnabled")) {
builder.setRangingEnabled(j.getBoolean("RangingEnabled"));
}
-
+ if (SdkLevel.isAtLeastT() && j.has("InstantModeEnabled")) {
+ builder.setInstantCommunicationModeEnabled(true,
+ Objects.equals(j.getString("InstantModeEnabled"), "5G")
+ ? WifiScanner.WIFI_BAND_5_GHZ : WifiScanner.WIFI_BAND_24_GHZ);
+ }
return builder.build();
}
@@ -329,6 +336,11 @@
if (j.has("MaxDistanceMm")) {
builder.setMaxDistanceMm(j.getInt("MaxDistanceMm"));
}
+ if (SdkLevel.isAtLeastT() && j.has("InstantModeEnabled")) {
+ builder.setInstantCommunicationModeEnabled(true,
+ Objects.equals(j.getString("InstantModeEnabled"), "5G")
+ ? WifiScanner.WIFI_BAND_5_GHZ : WifiScanner.WIFI_BAND_24_GHZ);
+ }
return builder.build();
}