blob: 6560daa6f52fb0f928b986e138df2639abd58b25 [file] [log] [blame]
Arman Ugurayf6fc0c42015-10-06 18:10:15 -07001/*
Jakub Pawlowski5b790fe2017-09-18 09:00:20 -07002 * Copyright 2015, The Android Open Source Project
Arman Ugurayf6fc0c42015-10-06 18:10:15 -07003 *
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/**
18 * Binder IPC API for talking with the Bluetooth service and perform high-level
19 * operations on the adapter.
20 */
21interface IBluetooth {
22 /**
23 * Returns true if the Bluetooth adapter is powered and ready to use. This
24 * is equivalent to "getState() == ADAPTER_STATE_ON".
25 */
26 boolean isEnabled();
27
28 /**
29 * Returns the current Bluetooth adapter state. The return value can be one of
30 * the following:
31 *
32 * - ADAPTER_STATE_OFF = 10
33 * - ADAPTER_STATE_TURNING_ON = 11
34 * - ADAPTER_STATE_ON = 12
35 * - ADAPTER_STATE_TURNING_OFF = 13
36 */
37 int getState();
38
39 /**
40 * Turns on the Bluetooth radio. This function initiates the procedure to
41 * bring the adapter state from ADAPTER_STATE_OFF to ADAPTER_STATE_ON. Returns
42 * false, if the state is not ADAPTER_STATE_OFF or if there is an error while
43 * initiating the operation. On success, the adapter state will be
44 * asynchronously updated to ADAPTER_STATE_TURNING_ON and eventually to
45 * ADAPTER_STATE_ON. Callers can monitor the status of this call by observing
46 * the IBluetoothCallback.onBluetoothStateChange callback.
47 */
48 boolean enable();
49
50 /**
51 * Turns off the Bluetooth radio. This function initiates the procedure to
52 * bring the adapter state from ADAPTER_STATE_ON to ADAPTER_STATE_OFF. Returns
53 * false, if the state is not ADAPTER_STATE_ON or if there is an error while
54 * initiating the operation. On success, the adapter state will be
55 * asynchronously updated to ADAPTER_STATE_TURNING_OFF and eventually to
56 * ADAPTER_STATE_OFF. Callers can monitor the status of this call by observing
57 * the IBluetoothCallback.onBluetoothStateChange callback.
58 */
59 boolean disable();
60
61 /**
62 * Returns the identity Bluetooth Device Address (BD_ADDR) assigned to the
63 * underlying Bluetooth controller. Returns a string of the form
64 * "XX:XX:XX:XX:XX:XX", where each "X" is a hexadecimal digit. Returns
65 * "00:00:00:00:00:00" if the address is not known, which is usually the case
66 * before the adapter is enabled for the first time.
67 */
68 String getAddress();
69
70 /**
71 * Sets the name assigned to the Bluetooth adapter. This is the name that will
72 * be seen by remote devices during discovery. Returns false if the operation
73 * fails.
74 */
75 boolean setName(in String name);
76
77 /**
78 * Returns the current name assigned to the Bluetooth adapter. This is the
79 * name that is seen by remote devices during discovery. If the controller has
80 * not been initialized yet (before the first time it gets enabled), this will
81 * return "not-initialized".
82 */
83 String getName();
84
85 /**
86 * Registers a callback receiver which can be used to listen to state updates
87 * from the adapter. The Bluetooth daemon will automatically register this if
88 * the owning process dies.
89 */
90 void registerCallback(in IBluetoothCallback callback);
91
92 /**
93 * Unregisters a previously registered callback.
94 */
95 void unregisterCallback(in IBluetoothCallback callback);
96
97 /**
98 * Returns true, if the multi-advertisement feature is supported. Returns
99 * false, if this device can only advertise a single instance.
100 */
101 boolean isMultiAdvertisementSupported();
102
103 /**
104 * Returns a binder that can be used to interact with Low-Energy features.
105 */
106 IBluetoothLowEnergy getLowEnergyInterface();
107
108 /**
Arman Uguray900c9dc2015-11-10 15:48:42 -0800109 * Returns a binder that can be used to interact with GATT client-role
110 * features.
111 */
112 IBluetoothGattClient getGattClientInterface();
113
114 /**
Arman Ugurayf6fc0c42015-10-06 18:10:15 -0700115 * Returns a binder that can be used to interact with GATT server-role
116 * features.
117 */
118 IBluetoothGattServer getGattServerInterface();
119}