Home | History | Annotate | Download | only in doc
      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 interacting with Bluetooth Low-Energy features.
     19  */
     20 interface IBluetoothLowEnergy {
     21   /**
     22    * Registers a client application that can manage its own Low Energy
     23    * instance. A special client interface ID will be returned in a callback to
     24    * the application that can be used to perform Low Energy operations. Returns
     25    * false in case of an error.
     26    */
     27   boolean registerClient(in IBluetoothLowEnergyCallback callback);
     28 
     29   /**
     30    * Unregisters a previously registered client with "client interface ID"
     31    * |client_if|.
     32    */
     33   void unregisterClient(in int client_if);
     34 
     35   /**
     36    * Unregisters all previously registered clients.
     37    */
     38   void unregisterAll();
     39 
     40   /* Initiates a BLE connection do device with address |address|. If
     41    * |is_direct| is set, use direct connect procedure. Return true on success,
     42    * false otherwise.
     43    */
     44   boolean Connect(in int client_id, in const char* address,
     45                   in boolean is_direct);
     46 
     47   /* Disconnect from previously connected BLE device with address |address|.
     48    * Returns true on success, false otherwise.
     49    */
     50   boolean Disconnect(in int client_id, in const char* address);
     51 
     52   /**
     53    * Sends request to set MTU to |mtu| for the device with address |address|.
     54    * OnMtuChanged callback will be triggered as a result of this call. Returns
     55    * true when the command was sent, false otherwise.
     56    */
     57    boolean setMtu(in int client_id, in char* address, int mtu);
     58 
     59   /**
     60    * Initiates a BLE device scan for the scan client with ID |client_id|, using
     61    * the parameters defined in |settings|. Scan results that are reported to the
     62    * application with the associated IBluetoothLowEnergyCallback event will be
     63    * filtered using a combination of hardware and software filtering based on
     64    * |filters|. Return true on success, false otherwise.
     65    */
     66   boolean startScan(in int client_id, in ScanSettings settings,
     67                     in ScanFilter[] filters);
     68 
     69   /**
     70    * Stops a previously initiated scan session for the client with ID
     71    * |client_id|. Return true on success, false otherwise.
     72    */
     73   boolean stopScan(in int client_id);
     74 
     75   /**
     76    * Starts a multi-advertising instance using |advertising_data| and
     77    * |scan_response_data|, both of which can be empty. Each of these parameters
     78    * must contain the raw advertising packet. Returns false if there were any
     79    * synchronous failures, e.g. if the advertising or scan response data are
     80    * incorrectly formatted. Otherwise, the result of the operation will be
     81    * asynchronously reported in
     82    * IBluetoothLowEnergyCallback.onMultiAdvertiseCallback. See the headers in
     83    * common/bluetooth/binder for documentation on the AdvertiseData and
     84    * AdvertiseSettings data types.
     85    */
     86   boolean startMultiAdvertising(in int client_if,
     87                                 in AdvertiseData advertise_data,
     88                                 in AdvertiseData scan_response_data,
     89                                 in AdvertiseSettings settings);
     90 
     91   /**
     92    * Stops the previously started multi-advertising instance for the given
     93    * client. Returns false in case of an error, e.g. this client has not started
     94    * an instance.
     95    */
     96   boolean stopMultiAdvertising(in int client_if);
     97 }
     98