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_cleanup_bluetooth 67 * 68 * Description Cleanup BTIF state. 69 * 70 * 71 * Returns void 72 * 73 ******************************************************************************/ 74 bt_status_t btif_cleanup_bluetooth(void); 75 76 /******************************************************************************* 77 * 78 * Function is_restricted_mode 79 * 80 * Description Checks if BT was enabled in restriced mode. In restricted 81 * mode, bonds that are created are marked as temporary. 82 * These bonds persist until we leave restricted mode, at 83 * which point they will be deleted from the config. Also 84 * while in restricted mode, the user can access devices 85 * that are already paired before entering restricted mode, 86 * but they cannot remove any of these devices. 87 * 88 * Returns bool 89 * 90 ******************************************************************************/ 91 bool is_restricted_mode(void); 92 93 /******************************************************************************* 94 * 95 * Function is_common_criteria_mode 96 * 97 * Description Check if BT is enabled in common criteria mode. In this 98 * mode, will use the LTK from the keystore to authenticate. 99 * 100 * Returns bool 101 * 102 ******************************************************************************/ 103 bool is_common_criteria_mode(void); 104 105 /******************************************************************************* 106 * 107 * Function get_common_criteria_config_compare_result 108 * 109 * Description Get the common criteria config compare result for confirming 110 * the config checksum compare result. When the common criteria 111 * mode doesn't enable, it should be all pass (0b11). 112 * Bit define: 113 * CONFIG_FILE_COMPARE_PASS = 0b01 114 * CONFIG_BACKUP_COMPARE_PASS = 0b10 115 * 116 * Returns int 117 * 118 ******************************************************************************/ 119 int get_common_criteria_config_compare_result(void); 120 121 /******************************************************************************* 122 * 123 * Function is_atv_device 124 * 125 * Description Returns true if the local device is an Android TV 126 * device, false if it is not. 127 * 128 * Returns bool 129 * 130 ******************************************************************************/ 131 bool is_atv_device(void); 132 133 /******************************************************************************* 134 * 135 * Function btif_get_adapter_properties 136 * 137 * Description Fetches all local adapter properties 138 * 139 ******************************************************************************/ 140 void btif_get_adapter_properties(void); 141 142 bt_property_t* property_deep_copy(const bt_property_t* prop); 143 144 /******************************************************************************* 145 * 146 * Function btif_get_adapter_property 147 * 148 * Description Fetches property value from local cache 149 * 150 ******************************************************************************/ 151 void btif_get_adapter_property(bt_property_type_t type); 152 153 /******************************************************************************* 154 * 155 * Function btif_set_adapter_property 156 * 157 * Description Updates core stack with property value and stores it in 158 * local cache 159 * 160 ******************************************************************************/ 161 void btif_set_adapter_property(bt_property_t* property); 162 163 /******************************************************************************* 164 * 165 * Function btif_get_remote_device_property 166 * 167 * Description Fetches the remote device property from the NVRAM 168 * 169 ******************************************************************************/ 170 void btif_get_remote_device_property(RawAddress remote_addr, 171 bt_property_type_t type); 172 173 /******************************************************************************* 174 * 175 * Function btif_get_remote_device_properties 176 * 177 * Description Fetches all the remote device properties from NVRAM 178 * 179 ******************************************************************************/ 180 void btif_get_remote_device_properties(RawAddress remote_addr); 181 182 /******************************************************************************* 183 * 184 * Function btif_set_remote_device_property 185 * 186 * Description Writes the remote device property to NVRAM. 187 * Currently, BT_PROPERTY_REMOTE_FRIENDLY_NAME is the only 188 * remote device property that can be set 189 * 190 ******************************************************************************/ 191 void btif_set_remote_device_property(RawAddress* remote_addr, 192 bt_property_t* property); 193 194 /******************************************************************************* 195 * BTIF DM API 196 ******************************************************************************/ 197 198 /******************************************************************************* 199 * 200 * Function btif_dm_start_discovery 201 * 202 * Description Start device discovery/inquiry 203 * 204 ******************************************************************************/ 205 void btif_dm_start_discovery(void); 206 207 /******************************************************************************* 208 * 209 * Function btif_dm_cancel_discovery 210 * 211 * Description Cancels search 212 * 213 ******************************************************************************/ 214 void btif_dm_cancel_discovery(void); 215 216 bool btif_dm_pairing_is_busy(); 217 /******************************************************************************* 218 * 219 * Function btif_dm_create_bond 220 * 221 * Description Initiate bonding with the specified device 222 * 223 ******************************************************************************/ 224 void btif_dm_create_bond(const RawAddress bd_addr, int transport); 225 226 /******************************************************************************* 227 * 228 * Function btif_dm_create_bond_out_of_band 229 * 230 * Description Initiate bonding with the specified device using OOB data. 231 * 232 ******************************************************************************/ 233 void btif_dm_create_bond_out_of_band(const RawAddress bd_addr, 234 tBT_TRANSPORT transport, 235 const bt_oob_data_t p192_data, 236 const bt_oob_data_t p256_data); 237 238 /******************************************************************************* 239 * 240 * Function btif_dm_cancel_bond 241 * 242 * Description Initiate bonding with the specified device 243 * 244 ******************************************************************************/ 245 void btif_dm_cancel_bond(const RawAddress bd_addr); 246 247 /******************************************************************************* 248 * 249 * Function btif_dm_remove_bond 250 * 251 * Description Removes bonding with the specified device 252 * 253 ******************************************************************************/ 254 void btif_dm_remove_bond(const RawAddress bd_addr); 255 256 /******************************************************************************* 257 * 258 * Function btif_dm_get_connection_state 259 * 260 * Description Returns whether the remote device is currently connected 261 * 262 * Returns 0 if not connected 263 * 264 ******************************************************************************/ 265 uint16_t btif_dm_get_connection_state(const RawAddress* bd_addr); 266 267 /******************************************************************************* 268 * 269 * Function btif_dm_pin_reply 270 * 271 * Description BT legacy pairing - PIN code reply 272 * 273 ******************************************************************************/ 274 void btif_dm_pin_reply(const RawAddress bd_addr, uint8_t accept, 275 uint8_t pin_len, bt_pin_code_t pin_code); 276 277 /******************************************************************************* 278 * 279 * Function btif_dm_passkey_reply 280 * 281 * Description BT SSP passkey reply 282 * 283 * Returns bt_status_t 284 * 285 ******************************************************************************/ 286 bt_status_t btif_dm_passkey_reply(const RawAddress* bd_addr, uint8_t accept, 287 uint32_t passkey); 288 289 /******************************************************************************* 290 * 291 * Function btif_dm_ssp_reply 292 * 293 * Description BT SSP Reply - Just Works, Numeric Comparison & Passkey 294 * Entry 295 * 296 ******************************************************************************/ 297 void btif_dm_ssp_reply(const RawAddress bd_addr, bt_ssp_variant_t variant, 298 uint8_t accept); 299 300 /******************************************************************************* 301 * 302 * Function btif_dm_get_adapter_property 303 * 304 * Description Queries the BTA for the adapter property 305 * 306 * Returns bt_status_t 307 * 308 ******************************************************************************/ 309 bt_status_t btif_dm_get_adapter_property(bt_property_t* prop); 310 311 /******************************************************************************* 312 * 313 * Function btif_dm_get_remote_services 314 * 315 * Description Start SDP to get remote services 316 * 317 * Returns bt_status_t 318 * 319 ******************************************************************************/ 320 void btif_dm_get_remote_services(const RawAddress remote_addr, int transport); 321 322 /******************************************************************************* 323 * 324 * Function btif_dut_mode_configure 325 * 326 * Description Configure Test Mode - 'enable' to 1 puts the device in test 327 * mode and 0 exits test mode 328 * 329 ******************************************************************************/ 330 void btif_dut_mode_configure(uint8_t enable); 331 332 bool btif_is_dut_mode(); 333 334 /******************************************************************************* 335 * 336 * Function btif_dut_mode_send 337 * 338 * Description Sends a HCI Vendor specific command to the controller 339 * 340 ******************************************************************************/ 341 void btif_dut_mode_send(uint16_t opcode, uint8_t* buf, uint8_t len); 342 343 void btif_ble_transmitter_test(uint8_t tx_freq, uint8_t test_data_len, 344 uint8_t packet_payload); 345 346 void btif_ble_receiver_test(uint8_t rx_freq); 347 void btif_ble_test_end(); 348 349 /******************************************************************************* 350 * 351 * Function btif_dm_read_energy_info 352 * 353 * Description Reads the energy info from controller 354 * 355 * Returns void 356 * 357 ******************************************************************************/ 358 void btif_dm_read_energy_info(); 359 360 /******************************************************************************* 361 * 362 * Function btif_config_hci_snoop_log 363 * 364 * Description enable or disable HCI snoop log 365 * 366 * Returns BT_STATUS_SUCCESS on success 367 * 368 ******************************************************************************/ 369 bt_status_t btif_config_hci_snoop_log(uint8_t enable); 370 371 /******************************************************************************* 372 * 373 * Function btif_debug_bond_event_dump 374 * 375 * Description Dump bond event information 376 * 377 * Returns void 378 * 379 ******************************************************************************/ 380 void btif_debug_bond_event_dump(int fd); 381 382 /******************************************************************************* 383 * 384 * Function btif_set_dynamic_audio_buffer_size 385 * 386 * Description Set dynamic audio buffer size 387 * 388 * Returns BT_STATUS_SUCCESS on success 389 * 390 ******************************************************************************/ 391 bt_status_t btif_set_dynamic_audio_buffer_size(int codec, int size); 392 393 #endif /* BTIF_API_H */ 394