From 0ef17f16bd5b1c07e13d8000844c792311102253 Mon Sep 17 00:00:00 2001 From: Martin Brabham Date: Wed, 28 Jul 2021 13:54:10 -0700 Subject: [PATCH] Add implementation for IRK to parcelable functions. Bug: 194432570 Test: Manual test app; nRF connect Tag: #feature Change-Id: I54ac5e5f105d155a2d2fc826bf1f64cf34573ff9 Merged-In: I54ac5e5f105d155a2d2fc826bf1f64cf34573ff9 --- .../java/android/bluetooth/le/ScanFilter.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/core/java/android/bluetooth/le/ScanFilter.java b/core/java/android/bluetooth/le/ScanFilter.java index cb3bf297670f0..8ff018121ab08 100644 --- a/core/java/android/bluetooth/le/ScanFilter.java +++ b/core/java/android/bluetooth/le/ScanFilter.java @@ -168,6 +168,15 @@ public final class ScanFilter implements Parcelable { dest.writeByteArray(mManufacturerDataMask); } } + + // IRK + if (mDeviceAddress != null) { + dest.writeInt(mAddressType); + dest.writeInt(mIrk == null ? 0 : 1); + if (mIrk != null) { + dest.writeByteArray(mIrk); + } + } } /** @@ -187,8 +196,10 @@ public final class ScanFilter implements Parcelable { if (in.readInt() == 1) { builder.setDeviceName(in.readString()); } + String address = null; + // If we have a non-null address if (in.readInt() == 1) { - builder.setDeviceAddress(in.readString()); + address = in.readString(); } if (in.readInt() == 1) { ParcelUuid uuid = in.readParcelable(ParcelUuid.class.getClassLoader()); @@ -245,6 +256,17 @@ public final class ScanFilter implements Parcelable { } } + // IRK + if (address != null) { + final int addressType = in.readInt(); + if (in.readInt() == 1) { + final byte[] irk = new byte[16]; + in.readByteArray(irk); + builder.setDeviceAddress(address, addressType, irk); + } else { + builder.setDeviceAddress(address, addressType); + } + } return builder.build(); } };