BluetoothGattCallback.java revision d64bb883d822e1db445e09e77150ffd281e83cbe
19908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta/* 2d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Copyright (C) 2017 The Android Open Source Project 39908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 49908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Licensed under the Apache License, Version 2.0 (the "License"); 59908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * you may not use this file except in compliance with the License. 69908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * You may obtain a copy of the License at 79908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 89908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * http://www.apache.org/licenses/LICENSE-2.0 99908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 109908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Unless required by applicable law or agreed to in writing, software 119908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * distributed under the License is distributed on an "AS IS" BASIS, 129908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * See the License for the specific language governing permissions and 149908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * limitations under the License. 159908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 169908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 179908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Battapackage android.bluetooth; 189908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 199908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta/** 209908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * This abstract class is used to implement {@link BluetoothGatt} callbacks. 219908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 22d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowskipublic abstract class BluetoothGattCallback{ 239908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 249908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 25d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback triggered as result of {@link BluetoothGatt#setPreferredPhy}, or as a result of 26d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * remote device changing the PHY. 27d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 28d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client 29d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param txPhy the transmitter PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, 30d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. 31d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, 32d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. 33d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status status of the operation 349908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 35409cee69b2b09bcd11f1273752c016116436f247Jakub Pawlowski public void onPhyUpdate(BluetoothGatt gatt, int txPhy, int rxPhy, int status) { 369908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 379908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 389908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 39d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback triggered as result of {@link BluetoothGatt#readPhy} 40d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 41d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client 42d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param txPhy the transmitter PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, 43d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. 44d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, 45d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. 46d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status status of the operation 479908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 48409cee69b2b09bcd11f1273752c016116436f247Jakub Pawlowski public void onPhyRead(BluetoothGatt gatt, int txPhy, int rxPhy, int status) { 499908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 509908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 51d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 52d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback indicating when GATT client has connected/disconnected to/from a remote 53d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * GATT server. 54d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 55d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client 56d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status Status of the connect or disconnect operation. 57d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds. 58d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param newState Returns the new connection state. Can be one of 59d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothProfile#STATE_DISCONNECTED} or 60d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothProfile#STATE_CONNECTED} 61d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 62d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onConnectionStateChange(BluetoothGatt gatt, int status, 63d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski int newState) { 64d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 65d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 66d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 67d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback invoked when the list of remote services, characteristics and descriptors 68d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * for the remote device have been updated, ie new services have been discovered. 69d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 70d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#discoverServices} 71d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status {@link BluetoothGatt#GATT_SUCCESS} if the remote device 72d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * has been explored successfully. 73d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 74d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onServicesDiscovered(BluetoothGatt gatt, int status) { 75d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 76d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 77d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 78d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback reporting the result of a characteristic read operation. 79d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 80d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#readCharacteristic} 81d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param characteristic Characteristic that was read from the associated 82d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * remote device. 83d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status {@link BluetoothGatt#GATT_SUCCESS} if the read operation 84d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * was completed successfully. 85d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 86d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, 87d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski int status) { 88d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 89d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 90d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 91d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback indicating the result of a characteristic write operation. 92d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 93d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * <p>If this callback is invoked while a reliable write transaction is 94d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * in progress, the value of the characteristic represents the value 95d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * reported by the remote device. An application should compare this 96d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * value to the desired value to be written. If the values don't match, 97d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * the application must abort the reliable write transaction. 98d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 99d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#writeCharacteristic} 100d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param characteristic Characteristic that was written to the associated 101d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * remote device. 102d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status The result of the write operation 103d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds. 104d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 105d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onCharacteristicWrite(BluetoothGatt gatt, 106d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski BluetoothGattCharacteristic characteristic, int status) { 107d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 108d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 109d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 110d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback triggered as a result of a remote characteristic notification. 111d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 112d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client the characteristic is associated with 113d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param characteristic Characteristic that has been updated as a result 114d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * of a remote notification event. 115d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 116d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onCharacteristicChanged(BluetoothGatt gatt, 117d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski BluetoothGattCharacteristic characteristic) { 118d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 119d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 120d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 121d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback reporting the result of a descriptor read operation. 122d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 123d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#readDescriptor} 124d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param descriptor Descriptor that was read from the associated 125d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * remote device. 126d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status {@link BluetoothGatt#GATT_SUCCESS} if the read operation 127d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * was completed successfully 128d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 129d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, 130d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski int status) { 131d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 132d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 133d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 134d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback indicating the result of a descriptor write operation. 135d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 136d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#writeDescriptor} 137d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param descriptor Descriptor that was writte to the associated 138d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * remote device. 139d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status The result of the write operation 140d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds. 141d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 142d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, 143d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski int status) { 144d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 145d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 146d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 147d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback invoked when a reliable write transaction has been completed. 148d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 149d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#executeReliableWrite} 150d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status {@link BluetoothGatt#GATT_SUCCESS} if the reliable write 151d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * transaction was executed successfully 152d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 153d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onReliableWriteCompleted(BluetoothGatt gatt, int status) { 154d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 155d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 156d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 157d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback reporting the RSSI for a remote device connection. 158d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 159d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * This callback is triggered in response to the 160d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothGatt#readRemoteRssi} function. 161d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 162d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#readRemoteRssi} 163d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param rssi The RSSI value for the remote device 164d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status {@link BluetoothGatt#GATT_SUCCESS} if the RSSI was read successfully 165d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 166d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) { 167d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 168d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski 169d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski /** 170d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * Callback indicating the MTU for a given device connection has changed. 171d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 172d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * This callback is triggered in response to the 173d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * {@link BluetoothGatt#requestMtu} function, or in response to a connection 174d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * event. 175d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * 176d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param gatt GATT client invoked {@link BluetoothGatt#requestMtu} 177d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param mtu The new MTU size 178d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski * @param status {@link BluetoothGatt#GATT_SUCCESS} if the MTU has been changed successfully 179d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski */ 180d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) { 181d64bb883d822e1db445e09e77150ffd281e83cbeJakub Pawlowski } 1829908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta} 183