diff options
author | Jakub Pawlowski <jpawlowski@google.com> | 2017-03-08 19:05:12 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-03-08 19:05:12 +0000 |
commit | 99ec98e2f328f24c78dac07afa2aff745e13a48f (patch) | |
tree | 9878d62e90d16982e0ac42a0a73de0853d5a6538 /framework/java/android/bluetooth/le/PeriodicAdvertisingParameters.java | |
parent | 95e9c5c0f2d620f8d6bd065133b9349e1dc4b47d (diff) | |
parent | 258e43c15602c8246bc565150158b1c56e3c0814 (diff) |
Merge "Bluetooth 5 Advertising API"
Diffstat (limited to 'framework/java/android/bluetooth/le/PeriodicAdvertisingParameters.java')
-rw-r--r-- | framework/java/android/bluetooth/le/PeriodicAdvertisingParameters.java | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/framework/java/android/bluetooth/le/PeriodicAdvertisingParameters.java b/framework/java/android/bluetooth/le/PeriodicAdvertisingParameters.java new file mode 100644 index 0000000000..ebc92bd0bc --- /dev/null +++ b/framework/java/android/bluetooth/le/PeriodicAdvertisingParameters.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.bluetooth.le; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * The {@link PeriodicAdvertisingParameters} provide a way to adjust periodic + * advertising preferences for each Bluetooth LE advertising set. Use {@link + * AdvertisingSetParameters.Builder} to create an instance of this class. + */ +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; + 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. + */ + public boolean getIncludeTxPower() { return includeTxPower; } + + /** + * Returns the periodic advertising interval, in 1.25ms unit. + * Valid values are from 80 (100ms) to 65519 (81.89875s). + */ + public int getInterval() { return interval; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(enable ? 1 : 0); + dest.writeInt(includeTxPower ? 1 : 0); + dest.writeInt(interval); + } + + public static final Parcelable + .Creator<PeriodicAdvertisingParameters> CREATOR = + new Creator<PeriodicAdvertisingParameters>() { + @Override + public PeriodicAdvertisingParameters[] newArray(int size) { + return new PeriodicAdvertisingParameters[size]; + } + + @Override + public PeriodicAdvertisingParameters createFromParcel(Parcel in) { + return new PeriodicAdvertisingParameters(in); + } + }; + + public static final class Builder { + private boolean includeTxPower = false; + private boolean enable = false; + private int interval = INTERVAL_MAX; + + /** + * Set wether 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. + */ + public Builder setIncludeTxPower(boolean includeTxPower) { + this.includeTxPower = includeTxPower; + return this; + } + + /** + * Set advertising interval for periodic advertising, in 1.25ms unit. + * Valid values are from 80 (100ms) to 65519 (81.89875s). + * Value from range [interval, interval+20ms] will be picked as the actual value. + * @throws IllegalArgumentException If the interval is invalid. + */ + public Builder setInterval(int interval) { + if (interval < INTERVAL_MIN || interval > INTERVAL_MAX) { + throw new IllegalArgumentException("Invalid interval (must be " + INTERVAL_MIN + + "-" + INTERVAL_MAX + ")"); + } + this.interval = interval; + return this; + } + + /** + * Build the {@link AdvertisingSetParameters} object. + */ + public PeriodicAdvertisingParameters build() { + return new PeriodicAdvertisingParameters(enable, includeTxPower, interval); + } + } +} |