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