Loading framework/java/android/bluetooth/le/BluetoothLeUtils.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.UUID; /** /** * Helper class for Bluetooth LE utils. * 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()); } } } framework/java/android/bluetooth/le/ScanFilter.java +2 −4 Original line number Original line Diff line number Diff line Loading @@ -28,8 +28,6 @@ import android.os.Parcel; import android.os.ParcelUuid; import android.os.ParcelUuid; import android.os.Parcelable; import android.os.Parcelable; import com.android.internal.util.BitUtils; import java.util.Arrays; import java.util.Arrays; import java.util.List; import java.util.List; import java.util.Objects; 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. // Check if the uuid pattern matches the particular service uuid. private static boolean matchesServiceUuid(UUID uuid, UUID mask, UUID data) { 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. // Check if the solicitation uuid pattern matches the particular service solicitation uuid. private static boolean matchesServiceSolicitationUuid(UUID solicitationUuid, private static boolean matchesServiceSolicitationUuid(UUID solicitationUuid, UUID solicitationUuidMask, UUID data) { 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. // Check whether the data pattern matches the parsed data. Loading Loading
framework/java/android/bluetooth/le/BluetoothLeUtils.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.UUID; /** /** * Helper class for Bluetooth LE utils. * 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()); } } }
framework/java/android/bluetooth/le/ScanFilter.java +2 −4 Original line number Original line Diff line number Diff line Loading @@ -28,8 +28,6 @@ import android.os.Parcel; import android.os.ParcelUuid; import android.os.ParcelUuid; import android.os.Parcelable; import android.os.Parcelable; import com.android.internal.util.BitUtils; import java.util.Arrays; import java.util.Arrays; import java.util.List; import java.util.List; import java.util.Objects; 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. // Check if the uuid pattern matches the particular service uuid. private static boolean matchesServiceUuid(UUID uuid, UUID mask, UUID data) { 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. // Check if the solicitation uuid pattern matches the particular service solicitation uuid. private static boolean matchesServiceSolicitationUuid(UUID solicitationUuid, private static boolean matchesServiceSolicitationUuid(UUID solicitationUuid, UUID solicitationUuidMask, UUID data) { 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. // Check whether the data pattern matches the parsed data. Loading