blob: 739eabebd263be19f25f738a26014f3076680e3f [file] [log] [blame]
The Android Open Source Project5738f832012-12-12 16:00:35 -08001/******************************************************************************
2 *
3 * Copyright (C) 2009-2012 Broadcom Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18
19/*******************************************************************************
20 *
21 * Filename: btif_api.h
22 *
23 * Description: Main API header file for all BTIF functions accessed
24 * from main bluetooth HAL. All HAL extensions will not
25 * require headerfiles as they would be accessed through
26 * callout/callins.
27 *
Myles Watsonee96a3c2016-11-23 14:49:54 -080028 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -080029
30#ifndef BTIF_API_H
31#define BTIF_API_H
32
Anubhav Gupta6b84f292015-05-05 13:15:07 +053033#include <hardware/bluetooth.h>
34
The Android Open Source Project5738f832012-12-12 16:00:35 -080035#include "btif_common.h"
36#include "btif_dm.h"
37
38/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -070039 * BTIF CORE API
Myles Watsonee96a3c2016-11-23 14:49:54 -080040 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -080041
42/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -070043 *
44 * Function btif_init_bluetooth
45 *
46 * Description Creates BTIF task and prepares BT scheduler for startup
47 *
48 * Returns bt_status_t
49 *
50 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -080051bt_status_t btif_init_bluetooth(void);
52
53/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -070054 *
55 * Function btif_enable_bluetooth
56 *
57 * Description Performs chip power on and kickstarts OS scheduler
58 *
59 * Returns bt_status_t
60 *
61 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -080062bt_status_t btif_enable_bluetooth(void);
63
64/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -070065 *
66 * Function btif_disable_bluetooth
67 *
68 * Description Inititates shutdown of Bluetooth system.
69 * Any active links will be dropped and device entering
70 * non connectable/discoverable mode
71 *
72 * Returns void
73 *
74 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -080075bt_status_t btif_disable_bluetooth(void);
76
77/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -070078 *
79 * Function btif_cleanup_bluetooth
80 *
81 * Description Cleanup BTIF state.
82 *
83 *
84 * Returns void
85 *
86 ******************************************************************************/
Pavlin Radoslavov1bd691c2016-04-26 12:18:36 -070087bt_status_t btif_cleanup_bluetooth(void);
The Android Open Source Project5738f832012-12-12 16:00:35 -080088
89/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -070090 *
91 * Function is_restricted_mode
92 *
93 * Description Checks if BT was enabled in restriced mode. In restricted
94 * mode, bonds that are created are marked as temporary.
95 * These bonds persist until we leave restricted mode, at
96 * which point they will be deleted from the config. Also
97 * while in restricted mode, the user can access devices
98 * that are already paired before entering restricted mode,
99 * but they cannot remove any of these devices.
100 *
101 * Returns bool
102 *
103 ******************************************************************************/
Ajay Panicker7b266be2016-03-17 17:09:24 -0700104bool is_restricted_mode(void);
105
106/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700107 *
108 * Function btif_get_adapter_properties
109 *
110 * Description Fetches all local adapter properties
111 *
112 * Returns bt_status_t
113 *
114 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -0800115bt_status_t btif_get_adapter_properties(void);
116
117/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700118 *
119 * Function btif_get_adapter_property
120 *
121 * Description Fetches property value from local cache
122 *
123 * Returns bt_status_t
124 *
125 ******************************************************************************/
126bt_status_t btif_get_adapter_property(bt_property_type_t type);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800127
128/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700129 *
130 * Function btif_set_adapter_property
131 *
132 * Description Updates core stack with property value and stores it in
133 * local cache
134 *
135 * Returns bt_status_t
136 *
137 ******************************************************************************/
138bt_status_t btif_set_adapter_property(const bt_property_t* property);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800139
140/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700141 *
142 * Function btif_get_remote_device_property
143 *
144 * Description Fetches the remote device property from the NVRAM
145 *
146 * Returns bt_status_t
147 *
148 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700149bt_status_t btif_get_remote_device_property(RawAddress* remote_addr,
Myles Watson6bd442f2016-10-19 09:50:22 -0700150 bt_property_type_t type);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800151
152/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700153 *
154 * Function btif_get_remote_device_properties
155 *
156 * Description Fetches all the remote device properties from NVRAM
157 *
158 * Returns bt_status_t
159 *
160 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700161bt_status_t btif_get_remote_device_properties(RawAddress* remote_addr);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800162
163/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700164 *
165 * Function btif_set_remote_device_property
166 *
167 * Description Writes the remote device property to NVRAM.
168 * Currently, BT_PROPERTY_REMOTE_FRIENDLY_NAME is the only
169 * remote device property that can be set
170 *
171 * Returns bt_status_t
172 *
173 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700174bt_status_t btif_set_remote_device_property(RawAddress* remote_addr,
Myles Watson6bd442f2016-10-19 09:50:22 -0700175 const bt_property_t* property);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800176
177/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700178 *
179 * Function btif_get_remote_service_record
180 *
181 * Description Looks up the service matching uuid on the remote device
182 * and fetches the SCN and service_name if the UUID is found
183 *
184 * Returns bt_status_t
185 *
186 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700187bt_status_t btif_get_remote_service_record(RawAddress* remote_addr,
Myles Watson6bd442f2016-10-19 09:50:22 -0700188 bt_uuid_t* uuid);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800189
190/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700191 * BTIF DM API
Myles Watsonee96a3c2016-11-23 14:49:54 -0800192 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -0800193
194/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700195 *
196 * Function btif_dm_start_discovery
197 *
198 * Description Start device discovery/inquiry
199 *
200 *
201 * Returns bt_status_t
202 *
203 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -0800204bt_status_t btif_dm_start_discovery(void);
205
206/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700207 *
208 * Function btif_dm_cancel_discovery
209 *
210 * Description Cancels search
211 *
212 * Returns bt_status_t
213 *
214 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -0800215bt_status_t btif_dm_cancel_discovery(void);
216
217/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700218 *
219 * Function btif_dm_create_bond
220 *
221 * Description Initiate bonding with the specified device
222 *
223 * Returns bt_status_t
224 *
225 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700226bt_status_t btif_dm_create_bond(const RawAddress* bd_addr, int transport);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800227
228/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700229 *
230 * Function btif_dm_create_bond_out_of_band
231 *
232 * Description Initiate bonding with the specified device using OOB data.
233 *
234 * Returns bt_status_t
235 *
236 ******************************************************************************/
237bt_status_t btif_dm_create_bond_out_of_band(
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700238 const RawAddress* bd_addr, int transport,
Myles Watson6bd442f2016-10-19 09:50:22 -0700239 const bt_out_of_band_data_t* oob_data);
Jakub Pawlowski1a5bb5f2015-12-01 12:14:22 -0800240
241/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700242 *
243 * Function btif_dm_cancel_bond
244 *
245 * Description Initiate bonding with the specified device
246 *
247 * Returns bt_status_t
248 *
249 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700250bt_status_t btif_dm_cancel_bond(const RawAddress* bd_addr);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800251
252/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700253 *
254 * Function btif_dm_remove_bond
255 *
256 * Description Removes bonding with the specified device
257 *
258 * Returns bt_status_t
259 *
260 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700261bt_status_t btif_dm_remove_bond(const RawAddress* bd_addr);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800262
263/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700264 *
265 * Function btif_dm_get_connection_state
266 *
267 * Description Returns whether the remote device is currently connected
268 *
269 * Returns 0 if not connected
270 *
271 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700272uint16_t btif_dm_get_connection_state(const RawAddress* bd_addr);
Andre Eisenbach5c0b0522014-06-18 12:20:37 -0700273
274/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700275 *
276 * Function btif_dm_pin_reply
277 *
278 * Description BT legacy pairing - PIN code reply
279 *
280 * Returns bt_status_t
281 *
282 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700283bt_status_t btif_dm_pin_reply(const RawAddress* bd_addr, uint8_t accept,
Myles Watson6bd442f2016-10-19 09:50:22 -0700284 uint8_t pin_len, bt_pin_code_t* pin_code);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800285
286/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700287 *
288 * Function btif_dm_passkey_reply
289 *
290 * Description BT SSP passkey reply
291 *
292 * Returns bt_status_t
293 *
294 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700295bt_status_t btif_dm_passkey_reply(const RawAddress* bd_addr, uint8_t accept,
Myles Watson6bd442f2016-10-19 09:50:22 -0700296 uint32_t passkey);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800297
298/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700299 *
300 * Function btif_dm_ssp_reply
301 *
302 * Description BT SSP Reply - Just Works, Numeric Comparison & Passkey
Myles Watsonf4548162016-10-19 09:53:56 -0700303 * Entry
Myles Watson6bd442f2016-10-19 09:50:22 -0700304 *
305 * Returns bt_status_t
306 *
307 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700308bt_status_t btif_dm_ssp_reply(const RawAddress* bd_addr,
The Android Open Source Project5738f832012-12-12 16:00:35 -0800309 bt_ssp_variant_t variant, uint8_t accept,
310 uint32_t passkey);
311
312/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700313 *
314 * Function btif_dm_get_adapter_property
315 *
316 * Description Queries the BTA for the adapter property
317 *
318 * Returns bt_status_t
319 *
320 ******************************************************************************/
321bt_status_t btif_dm_get_adapter_property(bt_property_t* prop);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800322
323/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700324 *
325 * Function btif_dm_get_remote_services
326 *
327 * Description Start SDP to get remote services
328 *
329 * Returns bt_status_t
330 *
331 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700332bt_status_t btif_dm_get_remote_service_record(RawAddress* remote_addr,
Myles Watson6bd442f2016-10-19 09:50:22 -0700333 bt_uuid_t* uuid);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800334
335/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700336 *
337 * Function btif_dm_get_remote_services
338 *
339 * Description Start SDP to get remote services
340 *
341 * Returns bt_status_t
342 *
343 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700344bt_status_t btif_dm_get_remote_services(const RawAddress& remote_addr);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800345
346/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700347 *
348 * Function btif_dm_get_remote_services_by_transport
349 *
350 * Description Start SDP to get remote services by transport
351 *
352 * Returns bt_status_t
353 *
354 ******************************************************************************/
Jakub Pawlowskia484a882017-06-24 17:30:18 -0700355bt_status_t btif_dm_get_remote_services_by_transport(RawAddress* remote_addr,
Myles Watson6bd442f2016-10-19 09:50:22 -0700356 int transport);
Nitin Arorab4365c52015-06-25 18:30:09 -0700357
358/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700359 *
360 * Function btif_dut_mode_configure
361 *
362 * Description Configure Test Mode - 'enable' to 1 puts the device in test
Myles Watsonf4548162016-10-19 09:53:56 -0700363 * mode and 0 exits test mode
Myles Watson6bd442f2016-10-19 09:50:22 -0700364 *
365 * Returns BT_STATUS_SUCCESS on success
366 *
367 ******************************************************************************/
The Android Open Source Project5738f832012-12-12 16:00:35 -0800368bt_status_t btif_dut_mode_configure(uint8_t enable);
369
370/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700371 *
372 * Function btif_dut_mode_send
373 *
374 * Description Sends a HCI Vendor specific command to the controller
375 *
376 * Returns BT_STATUS_SUCCESS on success
377 *
378 ******************************************************************************/
379bt_status_t btif_dut_mode_send(uint16_t opcode, uint8_t* buf, uint8_t len);
The Android Open Source Project5738f832012-12-12 16:00:35 -0800380
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800381/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700382 *
383 * Function btif_le_test_mode
384 *
385 * Description Sends a HCI BLE Test command to the Controller
386 *
387 * Returns BT_STATUS_SUCCESS on success
388 *
389 ******************************************************************************/
390bt_status_t btif_le_test_mode(uint16_t opcode, uint8_t* buf, uint8_t len);
Zhihai Xubad70b12013-06-04 18:21:25 -0700391
392/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700393 *
394 * Function btif_dm_read_energy_info
395 *
396 * Description Reads the energy info from controller
397 *
398 * Returns void
399 *
400 ******************************************************************************/
Satya Callojie5ba8842014-07-03 17:18:02 -0700401void btif_dm_read_energy_info();
402
403/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700404 *
405 * Function btif_config_hci_snoop_log
406 *
407 * Description enable or disable HCI snoop log
408 *
409 * Returns BT_STATUS_SUCCESS on success
410 *
411 ******************************************************************************/
Zhihai Xubad70b12013-06-04 18:21:25 -0700412bt_status_t btif_config_hci_snoop_log(uint8_t enable);
Ajay Panickerc138fe42016-02-05 16:50:20 -0800413
414/*******************************************************************************
Myles Watson6bd442f2016-10-19 09:50:22 -0700415 *
416 * Function btif_debug_bond_event_dump
417 *
418 * Description Dump bond event information
419 *
420 * Returns void
421 *
422 ******************************************************************************/
Ajay Panickerc138fe42016-02-05 16:50:20 -0800423void btif_debug_bond_event_dump(int fd);
Jakub Pawlowski713993d2016-04-21 13:16:45 -0700424
The Android Open Source Project5738f832012-12-12 16:00:35 -0800425#endif /* BTIF_API_H */