From 20bd9fc81e32cafc86f3972b182b65ebdf5b1999 Mon Sep 17 00:00:00 2001 From: Eugene Susla Date: Thu, 27 Apr 2017 14:34:59 -0700 Subject: [PATCH] API fixes for Companion renaming Test: Ensure renaming still works Fixes: 37748634 Change-Id: I6a863200b1f12db857c308e3b935b0f27f20c85b --- api/current.txt | 2 +- api/system-current.txt | 2 +- api/test-current.txt | 2 +- .../android/companion/BluetoothLeDeviceFilter.java | 73 +++++++++++----------- 4 files changed, 41 insertions(+), 38 deletions(-) diff --git a/api/current.txt b/api/current.txt index 0586d3504856..09ccbd162a21 100644 --- a/api/current.txt +++ b/api/current.txt @@ -8286,7 +8286,7 @@ package android.companion { method public android.companion.BluetoothLeDeviceFilter build(); method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(java.util.regex.Pattern); method public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(byte[], byte[]); - method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(java.lang.String, java.lang.String, int, int, boolean); + method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(java.lang.String, java.lang.String, int, int, java.nio.ByteOrder); method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(java.lang.String, java.lang.String, int, int); method public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(android.bluetooth.le.ScanFilter); } diff --git a/api/system-current.txt b/api/system-current.txt index 792796bfc94e..c4c0da48869f 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -8786,7 +8786,7 @@ package android.companion { method public android.companion.BluetoothLeDeviceFilter build(); method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(java.util.regex.Pattern); method public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(byte[], byte[]); - method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(java.lang.String, java.lang.String, int, int, boolean); + method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(java.lang.String, java.lang.String, int, int, java.nio.ByteOrder); method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(java.lang.String, java.lang.String, int, int); method public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(android.bluetooth.le.ScanFilter); } diff --git a/api/test-current.txt b/api/test-current.txt index 65e3dc21f2ff..2e74b83d3f9c 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -8317,7 +8317,7 @@ package android.companion { method public android.companion.BluetoothLeDeviceFilter build(); method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(java.util.regex.Pattern); method public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(byte[], byte[]); - method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(java.lang.String, java.lang.String, int, int, boolean); + method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(java.lang.String, java.lang.String, int, int, java.nio.ByteOrder); method public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(java.lang.String, java.lang.String, int, int); method public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(android.bluetooth.le.ScanFilter); } diff --git a/core/java/android/companion/BluetoothLeDeviceFilter.java b/core/java/android/companion/BluetoothLeDeviceFilter.java index 7a9ba1c3f402..7fb768c67386 100644 --- a/core/java/android/companion/BluetoothLeDeviceFilter.java +++ b/core/java/android/companion/BluetoothLeDeviceFilter.java @@ -38,6 +38,7 @@ import com.android.internal.util.BitUtils; import com.android.internal.util.ObjectUtils; import com.android.internal.util.Preconditions; +import java.nio.ByteOrder; import java.util.Arrays; import java.util.Objects; import java.util.regex.Pattern; @@ -61,15 +62,15 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { private final String mRenamePrefix; private final String mRenameSuffix; private final int mRenameBytesFrom; - private final int mRenameBytesTo; + private final int mRenameBytesLength; private final int mRenameNameFrom; - private final int mRenameNameTo; + private final int mRenameNameLength; private final boolean mRenameBytesReverseOrder; private BluetoothLeDeviceFilter(Pattern namePattern, ScanFilter scanFilter, byte[] rawDataFilter, byte[] rawDataFilterMask, String renamePrefix, - String renameSuffix, int renameBytesFrom, int renameBytesTo, - int renameNameFrom, int renameNameTo, boolean renameBytesReverseOrder) { + String renameSuffix, int renameBytesFrom, int renameBytesLength, + int renameNameFrom, int renameNameLength, boolean renameBytesReverseOrder) { mNamePattern = namePattern; mScanFilter = ObjectUtils.firstNotNull(scanFilter, ScanFilter.EMPTY); mRawDataFilter = rawDataFilter; @@ -77,9 +78,9 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { mRenamePrefix = renamePrefix; mRenameSuffix = renameSuffix; mRenameBytesFrom = renameBytesFrom; - mRenameBytesTo = renameBytesTo; + mRenameBytesLength = renameBytesLength; mRenameNameFrom = renameNameFrom; - mRenameNameTo = renameNameTo; + mRenameNameLength = renameNameLength; mRenameBytesReverseOrder = renameBytesReverseOrder; } @@ -125,8 +126,8 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { } /** @hide */ - public int getRenameBytesTo() { - return mRenameBytesTo; + public int getRenameBytesLength() { + return mRenameBytesLength; } /** @hide */ @@ -145,7 +146,7 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { if (mRenameBytesFrom >= 0) { final byte[] bytes = sr.getScanRecord().getBytes(); int startInclusive = mRenameBytesFrom; - int endInclusive = mRenameBytesTo - 1; + int endInclusive = mRenameBytesFrom + mRenameBytesLength -1; int initial = mRenameBytesReverseOrder ? endInclusive : startInclusive; int step = mRenameBytesReverseOrder ? -1 : 1; for (int i = initial; startInclusive <= i && i <= endInclusive; i += step) { @@ -154,7 +155,7 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { } else { sb.append( getDeviceDisplayNameInternal(sr.getDevice()) - .substring(mRenameNameFrom, mRenameNameTo)); + .substring(mRenameNameFrom, mRenameNameFrom + mRenameNameLength)); } return sb.append(TextUtils.emptyIfNull(mRenameSuffix)).toString(); } @@ -188,7 +189,9 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { if (o == null || getClass() != o.getClass()) return false; BluetoothLeDeviceFilter that = (BluetoothLeDeviceFilter) o; return mRenameBytesFrom == that.mRenameBytesFrom && - mRenameBytesTo == that.mRenameBytesTo && + mRenameBytesLength == that.mRenameBytesLength && + mRenameNameFrom == that.mRenameNameFrom && + mRenameNameLength == that.mRenameNameLength && mRenameBytesReverseOrder == that.mRenameBytesReverseOrder && Objects.equals(mNamePattern, that.mNamePattern) && Objects.equals(mScanFilter, that.mScanFilter) && @@ -201,8 +204,8 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { @Override public int hashCode() { return Objects.hash(mNamePattern, mScanFilter, mRawDataFilter, mRawDataFilterMask, - mRenamePrefix, mRenameSuffix, mRenameBytesFrom, mRenameBytesTo, - mRenameBytesReverseOrder); + mRenamePrefix, mRenameSuffix, mRenameBytesFrom, mRenameBytesLength, + mRenameNameFrom, mRenameNameLength, mRenameBytesReverseOrder); } @Override @@ -214,9 +217,9 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { dest.writeString(mRenamePrefix); dest.writeString(mRenameSuffix); dest.writeInt(mRenameBytesFrom); - dest.writeInt(mRenameBytesTo); + dest.writeInt(mRenameBytesLength); dest.writeInt(mRenameNameFrom); - dest.writeInt(mRenameNameTo); + dest.writeInt(mRenameNameLength); dest.writeBoolean(mRenameBytesReverseOrder); } @@ -235,9 +238,9 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { ", mRenamePrefix='" + mRenamePrefix + '\'' + ", mRenameSuffix='" + mRenameSuffix + '\'' + ", mRenameBytesFrom=" + mRenameBytesFrom + - ", mRenameBytesTo=" + mRenameBytesTo + + ", mRenameBytesLength=" + mRenameBytesLength + ", mRenameNameFrom=" + mRenameNameFrom + - ", mRenameNameTo=" + mRenameNameTo + + ", mRenameNameLength=" + mRenameNameLength + ", mRenameBytesReverseOrder=" + mRenameBytesReverseOrder + '}'; } @@ -264,7 +267,7 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { if (renamePrefix != null) { if (bytesFrom >= 0) { builder.setRenameFromBytes(renamePrefix, suffix, bytesFrom, bytesTo, - bytesReverseOrder); + bytesReverseOrder ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); } else { builder.setRenameFromName(renamePrefix, suffix, nameFrom, nameTo); } @@ -293,9 +296,9 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { private String mRenamePrefix; private String mRenameSuffix; private int mRenameBytesFrom = -1; - private int mRenameBytesTo; + private int mRenameBytesLength; private int mRenameNameFrom = -1; - private int mRenameNameTo; + private int mRenameNameLength; private boolean mRenameBytesReverseOrder = false; /** @@ -355,19 +358,19 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { * @param prefix to be displayed before the byte data * @param suffix to be displayed after the byte data * @param bytesFrom the start byte index to be displayed (inclusive) - * @param bytesTo the end byte index to be displayed (exclusive) - * @param bytesReverseOrder if true, the byte order of the provided range will be flipped - * when displaying + * @param bytesLength the number of bytes to be displayed from the given index + * @param byteOrder whether the given range of bytes is big endian (will be displayed + * in same order) or little endian (will be flipped before displaying) * @return self for chaining */ @NonNull public Builder setRenameFromBytes(@NonNull String prefix, @NonNull String suffix, - int bytesFrom, int bytesTo, boolean bytesReverseOrder) { + int bytesFrom, int bytesLength, ByteOrder byteOrder) { checkRenameNotSet(); - checkRangeNotEmpty(bytesFrom, bytesTo); + checkRangeNotEmpty(bytesLength); mRenameBytesFrom = bytesFrom; - mRenameBytesTo = bytesTo; - mRenameBytesReverseOrder = bytesReverseOrder; + mRenameBytesLength = bytesLength; + mRenameBytesReverseOrder = byteOrder == ByteOrder.LITTLE_ENDIAN; return setRename(prefix, suffix); } @@ -383,16 +386,16 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { * @param prefix to be displayed before the byte data * @param suffix to be displayed after the byte data * @param nameFrom the start name character index to be displayed (inclusive) - * @param nameTo the end name character index to be displayed (exclusive) + * @param nameLength the number of characters to be displayed from the given index * @return self for chaining */ @NonNull public Builder setRenameFromName(@NonNull String prefix, @NonNull String suffix, - int nameFrom, int nameTo) { + int nameFrom, int nameLength) { checkRenameNotSet(); - checkRangeNotEmpty(nameFrom, nameTo); + checkRangeNotEmpty(nameLength); mRenameNameFrom = nameFrom; - mRenameNameTo = nameTo; + mRenameNameLength = nameLength; mRenameBytesReverseOrder = false; return setRename(prefix, suffix); } @@ -401,8 +404,8 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { checkState(mRenamePrefix == null, "Renaming rule can only be set once"); } - private void checkRangeNotEmpty(int bytesFrom, int bytesTo) { - checkArgument(bytesFrom < bytesTo, "Range must be non-empty"); + private void checkRangeNotEmpty(int length) { + checkArgument(length > 0, "Range must be non-empty"); } @NonNull @@ -423,8 +426,8 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter { return new BluetoothLeDeviceFilter(mNamePattern, mScanFilter, mRawDataFilter, mRawDataFilterMask, mRenamePrefix, mRenameSuffix, - mRenameBytesFrom, mRenameBytesTo, - mRenameNameFrom, mRenameNameTo, + mRenameBytesFrom, mRenameBytesLength, + mRenameNameFrom, mRenameNameLength, mRenameBytesReverseOrder); } } -- 2.11.0