/* * Copyright (c) 2018, Nordic Semiconductor * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package no.nordicsemi.android.ble; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCallback; import androidx.annotation.IntRange; import androidx.annotation.NonNull; // DO NOT EDIT THIS FILE UNLESS NECESSARY! /** * The BleManagerCallbacks should be overridden in your app and all the 'high level' callbacks * should be added there. See examples in Android nRF Blinky or Android nRF Toolbox. *

* Keeping this file as is (and {@link BleManager} as well) will allow to quickly update it when * an update is posted here. */ @SuppressWarnings({"DeprecatedIsStillUsed", "unused"}) public interface BleManagerCallbacks { /** * Called when the Android device started connecting to given device. * The {@link #onDeviceConnected(BluetoothDevice)} will be called when the device is connected, * or {@link #onError(BluetoothDevice, String, int)} in case of error. * * @param device the device that got connected. */ void onDeviceConnecting(@NonNull final BluetoothDevice device); /** * Called when the device has been connected. This does not mean that the application may start * communication. * A service discovery will be handled automatically after this call. Service discovery * may ends up with calling {@link #onServicesDiscovered(BluetoothDevice, boolean)} or * {@link #onDeviceNotSupported(BluetoothDevice)} if required services have not been found. * * @param device the device that got connected. */ void onDeviceConnected(@NonNull final BluetoothDevice device); /** * Called when user initialized disconnection. * * @param device the device that gets disconnecting. */ void onDeviceDisconnecting(@NonNull final BluetoothDevice device); /** * Called when the device has disconnected (when the callback returned * {@link BluetoothGattCallback#onConnectionStateChange(BluetoothGatt, int, int)} with state * DISCONNECTED), but ONLY if the {@link BleManager#shouldAutoConnect()} method returned false * for this device when it was connecting. * Otherwise the {@link #onLinkLossOccurred(BluetoothDevice)} method will be called instead. * * @param device the device that got disconnected. */ void onDeviceDisconnected(@NonNull final BluetoothDevice device); /** * This callback is invoked when the Ble Manager lost connection to a device that has been * connected with autoConnect option (see {@link BleManager#shouldAutoConnect()}. * Otherwise a {@link #onDeviceDisconnected(BluetoothDevice)} method will be called on such * event. * * @param device the device that got disconnected due to a link loss. */ void onLinkLossOccurred(@NonNull final BluetoothDevice device); /** * Called when service discovery has finished and primary services has been found. * This method is not called if the primary, mandatory services were not found during service * discovery. For example in the Blood Pressure Monitor, a Blood Pressure service is a * primary service and Intermediate Cuff Pressure service is a optional secondary service. * Existence of battery service is not notified by this call. *

* After successful service discovery the service will initialize all services. * The {@link #onDeviceReady(BluetoothDevice)} method will be called when the initialization * is complete. * * @param device the device which services got disconnected. * @param optionalServicesFound if true the secondary services were also found * on the device. */ void onServicesDiscovered(@NonNull final BluetoothDevice device, final boolean optionalServicesFound); /** * Method called when all initialization requests has been completed. * * @param device the device that get ready. */ void onDeviceReady(@NonNull final BluetoothDevice device); /** * This method should return true if Battery Level notifications should be enabled on the * target device. If there is no Battery Service, or the Battery Level characteristic does * not have NOTIFY property, this method will not be called for this device. *

* This method may return true only if an activity is bound to the service (to display the * information to the user), always (e.g. if critical battery level is reported using * notifications) or never, if such information is not important or the manager wants to * control Battery Level notifications on its own. * * @param device the target device. * @return True to enabled battery level notifications after connecting to the device, * false otherwise. * @deprecated Use *

{@code
	 * setNotificationCallback(batteryLevelCharacteristic)
	 *       .with(new BatteryLevelDataCallback() {
	 *           onBatteryLevelChanged(int batteryLevel) {
	 *                ...
	 *           }
	 *       });
	 * }
* in the {@link BleManager.BleManagerGattCallback#initialize() initialize(BluetoothDevice)} * instead. */ @Deprecated default boolean shouldEnableBatteryLevelNotifications(@NonNull final BluetoothDevice device) { return false; } /** * Called when battery value has been received from the device. * * @param device the device from which the battery value has changed. * @param value the battery value in percent. * @deprecated Use *
{@code
	 * setNotificationCallback(batteryLevelCharacteristic)
	 *       .with(new BatteryLevelDataCallback() {
	 *           onBatteryLevelChanged(int batteryLevel) {
	 *                ...
	 *           }
	 *       });
	 * }
* in the {@link BleManager.BleManagerGattCallback#initialize() initialize(BluetoothDevice)} * instead. */ @Deprecated default void onBatteryValueReceived(@NonNull final BluetoothDevice device, @IntRange(from = 0, to = 100) final int value) { // do nothing } /** * Called when an {@link BluetoothGatt#GATT_INSUFFICIENT_AUTHENTICATION} error occurred and the * device bond state is {@link BluetoothDevice#BOND_NONE}. * * @param device the device that requires bonding. */ void onBondingRequired(@NonNull final BluetoothDevice device); /** * Called when the device has been successfully bonded. * * @param device the device that got bonded. */ void onBonded(@NonNull final BluetoothDevice device); /** * Called when the bond state has changed from {@link BluetoothDevice#BOND_BONDING} to * {@link BluetoothDevice#BOND_NONE}. * * @param device the device that failed to bond. */ void onBondingFailed(@NonNull final BluetoothDevice device); /** * Called when a BLE error has occurred * * @param message the error message. * @param errorCode the error code. * @param device the device that caused an error. */ void onError(@NonNull final BluetoothDevice device, @NonNull final String message, final int errorCode); /** * Called when service discovery has finished but the main services were not found on the device. * * @param device the device that failed to connect due to lack of required services. */ void onDeviceNotSupported(@NonNull final BluetoothDevice device); }