• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright 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  ******************************************************************************/
51 bt_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  ******************************************************************************/
62 bt_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  ******************************************************************************/
75 bt_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  ******************************************************************************/
87 bt_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  ******************************************************************************/
104 bool is_restricted_mode(void);
105 
106 /*******************************************************************************
107  *
108  * Function         is_single_user_mode_
109  *
110  * Description      Checks if BT was enabled in single user mode. In this
111  *                  mode, use of keystore for key attestation of LTK is limitee
112  *                  to this mode defined by UserManager.
113  *
114  * Returns          bool
115  *
116  ******************************************************************************/
117 bool is_single_user_mode(void);
118 
119 /*******************************************************************************
120  *
121  * Function         btif_get_adapter_properties
122  *
123  * Description      Fetches all local adapter properties
124  *
125  * Returns          bt_status_t
126  *
127  ******************************************************************************/
128 bt_status_t btif_get_adapter_properties(void);
129 
130 /*******************************************************************************
131  *
132  * Function         btif_get_adapter_property
133  *
134  * Description      Fetches property value from local cache
135  *
136  * Returns          bt_status_t
137  *
138  ******************************************************************************/
139 bt_status_t btif_get_adapter_property(bt_property_type_t type);
140 
141 /*******************************************************************************
142  *
143  * Function         btif_set_adapter_property
144  *
145  * Description      Updates core stack with property value and stores it in
146  *                  local cache
147  *
148  * Returns          bt_status_t
149  *
150  ******************************************************************************/
151 bt_status_t btif_set_adapter_property(const bt_property_t* property);
152 
153 /*******************************************************************************
154  *
155  * Function         btif_get_remote_device_property
156  *
157  * Description      Fetches the remote device property from the NVRAM
158  *
159  * Returns          bt_status_t
160  *
161  ******************************************************************************/
162 bt_status_t btif_get_remote_device_property(RawAddress* remote_addr,
163                                             bt_property_type_t type);
164 
165 /*******************************************************************************
166  *
167  * Function         btif_get_remote_device_properties
168  *
169  * Description      Fetches all the remote device properties from NVRAM
170  *
171  * Returns          bt_status_t
172  *
173  ******************************************************************************/
174 bt_status_t btif_get_remote_device_properties(RawAddress* remote_addr);
175 
176 /*******************************************************************************
177  *
178  * Function         btif_set_remote_device_property
179  *
180  * Description      Writes the remote device property to NVRAM.
181  *                  Currently, BT_PROPERTY_REMOTE_FRIENDLY_NAME is the only
182  *                  remote device property that can be set
183  *
184  * Returns          bt_status_t
185  *
186  ******************************************************************************/
187 bt_status_t btif_set_remote_device_property(RawAddress* remote_addr,
188                                             const bt_property_t* property);
189 
190 /*******************************************************************************
191  *
192  * Function         btif_get_remote_service_record
193  *
194  * Description      Looks up the service matching uuid on the remote device
195  *                  and fetches the SCN and service_name if the UUID is found
196  *
197  * Returns          bt_status_t
198  *
199  ******************************************************************************/
200 bt_status_t btif_get_remote_service_record(const RawAddress& remote_addr,
201                                            const bluetooth::Uuid& uuid);
202 
203 /*******************************************************************************
204  *  BTIF DM API
205  ******************************************************************************/
206 
207 /*******************************************************************************
208  *
209  * Function         btif_dm_start_discovery
210  *
211  * Description      Start device discovery/inquiry
212  *
213  *
214  * Returns          bt_status_t
215  *
216  ******************************************************************************/
217 bt_status_t btif_dm_start_discovery(void);
218 
219 /*******************************************************************************
220  *
221  * Function         btif_dm_cancel_discovery
222  *
223  * Description      Cancels search
224  *
225  * Returns          bt_status_t
226  *
227  ******************************************************************************/
228 bt_status_t btif_dm_cancel_discovery(void);
229 
230 /*******************************************************************************
231  *
232  * Function         btif_dm_create_bond
233  *
234  * Description      Initiate bonding with the specified device
235  *
236  * Returns          bt_status_t
237  *
238  ******************************************************************************/
239 bt_status_t btif_dm_create_bond(const RawAddress* bd_addr, int transport);
240 
241 /*******************************************************************************
242  *
243  * Function         btif_dm_create_bond_out_of_band
244  *
245  * Description      Initiate bonding with the specified device using OOB data.
246  *
247  * Returns          bt_status_t
248  *
249  ******************************************************************************/
250 bt_status_t btif_dm_create_bond_out_of_band(
251     const RawAddress* bd_addr, int transport,
252     const bt_out_of_band_data_t* oob_data);
253 
254 /*******************************************************************************
255  *
256  * Function         btif_dm_cancel_bond
257  *
258  * Description      Initiate bonding with the specified device
259  *
260  * Returns          bt_status_t
261  *
262  ******************************************************************************/
263 bt_status_t btif_dm_cancel_bond(const RawAddress* bd_addr);
264 
265 /*******************************************************************************
266  *
267  * Function         btif_dm_remove_bond
268  *
269  * Description      Removes bonding with the specified device
270  *
271  * Returns          bt_status_t
272  *
273  ******************************************************************************/
274 bt_status_t btif_dm_remove_bond(const RawAddress* bd_addr);
275 
276 /*******************************************************************************
277  *
278  * Function         btif_dm_get_connection_state
279  *
280  * Description      Returns whether the remote device is currently connected
281  *
282  * Returns          0 if not connected
283  *
284  ******************************************************************************/
285 uint16_t btif_dm_get_connection_state(const RawAddress* bd_addr);
286 
287 /*******************************************************************************
288  *
289  * Function         btif_dm_pin_reply
290  *
291  * Description      BT legacy pairing - PIN code reply
292  *
293  * Returns          bt_status_t
294  *
295  ******************************************************************************/
296 bt_status_t btif_dm_pin_reply(const RawAddress* bd_addr, uint8_t accept,
297                               uint8_t pin_len, bt_pin_code_t* pin_code);
298 
299 /*******************************************************************************
300  *
301  * Function         btif_dm_passkey_reply
302  *
303  * Description      BT SSP passkey reply
304  *
305  * Returns          bt_status_t
306  *
307  ******************************************************************************/
308 bt_status_t btif_dm_passkey_reply(const RawAddress* bd_addr, uint8_t accept,
309                                   uint32_t passkey);
310 
311 /*******************************************************************************
312  *
313  * Function         btif_dm_ssp_reply
314  *
315  * Description      BT SSP Reply - Just Works, Numeric Comparison & Passkey
316  *                  Entry
317  *
318  * Returns          bt_status_t
319  *
320  ******************************************************************************/
321 bt_status_t btif_dm_ssp_reply(const RawAddress* bd_addr,
322                               bt_ssp_variant_t variant, uint8_t accept,
323                               uint32_t passkey);
324 
325 /*******************************************************************************
326  *
327  * Function         btif_dm_get_adapter_property
328  *
329  * Description      Queries the BTA for the adapter property
330  *
331  * Returns          bt_status_t
332  *
333  ******************************************************************************/
334 bt_status_t btif_dm_get_adapter_property(bt_property_t* prop);
335 
336 /*******************************************************************************
337  *
338  * Function         btif_dm_get_remote_services
339  *
340  * Description      Start SDP to get remote services
341  *
342  * Returns          bt_status_t
343  *
344  ******************************************************************************/
345 bt_status_t btif_dm_get_remote_service_record(const RawAddress& remote_addr,
346                                               const bluetooth::Uuid& uuid);
347 
348 /*******************************************************************************
349  *
350  * Function         btif_dm_get_remote_services
351  *
352  * Description      Start SDP to get remote services
353  *
354  * Returns          bt_status_t
355  *
356  ******************************************************************************/
357 bt_status_t btif_dm_get_remote_services(const RawAddress& remote_addr);
358 
359 /*******************************************************************************
360  *
361  * Function         btif_dm_get_remote_services_by_transport
362  *
363  * Description      Start SDP to get remote services by transport
364  *
365  * Returns          bt_status_t
366  *
367  ******************************************************************************/
368 bt_status_t btif_dm_get_remote_services_by_transport(RawAddress* remote_addr,
369                                                      int transport);
370 
371 /*******************************************************************************
372  *
373  * Function         btif_dut_mode_configure
374  *
375  * Description      Configure Test Mode - 'enable' to 1 puts the device in test
376  *                  mode and 0 exits test mode
377  *
378  * Returns          BT_STATUS_SUCCESS on success
379  *
380  ******************************************************************************/
381 bt_status_t btif_dut_mode_configure(uint8_t enable);
382 
383 /*******************************************************************************
384  *
385  * Function         btif_dut_mode_send
386  *
387  * Description     Sends a HCI Vendor specific command to the controller
388  *
389  * Returns          BT_STATUS_SUCCESS on success
390  *
391  ******************************************************************************/
392 bt_status_t btif_dut_mode_send(uint16_t opcode, uint8_t* buf, uint8_t len);
393 
394 /*******************************************************************************
395  *
396  * Function         btif_le_test_mode
397  *
398  * Description     Sends a HCI BLE Test command to the Controller
399  *
400  * Returns          BT_STATUS_SUCCESS on success
401  *
402  ******************************************************************************/
403 bt_status_t btif_le_test_mode(uint16_t opcode, uint8_t* buf, uint8_t len);
404 
405 /*******************************************************************************
406  *
407  * Function         btif_dm_read_energy_info
408  *
409  * Description     Reads the energy info from controller
410  *
411  * Returns          void
412  *
413  ******************************************************************************/
414 void btif_dm_read_energy_info();
415 
416 /*******************************************************************************
417  *
418  * Function         btif_config_hci_snoop_log
419  *
420  * Description     enable or disable HCI snoop log
421  *
422  * Returns          BT_STATUS_SUCCESS on success
423  *
424  ******************************************************************************/
425 bt_status_t btif_config_hci_snoop_log(uint8_t enable);
426 
427 /*******************************************************************************
428  *
429  * Function         btif_debug_bond_event_dump
430  *
431  * Description     Dump bond event information
432  *
433  * Returns          void
434  *
435  ******************************************************************************/
436 void btif_debug_bond_event_dump(int fd);
437 
438 #endif /* BTIF_API_H */
439