summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Turney <tturney@google.com>2014-11-12 16:26:41 -0800
committerTom Turney <tturney@google.com>2014-11-15 02:25:05 +0000
commit29230ceab9ea7b6913f0a898411b213f199e18c2 (patch)
treec15bf28179d6630f2607ed9d82e25571ada7a8ed
parentbba231d7a63b58a8c2b174722ed1487b0f7d8270 (diff)
downloadframeworks_base-29230ceab9ea7b6913f0a898411b213f199e18c2.zip
frameworks_base-29230ceab9ea7b6913f0a898411b213f199e18c2.tar.gz
frameworks_base-29230ceab9ea7b6913f0a898411b213f199e18c2.tar.bz2
Feature request: Increasing advertise data size on
non-connectable adv. When the advertisement is non-connectable, give back the bytes to the advertiser where the adv flags would have been. This increases the non-connectable advertisement's advertise data from 24 to 27 bytes. Bug:18359570 Change-Id: Ia3cc48dca50cc3c51095ee92a489f143f6d350b1
-rw-r--r--core/java/android/bluetooth/le/BluetoothLeAdvertiser.java10
1 files changed, 6 insertions, 4 deletions
diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
index a019d5c..e76c23b 100644
--- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
+++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
@@ -117,8 +117,9 @@ public final class BluetoothLeAdvertiser {
AdvertiseCallback.ADVERTISE_FAILED_FEATURE_UNSUPPORTED);
return;
}
- if (totalBytes(advertiseData) > MAX_ADVERTISING_DATA_BYTES ||
- totalBytes(scanResponse) > MAX_ADVERTISING_DATA_BYTES) {
+ boolean isConnectable = settings.isConnectable();
+ if (totalBytes(advertiseData, isConnectable) > MAX_ADVERTISING_DATA_BYTES ||
+ totalBytes(scanResponse, isConnectable) > MAX_ADVERTISING_DATA_BYTES) {
postStartFailure(callback, AdvertiseCallback.ADVERTISE_FAILED_DATA_TOO_LARGE);
return;
}
@@ -171,9 +172,10 @@ public final class BluetoothLeAdvertiser {
}
// Compute the size of the advertise data.
- private int totalBytes(AdvertiseData data) {
+ private int totalBytes(AdvertiseData data, boolean isConnectable) {
if (data == null) return 0;
- int size = FLAGS_FIELD_BYTES; // flags field is always set.
+ // Flags field is omitted if the advertising is not connectable.
+ int size = isConnectable ? FLAGS_FIELD_BYTES : 0;
if (data.getServiceUuids() != null) {
int num16BitUuids = 0;
int num32BitUuids = 0;