From 5203f769333db67651b6fdebd1847192af05d556 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Wed, 22 Mar 2017 22:53:18 -0700 Subject: [PATCH 1/3] Bluetooth: fix comment wording Test: manual Bug: 30622771 Change-Id: I5a589c98553f35248b0d95d332e9f35774075b24 (cherry picked from commit e7f89b07e6fa3a99877af3298c2a80db23a591d7) --- .../bluetooth/le/AdvertisingSetParameters.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/java/android/bluetooth/le/AdvertisingSetParameters.java b/core/java/android/bluetooth/le/AdvertisingSetParameters.java index f5c1f08562f68..7e37157424631 100644 --- a/core/java/android/bluetooth/le/AdvertisingSetParameters.java +++ b/core/java/android/bluetooth/le/AdvertisingSetParameters.java @@ -254,10 +254,10 @@ public final class AdvertisingSetParameters implements Parcelable { /** * Set whether the advertisement type should be connectable or * non-connectable. - * Legacy advertisements can be both connectable and scannable. Other - * advertisements can be connectable only if not scannable. + * Legacy advertisements must be both connectable and scannable. Nonlegacy + * advertisements can be only scannable or only connectable. * @param connectable Controls whether the advertisment type will be - * connectable (true) or non-connectable (false). + * connectable (true) or nonconnectable (false). */ public Builder setConnectable(boolean connectable) { this.connectable = connectable; @@ -265,11 +265,11 @@ public final class AdvertisingSetParameters implements Parcelable { } /** - * Set whether the advertisement type should be scannable - * Legacy advertisements can be both connectable and scannable. Other - * advertisements can be scannable only if not connectable. + * Set whether the advertisement type should be scannable. + * Legacy advertisements must be both connectable and scannable. Nonlegacy + * advertisements can be only scannable or only connectable. * @param scannable Controls whether the advertisment type will be - * scannable (true) or non-scannable (false). + * scannable (true) or nonscannable (false). */ public Builder setScannable(boolean scannable) { this.scannable = scannable; From 1ab569d43fa11f68a527ce425dadd9f2a32cba2a Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Thu, 6 Apr 2017 07:22:57 -0700 Subject: [PATCH 2/3] Bluetooth 5 fix default AdvertisingSetParameters values Having advertiser be scannable and connectable by default is a bad choice for new advertising set. Bug: 30622771 Test: sl4a Bt5ScanTest Change-Id: I4fc270e78ca4e62d3077c5cd28aa59b0518d2e77 (cherry picked from commit 010cc95583d6b93bdcc9cf7959f8470d109f8a3d) --- .../bluetooth/le/AdvertisingSetParameters.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/java/android/bluetooth/le/AdvertisingSetParameters.java b/core/java/android/bluetooth/le/AdvertisingSetParameters.java index 7e37157424631..4e9fac3ee22b2 100644 --- a/core/java/android/bluetooth/le/AdvertisingSetParameters.java +++ b/core/java/android/bluetooth/le/AdvertisingSetParameters.java @@ -241,8 +241,8 @@ public final class AdvertisingSetParameters implements Parcelable { */ public static final class Builder { - private boolean connectable = true; - private boolean scannable = true; + private boolean connectable = false; + private boolean scannable = false; private boolean isLegacy = false; private boolean isAnonymous = false; private boolean includeTxPower = false; @@ -254,10 +254,10 @@ public final class AdvertisingSetParameters implements Parcelable { /** * Set whether the advertisement type should be connectable or * non-connectable. - * Legacy advertisements must be both connectable and scannable. Nonlegacy + * Legacy advertisements can be both connectable and scannable. Non-legacy * advertisements can be only scannable or only connectable. * @param connectable Controls whether the advertisment type will be - * connectable (true) or nonconnectable (false). + * connectable (true) or non-connectable (false). */ public Builder setConnectable(boolean connectable) { this.connectable = connectable; @@ -266,10 +266,10 @@ public final class AdvertisingSetParameters implements Parcelable { /** * Set whether the advertisement type should be scannable. - * Legacy advertisements must be both connectable and scannable. Nonlegacy + * Legacy advertisements can be both connectable and scannable. Non-legacy * advertisements can be only scannable or only connectable. * @param scannable Controls whether the advertisment type will be - * scannable (true) or nonscannable (false). + * scannable (true) or non-scannable (false). */ public Builder setScannable(boolean scannable) { this.scannable = scannable; From 326996916df976b0939aa30551b7c30f6b3675f7 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Mon, 10 Apr 2017 13:45:16 -0700 Subject: [PATCH 3/3] Remove enable from PeriodicAdvertisingPariameters (1/2) Instead of setting enable to true, one can just pass null PeriodicAdvertisingParameters and achieve same result when starting the set. Passing the "enable" when updating the parameters make no sense, and might be confusing. Experience with "timeout" field, which was a part of AdvertiseSettings show that merging fields that go into different HCI commands can cause problems during processing, so keep enable as separate field. Test: manual Bug: 30622771 Change-Id: Ida02c59eb8433537179b4d22202fe745f8b4bb3e (cherry picked from commit e6c453d828fec3df82708d2b0c3bb00bd0a0dbf8) --- api/current.txt | 2 -- api/system-current.txt | 2 -- api/test-current.txt | 2 -- .../bluetooth/le/BluetoothLeAdvertiser.java | 2 +- .../le/PeriodicAdvertisingParameters.java | 22 ++----------------- 5 files changed, 3 insertions(+), 27 deletions(-) diff --git a/api/current.txt b/api/current.txt index cfcdb7d355641..54800ebc2fdd7 100644 --- a/api/current.txt +++ b/api/current.txt @@ -8056,7 +8056,6 @@ package android.bluetooth.le { public final class PeriodicAdvertisingParameters implements android.os.Parcelable { method public int describeContents(); - method public boolean getEnable(); method public boolean getIncludeTxPower(); method public int getInterval(); method public void writeToParcel(android.os.Parcel, int); @@ -8066,7 +8065,6 @@ package android.bluetooth.le { public static final class PeriodicAdvertisingParameters.Builder { ctor public PeriodicAdvertisingParameters.Builder(); method public android.bluetooth.le.PeriodicAdvertisingParameters build(); - method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setEnable(boolean); method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setIncludeTxPower(boolean); method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setInterval(int); } diff --git a/api/system-current.txt b/api/system-current.txt index df8d49afdb193..0230eb7f87fc1 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -8527,7 +8527,6 @@ package android.bluetooth.le { public final class PeriodicAdvertisingParameters implements android.os.Parcelable { method public int describeContents(); - method public boolean getEnable(); method public boolean getIncludeTxPower(); method public int getInterval(); method public void writeToParcel(android.os.Parcel, int); @@ -8537,7 +8536,6 @@ package android.bluetooth.le { public static final class PeriodicAdvertisingParameters.Builder { ctor public PeriodicAdvertisingParameters.Builder(); method public android.bluetooth.le.PeriodicAdvertisingParameters build(); - method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setEnable(boolean); method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setIncludeTxPower(boolean); method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setInterval(int); } diff --git a/api/test-current.txt b/api/test-current.txt index a8060d88a580a..923389d08c654 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -8086,7 +8086,6 @@ package android.bluetooth.le { public final class PeriodicAdvertisingParameters implements android.os.Parcelable { method public int describeContents(); - method public boolean getEnable(); method public boolean getIncludeTxPower(); method public int getInterval(); method public void writeToParcel(android.os.Parcel, int); @@ -8096,7 +8095,6 @@ package android.bluetooth.le { public static final class PeriodicAdvertisingParameters.Builder { ctor public PeriodicAdvertisingParameters.Builder(); method public android.bluetooth.le.PeriodicAdvertisingParameters build(); - method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setEnable(boolean); method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setIncludeTxPower(boolean); method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setInterval(int); } diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java index a9deb752e081f..73fc1339afa62 100644 --- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -386,7 +386,7 @@ public final class BluetoothLeAdvertiser { } boolean supportPeriodic = mBluetoothAdapter.isLePeriodicAdvertisingSupported(); - if (periodicParameters != null && periodicParameters.getEnable() && !supportPeriodic) { + if (periodicParameters != null && !supportPeriodic) { throw new IllegalArgumentException( "Controller does not support LE Periodic Advertising"); } diff --git a/core/java/android/bluetooth/le/PeriodicAdvertisingParameters.java b/core/java/android/bluetooth/le/PeriodicAdvertisingParameters.java index 149540ce0dab6..8891d2e842d6a 100644 --- a/core/java/android/bluetooth/le/PeriodicAdvertisingParameters.java +++ b/core/java/android/bluetooth/le/PeriodicAdvertisingParameters.java @@ -29,27 +29,19 @@ public final class PeriodicAdvertisingParameters implements Parcelable { private static final int INTERVAL_MAX = 80; private static final int INTERVAL_MIN = 65519; - private final boolean enable; private final boolean includeTxPower; private final int interval; - private PeriodicAdvertisingParameters(boolean enable, boolean includeTxPower, int interval) { - this.enable = enable; + private PeriodicAdvertisingParameters(boolean includeTxPower, int interval) { this.includeTxPower = includeTxPower; this.interval = interval; } private PeriodicAdvertisingParameters(Parcel in) { - enable = in.readInt() != 0 ? true : false; includeTxPower = in.readInt() != 0 ? true : false; interval = in.readInt(); } - /** - * Returns whether the periodic advertising shall be enabled. - */ - public boolean getEnable() { return enable; } - /** * Returns whether the TX Power will be included. */ @@ -68,7 +60,6 @@ public final class PeriodicAdvertisingParameters implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(enable ? 1 : 0); dest.writeInt(includeTxPower ? 1 : 0); dest.writeInt(interval); } @@ -89,17 +80,8 @@ public final class PeriodicAdvertisingParameters implements Parcelable { public static final class Builder { private boolean includeTxPower = false; - private boolean enable = false; private int interval = INTERVAL_MAX; - /** - * Set whether the Periodic Advertising should be enabled for this set. - */ - public Builder setEnable(boolean enable) { - this.enable = enable; - return this; - } - /** * Whether the transmission power level should be included in the periodic * packet. @@ -128,7 +110,7 @@ public final class PeriodicAdvertisingParameters implements Parcelable { * Build the {@link AdvertisingSetParameters} object. */ public PeriodicAdvertisingParameters build() { - return new PeriodicAdvertisingParameters(enable, includeTxPower, interval); + return new PeriodicAdvertisingParameters(includeTxPower, interval); } } }