btif_api.h revision ee96a3c60fca590d38025925c072d264e06493c4
1/******************************************************************************
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 *
28 ******************************************************************************/
29
30#ifndef BTIF_API_H
31#define BTIF_API_H
32
33#include <hardware/bluetooth.h>
34
35#include "btif_common.h"
36#include "btif_dm.h"
37
38/*******************************************************************************
39 *  BTIF CORE API
40 ******************************************************************************/
41
42/*******************************************************************************
43 *
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 ******************************************************************************/
51bt_status_t btif_init_bluetooth(void);
52
53/*******************************************************************************
54 *
55 * Function         btif_enable_bluetooth
56 *
57 * Description      Performs chip power on and kickstarts OS scheduler
58 *
59 * Returns          bt_status_t
60 *
61 ******************************************************************************/
62bt_status_t btif_enable_bluetooth(void);
63
64/*******************************************************************************
65 *
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 ******************************************************************************/
75bt_status_t btif_disable_bluetooth(void);
76
77/*******************************************************************************
78 *
79 * Function         btif_cleanup_bluetooth
80 *
81 * Description      Cleanup BTIF state.
82 *
83 *
84 * Returns          void
85 *
86 ******************************************************************************/
87bt_status_t btif_cleanup_bluetooth(void);
88
89/*******************************************************************************
90 *
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 ******************************************************************************/
104bool is_restricted_mode(void);
105
106/*******************************************************************************
107 *
108 * Function         btif_get_adapter_properties
109 *
110 * Description      Fetches all local adapter properties
111 *
112 * Returns          bt_status_t
113 *
114 ******************************************************************************/
115bt_status_t btif_get_adapter_properties(void);
116
117/*******************************************************************************
118 *
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);
127
128/*******************************************************************************
129 *
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);
139
140/*******************************************************************************
141 *
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 ******************************************************************************/
149bt_status_t btif_get_remote_device_property(bt_bdaddr_t* remote_addr,
150                                            bt_property_type_t type);
151
152/*******************************************************************************
153 *
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 ******************************************************************************/
161bt_status_t btif_get_remote_device_properties(bt_bdaddr_t* remote_addr);
162
163/*******************************************************************************
164 *
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 ******************************************************************************/
174bt_status_t btif_set_remote_device_property(bt_bdaddr_t* remote_addr,
175                                            const bt_property_t* property);
176
177/*******************************************************************************
178 *
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 ******************************************************************************/
187bt_status_t btif_get_remote_service_record(bt_bdaddr_t* remote_addr,
188                                           bt_uuid_t* uuid);
189
190/*******************************************************************************
191 *  BTIF DM API
192 ******************************************************************************/
193
194/*******************************************************************************
195 *
196 * Function         btif_dm_start_discovery
197 *
198 * Description      Start device discovery/inquiry
199 *
200 *
201 * Returns          bt_status_t
202 *
203 ******************************************************************************/
204bt_status_t btif_dm_start_discovery(void);
205
206/*******************************************************************************
207 *
208 * Function         btif_dm_cancel_discovery
209 *
210 * Description      Cancels search
211 *
212 * Returns          bt_status_t
213 *
214 ******************************************************************************/
215bt_status_t btif_dm_cancel_discovery(void);
216
217/*******************************************************************************
218 *
219 * Function         btif_dm_create_bond
220 *
221 * Description      Initiate bonding with the specified device
222 *
223 * Returns          bt_status_t
224 *
225 ******************************************************************************/
226bt_status_t btif_dm_create_bond(const bt_bdaddr_t* bd_addr, int transport);
227
228/*******************************************************************************
229 *
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(
238    const bt_bdaddr_t* bd_addr, int transport,
239    const bt_out_of_band_data_t* oob_data);
240
241/*******************************************************************************
242 *
243 * Function         btif_dm_cancel_bond
244 *
245 * Description      Initiate bonding with the specified device
246 *
247 * Returns          bt_status_t
248 *
249 ******************************************************************************/
250bt_status_t btif_dm_cancel_bond(const bt_bdaddr_t* bd_addr);
251
252/*******************************************************************************
253 *
254 * Function         btif_dm_remove_bond
255 *
256 * Description      Removes bonding with the specified device
257 *
258 * Returns          bt_status_t
259 *
260 ******************************************************************************/
261bt_status_t btif_dm_remove_bond(const bt_bdaddr_t* bd_addr);
262
263/*******************************************************************************
264 *
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 ******************************************************************************/
272uint16_t btif_dm_get_connection_state(const bt_bdaddr_t* bd_addr);
273
274/*******************************************************************************
275 *
276 * Function         btif_dm_pin_reply
277 *
278 * Description      BT legacy pairing - PIN code reply
279 *
280 * Returns          bt_status_t
281 *
282 ******************************************************************************/
283bt_status_t btif_dm_pin_reply(const bt_bdaddr_t* bd_addr, uint8_t accept,
284                              uint8_t pin_len, bt_pin_code_t* pin_code);
285
286/*******************************************************************************
287 *
288 * Function         btif_dm_passkey_reply
289 *
290 * Description      BT SSP passkey reply
291 *
292 * Returns          bt_status_t
293 *
294 ******************************************************************************/
295bt_status_t btif_dm_passkey_reply(const bt_bdaddr_t* bd_addr, uint8_t accept,
296                                  uint32_t passkey);
297
298/*******************************************************************************
299 *
300 * Function         btif_dm_ssp_reply
301 *
302 * Description      BT SSP Reply - Just Works, Numeric Comparison & Passkey
303 *                  Entry
304 *
305 * Returns          bt_status_t
306 *
307 ******************************************************************************/
308bt_status_t btif_dm_ssp_reply(const bt_bdaddr_t* bd_addr,
309                              bt_ssp_variant_t variant, uint8_t accept,
310                              uint32_t passkey);
311
312/*******************************************************************************
313 *
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);
322
323/*******************************************************************************
324 *
325 * Function         btif_dm_get_remote_services
326 *
327 * Description      Start SDP to get remote services
328 *
329 * Returns          bt_status_t
330 *
331 ******************************************************************************/
332bt_status_t btif_dm_get_remote_service_record(bt_bdaddr_t* remote_addr,
333                                              bt_uuid_t* uuid);
334
335/*******************************************************************************
336 *
337 * Function         btif_dm_get_remote_services
338 *
339 * Description      Start SDP to get remote services
340 *
341 * Returns          bt_status_t
342 *
343 ******************************************************************************/
344bt_status_t btif_dm_get_remote_services(bt_bdaddr_t* remote_addr);
345
346/*******************************************************************************
347 *
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 ******************************************************************************/
355bt_status_t btif_dm_get_remote_services_by_transport(bt_bdaddr_t* remote_addr,
356                                                     int transport);
357
358/*******************************************************************************
359 *
360 * Function         btif_dut_mode_configure
361 *
362 * Description      Configure Test Mode - 'enable' to 1 puts the device in test
363 *                  mode and 0 exits test mode
364 *
365 * Returns          BT_STATUS_SUCCESS on success
366 *
367 ******************************************************************************/
368bt_status_t btif_dut_mode_configure(uint8_t enable);
369
370/*******************************************************************************
371 *
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);
380
381/*******************************************************************************
382 *
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);
391
392/*******************************************************************************
393 *
394 * Function         btif_dm_read_energy_info
395 *
396 * Description     Reads the energy info from controller
397 *
398 * Returns          void
399 *
400 ******************************************************************************/
401void btif_dm_read_energy_info();
402
403/*******************************************************************************
404 *
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 ******************************************************************************/
412bt_status_t btif_config_hci_snoop_log(uint8_t enable);
413
414/*******************************************************************************
415 *
416 * Function         btif_debug_bond_event_dump
417 *
418 * Description     Dump bond event information
419 *
420 * Returns          void
421 *
422 ******************************************************************************/
423void btif_debug_bond_event_dump(int fd);
424
425#endif /* BTIF_API_H */
426