btif_api.h revision 1bd691cb8ae3c23ffe25b5ca1fcfd11b82a9fbda
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/*******************************************************************************
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*******************************************************************************/
205bt_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*******************************************************************************/
216bt_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*******************************************************************************/
227bt_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*******************************************************************************/
238bt_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*******************************************************************************/
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,
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*******************************************************************************/
307bt_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*******************************************************************************/
320bt_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*******************************************************************************/
331bt_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*******************************************************************************/
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, 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*******************************************************************************/
367bt_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*******************************************************************************/
378bt_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*******************************************************************************/
389bt_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*******************************************************************************/
400void 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*******************************************************************************/
411bt_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*******************************************************************************/
422void btif_debug_bond_event_dump(int fd);
423#endif /* BTIF_API_H */
424