Loading core/java/android/bluetooth/le/BluetoothLeUtils.java +18 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.UUID; /** * Helper class for Bluetooth LE utils. Loading Loading @@ -137,4 +138,21 @@ public class BluetoothLeUtils { } } /** * Compares two UUIDs with a UUID mask. * * @param data first {@link #UUID} to compare. * @param uuid second {@link #UUID} to compare. * @param mask mask {@link #UUID}. * @return true if both UUIDs are equals when masked, false otherwise. */ static boolean maskedEquals(UUID data, UUID uuid, UUID mask) { if (mask == null) { return Objects.equals(data, uuid); } return (data.getLeastSignificantBits() & mask.getLeastSignificantBits()) == (uuid.getLeastSignificantBits() & mask.getLeastSignificantBits()) && (data.getMostSignificantBits() & mask.getMostSignificantBits()) == (uuid.getMostSignificantBits() & mask.getMostSignificantBits()); } } core/java/android/bluetooth/le/ScanFilter.java +2 −4 Original line number Diff line number Diff line Loading @@ -28,8 +28,6 @@ import android.os.Parcel; import android.os.ParcelUuid; import android.os.Parcelable; import com.android.internal.util.BitUtils; import java.util.Arrays; import java.util.List; import java.util.Objects; Loading Loading @@ -448,7 +446,7 @@ public final class ScanFilter implements Parcelable { // Check if the uuid pattern matches the particular service uuid. private static boolean matchesServiceUuid(UUID uuid, UUID mask, UUID data) { return BitUtils.maskedEquals(data, uuid, mask); return BluetoothLeUtils.maskedEquals(data, uuid, mask); } /** Loading Loading @@ -478,7 +476,7 @@ public final class ScanFilter implements Parcelable { // Check if the solicitation uuid pattern matches the particular service solicitation uuid. private static boolean matchesServiceSolicitationUuid(UUID solicitationUuid, UUID solicitationUuidMask, UUID data) { return BitUtils.maskedEquals(data, solicitationUuid, solicitationUuidMask); return BluetoothLeUtils.maskedEquals(data, solicitationUuid, solicitationUuidMask); } // Check whether the data pattern matches the parsed data. Loading Loading
core/java/android/bluetooth/le/BluetoothLeUtils.java +18 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.UUID; /** * Helper class for Bluetooth LE utils. Loading Loading @@ -137,4 +138,21 @@ public class BluetoothLeUtils { } } /** * Compares two UUIDs with a UUID mask. * * @param data first {@link #UUID} to compare. * @param uuid second {@link #UUID} to compare. * @param mask mask {@link #UUID}. * @return true if both UUIDs are equals when masked, false otherwise. */ static boolean maskedEquals(UUID data, UUID uuid, UUID mask) { if (mask == null) { return Objects.equals(data, uuid); } return (data.getLeastSignificantBits() & mask.getLeastSignificantBits()) == (uuid.getLeastSignificantBits() & mask.getLeastSignificantBits()) && (data.getMostSignificantBits() & mask.getMostSignificantBits()) == (uuid.getMostSignificantBits() & mask.getMostSignificantBits()); } }
core/java/android/bluetooth/le/ScanFilter.java +2 −4 Original line number Diff line number Diff line Loading @@ -28,8 +28,6 @@ import android.os.Parcel; import android.os.ParcelUuid; import android.os.Parcelable; import com.android.internal.util.BitUtils; import java.util.Arrays; import java.util.List; import java.util.Objects; Loading Loading @@ -448,7 +446,7 @@ public final class ScanFilter implements Parcelable { // Check if the uuid pattern matches the particular service uuid. private static boolean matchesServiceUuid(UUID uuid, UUID mask, UUID data) { return BitUtils.maskedEquals(data, uuid, mask); return BluetoothLeUtils.maskedEquals(data, uuid, mask); } /** Loading Loading @@ -478,7 +476,7 @@ public final class ScanFilter implements Parcelable { // Check if the solicitation uuid pattern matches the particular service solicitation uuid. private static boolean matchesServiceSolicitationUuid(UUID solicitationUuid, UUID solicitationUuidMask, UUID data) { return BitUtils.maskedEquals(data, solicitationUuid, solicitationUuidMask); return BluetoothLeUtils.maskedEquals(data, solicitationUuid, solicitationUuidMask); } // Check whether the data pattern matches the parsed data. Loading