• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 *******************************************************************************/
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         btif_get_adapter_properties
109 **
110 ** Description      Fetches all local adapter properties
111 **
112 ** Returns          bt_status_t
113 **
114 *******************************************************************************/
115 bt_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 *******************************************************************************/
126 bt_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 *******************************************************************************/
138 bt_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 *******************************************************************************/
149 bt_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 *******************************************************************************/
161 bt_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 *******************************************************************************/
174 bt_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 *******************************************************************************/
187 bt_status_t btif_get_remote_service_record( bt_bdaddr_t *remote_addr,
188                                             bt_uuid_t *uuid);
189 
190 
191 /*******************************************************************************
192 **  BTIF DM API
193 ********************************************************************************/
194 
195 /*******************************************************************************
196 **
197 ** Function         btif_dm_start_discovery
198 **
199 ** Description      Start device discovery/inquiry
200 **
201 **
202 ** Returns          bt_status_t
203 **
204 *******************************************************************************/
205 bt_status_t btif_dm_start_discovery(void);
206 
207 /*******************************************************************************
208 **
209 ** Function         btif_dm_cancel_discovery
210 **
211 ** Description      Cancels search
212 **
213 ** Returns          bt_status_t
214 **
215 *******************************************************************************/
216 bt_status_t btif_dm_cancel_discovery(void);
217 
218 /*******************************************************************************
219 **
220 ** Function         btif_dm_create_bond
221 **
222 ** Description      Initiate bonding with the specified device
223 **
224 ** Returns          bt_status_t
225 **
226 *******************************************************************************/
227 bt_status_t btif_dm_create_bond(const bt_bdaddr_t *bd_addr, int transport);
228 
229 /*******************************************************************************
230 **
231 ** Function         btif_dm_create_bond_out_of_band
232 **
233 ** Description      Initiate bonding with the specified device using OOB data.
234 **
235 ** Returns          bt_status_t
236 **
237 *******************************************************************************/
238 bt_status_t btif_dm_create_bond_out_of_band(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 *******************************************************************************/
250 bt_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 *******************************************************************************/
261 bt_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 *******************************************************************************/
272 uint16_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 *******************************************************************************/
283 bt_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 *******************************************************************************/
295 bt_status_t btif_dm_passkey_reply( const bt_bdaddr_t *bd_addr,
296                                    uint8_t accept, uint32_t passkey);
297 
298 /*******************************************************************************
299 **
300 ** Function         btif_dm_ssp_reply
301 **
302 ** Description      BT SSP Reply - Just Works, Numeric Comparison & Passkey Entry
303 **
304 ** Returns          bt_status_t
305 **
306 *******************************************************************************/
307 bt_status_t btif_dm_ssp_reply( const bt_bdaddr_t *bd_addr,
308                               bt_ssp_variant_t variant, uint8_t accept,
309                               uint32_t passkey);
310 
311 /*******************************************************************************
312 **
313 ** Function         btif_dm_get_adapter_property
314 **
315 ** Description      Queries the BTA for the adapter property
316 **
317 ** Returns          bt_status_t
318 **
319 *******************************************************************************/
320 bt_status_t btif_dm_get_adapter_property(bt_property_t *prop);
321 
322 /*******************************************************************************
323 **
324 ** Function         btif_dm_get_remote_services
325 **
326 ** Description      Start SDP to get remote services
327 **
328 ** Returns          bt_status_t
329 **
330 *******************************************************************************/
331 bt_status_t btif_dm_get_remote_service_record(bt_bdaddr_t *remote_addr,
332                                               bt_uuid_t *uuid);
333 
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 *******************************************************************************/
344 bt_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 *******************************************************************************/
355 bt_status_t btif_dm_get_remote_services_by_transport(bt_bdaddr_t *remote_addr, int transport);
356 
357 /*******************************************************************************
358 **
359 ** Function         btif_dut_mode_configure
360 **
361 ** Description      Configure Test Mode - 'enable' to 1 puts the device in test mode and 0 exits
362 **                       test mode
363 **
364 ** Returns          BT_STATUS_SUCCESS on success
365 **
366 *******************************************************************************/
367 bt_status_t btif_dut_mode_configure(uint8_t enable);
368 
369 /*******************************************************************************
370 **
371 ** Function         btif_dut_mode_send
372 **
373 ** Description     Sends a HCI Vendor specific command to the controller
374 **
375 ** Returns          BT_STATUS_SUCCESS on success
376 **
377 *******************************************************************************/
378 bt_status_t btif_dut_mode_send(uint16_t opcode, uint8_t *buf, uint8_t len);
379 
380 /*******************************************************************************
381 **
382 ** Function         btif_le_test_mode
383 **
384 ** Description     Sends a HCI BLE Test command to the Controller
385 **
386 ** Returns          BT_STATUS_SUCCESS on success
387 **
388 *******************************************************************************/
389 bt_status_t btif_le_test_mode(uint16_t opcode, uint8_t *buf, uint8_t len);
390 
391 /*******************************************************************************
392 **
393 ** Function         btif_dm_read_energy_info
394 **
395 ** Description     Reads the energy info from controller
396 **
397 ** Returns          void
398 **
399 *******************************************************************************/
400 void btif_dm_read_energy_info();
401 
402 /*******************************************************************************
403 **
404 ** Function         btif_config_hci_snoop_log
405 **
406 ** Description     enable or disable HCI snoop log
407 **
408 ** Returns          BT_STATUS_SUCCESS on success
409 **
410 *******************************************************************************/
411 bt_status_t btif_config_hci_snoop_log(uint8_t enable);
412 
413 /*******************************************************************************
414 **
415 ** Function         btif_debug_bond_event_dump
416 **
417 ** Description     Dump bond event information
418 **
419 ** Returns          void
420 **
421 *******************************************************************************/
422 void btif_debug_bond_event_dump(int fd);
423 #endif /* BTIF_API_H */
424