1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.bluetooth;
18 
19 /**
20  * This abstract class is used to implement {@link BluetoothGatt} callbacks.
21  */
22 public abstract class BluetoothGattCallback {
23 
24     /**
25      * Callback triggered as result of {@link BluetoothGatt#setPreferredPhy}, or as a result of
26      * remote device changing the PHY.
27      *
28      * @param gatt GATT client
29      * @param txPhy the transmitter PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, {@link
30      * BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}.
31      * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, {@link
32      * BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}.
33      * @param status Status of the PHY update operation. {@link BluetoothGatt#GATT_SUCCESS} if the
34      * operation succeeds.
35      */
onPhyUpdate(BluetoothGatt gatt, int txPhy, int rxPhy, int status)36     public void onPhyUpdate(BluetoothGatt gatt, int txPhy, int rxPhy, int status) {
37     }
38 
39     /**
40      * Callback triggered as result of {@link BluetoothGatt#readPhy}
41      *
42      * @param gatt GATT client
43      * @param txPhy the transmitter PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, {@link
44      * BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}.
45      * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, {@link
46      * BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}.
47      * @param status Status of the PHY read operation. {@link BluetoothGatt#GATT_SUCCESS} if the
48      * operation succeeds.
49      */
onPhyRead(BluetoothGatt gatt, int txPhy, int rxPhy, int status)50     public void onPhyRead(BluetoothGatt gatt, int txPhy, int rxPhy, int status) {
51     }
52 
53     /**
54      * Callback indicating when GATT client has connected/disconnected to/from a remote
55      * GATT server.
56      *
57      * @param gatt GATT client
58      * @param status Status of the connect or disconnect operation. {@link
59      * BluetoothGatt#GATT_SUCCESS} if the operation succeeds.
60      * @param newState Returns the new connection state. Can be one of {@link
61      * BluetoothProfile#STATE_DISCONNECTED} or {@link BluetoothProfile#STATE_CONNECTED}
62      */
onConnectionStateChange(BluetoothGatt gatt, int status, int newState)63     public void onConnectionStateChange(BluetoothGatt gatt, int status,
64             int newState) {
65     }
66 
67     /**
68      * Callback invoked when the list of remote services, characteristics and descriptors
69      * for the remote device have been updated, ie new services have been discovered.
70      *
71      * @param gatt GATT client invoked {@link BluetoothGatt#discoverServices}
72      * @param status {@link BluetoothGatt#GATT_SUCCESS} if the remote device has been explored
73      * successfully.
74      */
onServicesDiscovered(BluetoothGatt gatt, int status)75     public void onServicesDiscovered(BluetoothGatt gatt, int status) {
76     }
77 
78     /**
79      * Callback reporting the result of a characteristic read operation.
80      *
81      * @param gatt GATT client invoked {@link BluetoothGatt#readCharacteristic}
82      * @param characteristic Characteristic that was read from the associated remote device.
83      * @param status {@link BluetoothGatt#GATT_SUCCESS} if the read operation was completed
84      * successfully.
85      */
onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)86     public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic,
87             int status) {
88     }
89 
90     /**
91      * Callback indicating the result of a characteristic write operation.
92      *
93      * <p>If this callback is invoked while a reliable write transaction is
94      * in progress, the value of the characteristic represents the value
95      * reported by the remote device. An application should compare this
96      * value to the desired value to be written. If the values don't match,
97      * the application must abort the reliable write transaction.
98      *
99      * @param gatt GATT client invoked {@link BluetoothGatt#writeCharacteristic}
100      * @param characteristic Characteristic that was written to the associated remote device.
101      * @param status The result of the write operation {@link BluetoothGatt#GATT_SUCCESS} if the
102      * operation succeeds.
103      */
onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)104     public void onCharacteristicWrite(BluetoothGatt gatt,
105             BluetoothGattCharacteristic characteristic, int status) {
106     }
107 
108     /**
109      * Callback triggered as a result of a remote characteristic notification.
110      *
111      * @param gatt GATT client the characteristic is associated with
112      * @param characteristic Characteristic that has been updated as a result of a remote
113      * notification event.
114      */
onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic)115     public void onCharacteristicChanged(BluetoothGatt gatt,
116             BluetoothGattCharacteristic characteristic) {
117     }
118 
119     /**
120      * Callback reporting the result of a descriptor read operation.
121      *
122      * @param gatt GATT client invoked {@link BluetoothGatt#readDescriptor}
123      * @param descriptor Descriptor that was read from the associated remote device.
124      * @param status {@link BluetoothGatt#GATT_SUCCESS} if the read operation was completed
125      * successfully
126      */
onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status)127     public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor,
128             int status) {
129     }
130 
131     /**
132      * Callback indicating the result of a descriptor write operation.
133      *
134      * @param gatt GATT client invoked {@link BluetoothGatt#writeDescriptor}
135      * @param descriptor Descriptor that was writte to the associated remote device.
136      * @param status The result of the write operation {@link BluetoothGatt#GATT_SUCCESS} if the
137      * operation succeeds.
138      */
onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status)139     public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor,
140             int status) {
141     }
142 
143     /**
144      * Callback invoked when a reliable write transaction has been completed.
145      *
146      * @param gatt GATT client invoked {@link BluetoothGatt#executeReliableWrite}
147      * @param status {@link BluetoothGatt#GATT_SUCCESS} if the reliable write transaction was
148      * executed successfully
149      */
onReliableWriteCompleted(BluetoothGatt gatt, int status)150     public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {
151     }
152 
153     /**
154      * Callback reporting the RSSI for a remote device connection.
155      *
156      * This callback is triggered in response to the
157      * {@link BluetoothGatt#readRemoteRssi} function.
158      *
159      * @param gatt GATT client invoked {@link BluetoothGatt#readRemoteRssi}
160      * @param rssi The RSSI value for the remote device
161      * @param status {@link BluetoothGatt#GATT_SUCCESS} if the RSSI was read successfully
162      */
onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status)163     public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
164     }
165 
166     /**
167      * Callback indicating the MTU for a given device connection has changed.
168      *
169      * This callback is triggered in response to the
170      * {@link BluetoothGatt#requestMtu} function, or in response to a connection
171      * event.
172      *
173      * @param gatt GATT client invoked {@link BluetoothGatt#requestMtu}
174      * @param mtu The new MTU size
175      * @param status {@link BluetoothGatt#GATT_SUCCESS} if the MTU has been changed successfully
176      */
onMtuChanged(BluetoothGatt gatt, int mtu, int status)177     public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
178     }
179 
180     /**
181      * Callback indicating the connection parameters were updated.
182      *
183      * @param gatt GATT client involved
184      * @param interval Connection interval used on this connection, 1.25ms unit. Valid range is from
185      * 6 (7.5ms) to 3200 (4000ms).
186      * @param latency Slave latency for the connection in number of connection events. Valid range
187      * is from 0 to 499
188      * @param timeout Supervision timeout for this connection, in 10ms unit. Valid range is from 10
189      * (0.1s) to 3200 (32s)
190      * @param status {@link BluetoothGatt#GATT_SUCCESS} if the connection has been updated
191      * successfully
192      * @hide
193      */
onConnectionUpdated(BluetoothGatt gatt, int interval, int latency, int timeout, int status)194     public void onConnectionUpdated(BluetoothGatt gatt, int interval, int latency, int timeout,
195             int status) {
196     }
197 }
198