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