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