1/* 2 * Copyright (C) 2015, 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/** 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 /** 109 * Returns a binder that can be used to interact with GATT client-role 110 * features. 111 */ 112 IBluetoothGattClient getGattClientInterface(); 113 114 /** 115 * Returns a binder that can be used to interact with GATT server-role 116 * features. 117 */ 118 IBluetoothGattServer getGattServerInterface(); 119} 120