summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Pawlowski <jpawlowski@google.com>2017-03-31 16:49:13 -0700
committerJakub Pawlowski <jpawlowski@google.com>2017-03-31 16:52:48 -0700
commitb510927e3663b341adc80c24aea17af4fbab3d93 (patch)
treebaebc14367370e8a8bd51e361855b06586d26bfa
parent202db17c788044c3612f2ef41b3188b9c48b87a2 (diff)
Fix advertise data size estimation
UUID in service data field can be 2, 4, or 16 bytes long. Test: manual Bug: 36553478 Change-Id: Ib5ba2d16065496ca311e8642a15a7ea6bc84d4c1
-rw-r--r--framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java4
1 files changed, 2 insertions, 2 deletions
diff --git a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java
index 242ee77ce0..07d9b6d082 100644
--- a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java
+++ b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java
@@ -56,7 +56,6 @@ public final class BluetoothLeAdvertiser {
// Flags field will be set by system.
private static final int FLAGS_FIELD_BYTES = 3;
private static final int MANUFACTURER_SPECIFIC_DATA_LENGTH = 2;
- private static final int SERVICE_DATA_UUID_LENGTH = 2;
private final IBluetoothManager mBluetoothManager;
private final Handler mHandler;
@@ -383,7 +382,8 @@ public final class BluetoothLeAdvertiser {
}
}
for (ParcelUuid uuid : data.getServiceData().keySet()) {
- size += OVERHEAD_BYTES_PER_FIELD + SERVICE_DATA_UUID_LENGTH
+ int uuidLen = BluetoothUuid.uuidToBytes(uuid).length;
+ size += OVERHEAD_BYTES_PER_FIELD + uuidLen
+ byteLength(data.getServiceData().get(uuid));
}
for (int i = 0; i < data.getManufacturerSpecificData().size(); ++i) {