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