Don't compute flags length for scan response

Bug 19041626

Change-Id: I7d8aa12e133477fc60d12b474f57313961021975
This commit is contained in:
Prerepa Viswanadham
2015-01-16 10:40:11 -08:00
parent 73500edb42
commit e77adabeaf

View File

@@ -119,7 +119,7 @@ public final class BluetoothLeAdvertiser {
} }
boolean isConnectable = settings.isConnectable(); boolean isConnectable = settings.isConnectable();
if (totalBytes(advertiseData, isConnectable) > MAX_ADVERTISING_DATA_BYTES || if (totalBytes(advertiseData, isConnectable) > MAX_ADVERTISING_DATA_BYTES ||
totalBytes(scanResponse, isConnectable) > MAX_ADVERTISING_DATA_BYTES) { totalBytes(scanResponse, false) > MAX_ADVERTISING_DATA_BYTES) {
postStartFailure(callback, AdvertiseCallback.ADVERTISE_FAILED_DATA_TOO_LARGE); postStartFailure(callback, AdvertiseCallback.ADVERTISE_FAILED_DATA_TOO_LARGE);
return; return;
} }
@@ -171,11 +171,11 @@ public final class BluetoothLeAdvertiser {
mLeAdvertisers.clear(); mLeAdvertisers.clear();
} }
// Compute the size of the advertise data. // Compute the size of advertisement data or scan resp
private int totalBytes(AdvertiseData data, boolean isConnectable) { private int totalBytes(AdvertiseData data, boolean isFlagsIncluded) {
if (data == null) return 0; if (data == null) return 0;
// Flags field is omitted if the advertising is not connectable. // Flags field is omitted if the advertising is not connectable.
int size = isConnectable ? FLAGS_FIELD_BYTES : 0; int size = (isFlagsIncluded) ? FLAGS_FIELD_BYTES : 0;
if (data.getServiceUuids() != null) { if (data.getServiceUuids() != null) {
int num16BitUuids = 0; int num16BitUuids = 0;
int num32BitUuids = 0; int num32BitUuids = 0;