1 /****************************************************************************** 2 * 3 * Copyright 1999-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 * This file contains the Bluetooth Manager (BTM) API function external 22 * definitions. 23 * 24 ******************************************************************************/ 25 #ifndef BTM_BLE_API_H 26 #define BTM_BLE_API_H 27 28 #include <base/callback_forward.h> 29 #include <hardware/bt_common_types.h> 30 #include <memory> 31 #include "bt_common.h" 32 #include "btm_api.h" 33 #include "btm_ble_api_types.h" 34 #include "osi/include/alarm.h" 35 36 /***************************************************************************** 37 * EXTERNAL FUNCTION DECLARATIONS 38 ****************************************************************************/ 39 /******************************************************************************* 40 * 41 * Function BTM_SecAddBleDevice 42 * 43 * Description Add/modify device. This function will be normally called 44 * during host startup to restore all required information 45 * for a LE device stored in the NVRAM. 46 * 47 * Parameters: bd_addr - BD address of the peer 48 * bd_name - Name of the peer device. NULL if unknown. 49 * dev_type - Remote device's device type. 50 * addr_type - LE device address type. 51 * 52 * Returns true if added OK, else false 53 * 54 ******************************************************************************/ 55 extern bool BTM_SecAddBleDevice(const RawAddress& bd_addr, BD_NAME bd_name, 56 tBT_DEVICE_TYPE dev_type, 57 tBLE_ADDR_TYPE addr_type); 58 59 /******************************************************************************* 60 * 61 * Function BTM_SecAddBleKey 62 * 63 * Description Add/modify LE device information. This function will be 64 * normally called during host startup to restore all required 65 * information stored in the NVRAM. 66 * 67 * Parameters: bd_addr - BD address of the peer 68 * p_le_key - LE key values. 69 * key_type - LE SMP key type. 70 * 71 * Returns true if added OK, else false 72 * 73 ******************************************************************************/ 74 extern bool BTM_SecAddBleKey(const RawAddress& bd_addr, 75 tBTM_LE_KEY_VALUE* p_le_key, 76 tBTM_LE_KEY_TYPE key_type); 77 78 /******************************************************************************* 79 * 80 * Function BTM_BleSetAdvParams 81 * 82 * Description This function is called to set advertising parameters. 83 * 84 * Parameters: None. 85 * 86 * Returns void 87 * 88 ******************************************************************************/ 89 extern tBTM_STATUS BTM_BleSetAdvParams(uint16_t adv_int_min, 90 uint16_t adv_int_max, 91 tBLE_BD_ADDR* p_dir_bda, 92 tBTM_BLE_ADV_CHNL_MAP chnl_map); 93 94 /******************************************************************************* 95 * 96 * Function BTM_BleObtainVendorCapabilities 97 * 98 * Description This function is called to obatin vendor capabilties 99 * 100 * Parameters p_cmn_vsc_cb - Returns the vednor capabilities 101 * 102 * Returns void 103 * 104 ******************************************************************************/ 105 extern void BTM_BleObtainVendorCapabilities(tBTM_BLE_VSC_CB* p_cmn_vsc_cb); 106 107 /** 108 * This function is called to set scan parameters. |cb| is called with operation 109 * status 110 **/ 111 extern void BTM_BleSetScanParams(uint32_t scan_interval, uint32_t scan_window, 112 tBLE_SCAN_MODE scan_type, 113 base::Callback<void(uint8_t)> cb); 114 115 /******************************************************************************* 116 * 117 * Function BTM_BleGetVendorCapabilities 118 * 119 * Description This function reads local LE features 120 * 121 * Parameters p_cmn_vsc_cb : Locala LE capability structure 122 * 123 * Returns void 124 * 125 ******************************************************************************/ 126 extern void BTM_BleGetVendorCapabilities(tBTM_BLE_VSC_CB* p_cmn_vsc_cb); 127 /******************************************************************************* 128 * 129 * Function BTM_BleSetStorageConfig 130 * 131 * Description This function is called to setup storage configuration and 132 * setup callbacks. 133 * 134 * Parameters uint8_t batch_scan_full_max -Batch scan full maximum 135 uint8_t batch_scan_trunc_max - Batch scan truncated value 136 maximum 137 uint8_t batch_scan_notify_threshold - Threshold value 138 cb - Setup callback 139 tBTM_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback -Threshold 140 callback 141 void *p_ref - Reference value 142 * 143 * 144 ******************************************************************************/ 145 extern void BTM_BleSetStorageConfig( 146 uint8_t batch_scan_full_max, uint8_t batch_scan_trunc_max, 147 uint8_t batch_scan_notify_threshold, 148 base::Callback<void(uint8_t /* status */)> cb, 149 tBTM_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback, tBTM_BLE_REF_VALUE ref_value); 150 151 /* This function is called to enable batch scan */ 152 extern void BTM_BleEnableBatchScan( 153 tBTM_BLE_BATCH_SCAN_MODE scan_mode, uint32_t scan_interval, 154 uint32_t scan_window, tBTM_BLE_DISCARD_RULE discard_rule, 155 tBLE_ADDR_TYPE addr_type, base::Callback<void(uint8_t /* status */)> cb); 156 157 /* This function is called to disable batch scanning */ 158 extern void BTM_BleDisableBatchScan( 159 base::Callback<void(uint8_t /* status */)> cb); 160 161 /* This function is called to read batch scan reports */ 162 extern void BTM_BleReadScanReports(tBLE_SCAN_MODE scan_mode, 163 tBTM_BLE_SCAN_REP_CBACK cb); 164 165 /* This function is called to setup the callback for tracking */ 166 extern void BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK* p_track_cback, 167 tBTM_BLE_REF_VALUE ref_value); 168 169 /******************************************************************************* 170 * 171 * Function BTM_BleWriteScanRsp 172 * 173 * Description This function is called to write LE scan response. 174 * 175 * Parameters: p_scan_rsp: scan response. 176 * 177 * Returns status 178 * 179 ******************************************************************************/ 180 extern void BTM_BleWriteScanRsp(uint8_t* data, uint8_t length, 181 tBTM_BLE_ADV_DATA_CMPL_CBACK* p_adv_data_cback); 182 183 /******************************************************************************* 184 * 185 * Function BTM_BleObserve 186 * 187 * Description This procedure keep the device listening for advertising 188 * events from a broadcast device. 189 * 190 * Parameters start: start or stop observe. 191 * 192 * Returns void 193 * 194 ******************************************************************************/ 195 extern tBTM_STATUS BTM_BleObserve(bool start, uint8_t duration, 196 tBTM_INQ_RESULTS_CB* p_results_cb, 197 tBTM_CMPL_CB* p_cmpl_cb); 198 199 /******************************************************************************* 200 * 201 * Function BTM_GetDeviceIDRoot 202 * 203 * Description This function is called to read the local device identity 204 * root. 205 * 206 * Returns void 207 * the local device ER is copied into er 208 * 209 ******************************************************************************/ 210 extern void BTM_GetDeviceIDRoot(BT_OCTET16 ir); 211 212 /******************************************************************************* 213 * 214 * Function BTM_GetDeviceEncRoot 215 * 216 * Description This function is called to read the local device encryption 217 * root. 218 * 219 * Returns void 220 * the local device ER is copied into er 221 * 222 ******************************************************************************/ 223 extern void BTM_GetDeviceEncRoot(BT_OCTET16 er); 224 225 /******************************************************************************* 226 * 227 * Function BTM_GetDeviceDHK 228 * 229 * Description This function is called to read the local device DHK. 230 * 231 * Returns void 232 * the local device DHK is copied into dhk 233 * 234 ******************************************************************************/ 235 extern void BTM_GetDeviceDHK(BT_OCTET16 dhk); 236 237 /******************************************************************************* 238 * 239 * Function BTM_SecurityGrant 240 * 241 * Description This function is called to grant security process. 242 * 243 * Parameters bd_addr - peer device bd address. 244 * res - result of the operation BTM_SUCCESS if success. 245 * Otherwise, BTM_REPEATED_ATTEMPTS is too many 246 * attempts. 247 * 248 * Returns None 249 * 250 ******************************************************************************/ 251 extern void BTM_SecurityGrant(const RawAddress& bd_addr, uint8_t res); 252 253 /******************************************************************************* 254 * 255 * Function BTM_BlePasskeyReply 256 * 257 * Description This function is called after Security Manager submitted 258 * passkey request to the application. 259 * 260 * Parameters: bd_addr - Address of the device for which passkey was 261 * requested 262 * res - result of the operation SMP_SUCCESS if success 263 * passkey - numeric value in the range of 264 * BTM_MIN_PASSKEY_VAL(0) - 265 * BTM_MAX_PASSKEY_VAL(999999(0xF423F)). 266 * 267 ******************************************************************************/ 268 extern void BTM_BlePasskeyReply(const RawAddress& bd_addr, uint8_t res, 269 uint32_t passkey); 270 271 /******************************************************************************* 272 * 273 * Function BTM_BleConfirmReply 274 * 275 * Description This function is called after Security Manager submitted 276 * numeric comparison request to the application. 277 * 278 * Parameters: bd_addr - Address of the device with which numeric 279 * comparison was requested 280 * res - comparison result BTM_SUCCESS if success 281 * 282 ******************************************************************************/ 283 extern void BTM_BleConfirmReply(const RawAddress& bd_addr, uint8_t res); 284 285 /******************************************************************************* 286 * 287 * Function BTM_LeOobDataReply 288 * 289 * Description This function is called to provide the OOB data for 290 * SMP in response to BTM_LE_OOB_REQ_EVT 291 * 292 * Parameters: bd_addr - Address of the peer device 293 * res - result of the operation SMP_SUCCESS if success 294 * p_data - simple pairing Randomizer C. 295 * 296 ******************************************************************************/ 297 extern void BTM_BleOobDataReply(const RawAddress& bd_addr, uint8_t res, 298 uint8_t len, uint8_t* p_data); 299 300 /******************************************************************************* 301 * 302 * Function BTM_BleSecureConnectionOobDataReply 303 * 304 * Description This function is called to provide the OOB data for 305 * SMP in response to BTM_LE_OOB_REQ_EVT when secure connection 306 * data is available 307 * 308 * Parameters: bd_addr - Address of the peer device 309 * p_c - pointer to Confirmation 310 * p_r - pointer to Randomizer. 311 * 312 ******************************************************************************/ 313 extern void BTM_BleSecureConnectionOobDataReply(const RawAddress& bd_addr, 314 uint8_t* p_c, uint8_t* p_r); 315 316 /******************************************************************************* 317 * 318 * Function BTM_BleDataSignature 319 * 320 * Description This function is called to sign the data using AES128 CMAC 321 * algorith. 322 * 323 * Parameter bd_addr: target device the data to be signed for. 324 * p_text: singing data 325 * len: length of the signing data 326 * signature: output parameter where data signature is going to 327 * be stored. 328 * 329 * Returns true if signing sucessul, otherwise false. 330 * 331 ******************************************************************************/ 332 extern bool BTM_BleDataSignature(const RawAddress& bd_addr, uint8_t* p_text, 333 uint16_t len, BLE_SIGNATURE signature); 334 335 /******************************************************************************* 336 * 337 * Function BTM_BleVerifySignature 338 * 339 * Description This function is called to verify the data signature 340 * 341 * Parameter bd_addr: target device the data to be signed for. 342 * p_orig: original data before signature. 343 * len: length of the signing data 344 * counter: counter used when doing data signing 345 * p_comp: signature to be compared against. 346 347 * Returns true if signature verified correctly; otherwise false. 348 * 349 ******************************************************************************/ 350 extern bool BTM_BleVerifySignature(const RawAddress& bd_addr, uint8_t* p_orig, 351 uint16_t len, uint32_t counter, 352 uint8_t* p_comp); 353 354 /******************************************************************************* 355 * 356 * Function BTM_ReadConnectionAddr 357 * 358 * Description Read the local device random address. 359 * 360 * Returns void 361 * 362 ******************************************************************************/ 363 extern void BTM_ReadConnectionAddr(const RawAddress& remote_bda, 364 RawAddress& local_conn_addr, 365 tBLE_ADDR_TYPE* p_addr_type); 366 367 /******************************************************************************* 368 * 369 * Function BTM_IsBleConnection 370 * 371 * Description This function is called to check if the connection handle 372 * for an LE link 373 * 374 * Returns true if connection is LE link, otherwise false. 375 * 376 ******************************************************************************/ 377 extern bool BTM_IsBleConnection(uint16_t conn_handle); 378 379 /******************************************************************************* 380 * 381 * Function BTM_ReadRemoteConnectionAddr 382 * 383 * Description Read the remote device address currently used. 384 * 385 * Returns void 386 * 387 ******************************************************************************/ 388 extern bool BTM_ReadRemoteConnectionAddr(const RawAddress& pseudo_addr, 389 RawAddress& conn_addr, 390 tBLE_ADDR_TYPE* p_addr_type); 391 392 /******************************************************************************* 393 * 394 * Function BTM_BleLoadLocalKeys 395 * 396 * Description Local local identity key, encryption root or sign counter. 397 * 398 * Parameters: key_type: type of key, can be BTM_BLE_KEY_TYPE_ID, 399 * BTM_BLE_KEY_TYPE_ER 400 * or BTM_BLE_KEY_TYPE_COUNTER. 401 * p_key: pointer to the key. 402 * 403 * Returns non2. 404 * 405 ******************************************************************************/ 406 extern void BTM_BleLoadLocalKeys(uint8_t key_type, tBTM_BLE_LOCAL_KEYS* p_key); 407 408 /** 409 * Set BLE connectable mode to auto connect 410 */ 411 extern void BTM_BleStartAutoConn(); 412 413 /******************************************************************************* 414 * 415 * Function BTM_BleUpdateBgConnDev 416 * 417 * Description This function is called to add or remove a device into/from 418 * background connection procedure. The background connection 419 * procedure is decided by the background connection type, it 420 *can be 421 * auto connection, or selective connection. 422 * 423 * Parameters add_remove: true to add; false to remove. 424 * remote_bda: device address to add/remove. 425 * 426 * Returns void 427 * 428 ******************************************************************************/ 429 extern bool BTM_BleUpdateBgConnDev(bool add_remove, 430 const RawAddress& remote_bda); 431 432 /******************************************************************************* 433 * 434 * Function BTM_BleClearBgConnDev 435 * 436 * Description This function is called to clear the whitelist, 437 * end any pending whitelist connections, 438 * and reset the local bg device list. 439 * 440 * Parameters void 441 * 442 * Returns void 443 * 444 ******************************************************************************/ 445 extern void BTM_BleClearBgConnDev(void); 446 447 /******************************************************** 448 * 449 * Function BTM_BleSetPrefConnParams 450 * 451 * Description Set a peripheral's preferred connection parameters. When 452 * any of the value does not want to be updated while others 453 * do, use BTM_BLE_CONN_PARAM_UNDEF for the ones want to 454 * leave untouched. 455 * 456 * Parameters: bd_addr - BD address of the peripheral 457 * min_conn_int - minimum preferred connection interval 458 * max_conn_int - maximum preferred connection interval 459 * slave_latency - preferred slave latency 460 * supervision_tout - preferred supervision timeout 461 * 462 * Returns void 463 * 464 ******************************************************************************/ 465 extern void BTM_BleSetPrefConnParams(const RawAddress& bd_addr, 466 uint16_t min_conn_int, 467 uint16_t max_conn_int, 468 uint16_t slave_latency, 469 uint16_t supervision_tout); 470 471 /****************************************************************************** 472 * 473 * Function BTM_BleSetConnScanParams 474 * 475 * Description Set scan parameters used in BLE connection request 476 * 477 * Parameters: scan_interval - scan interval 478 * scan_window - scan window 479 * 480 * Returns void 481 * 482 ******************************************************************************/ 483 extern void BTM_BleSetConnScanParams(uint32_t scan_interval, 484 uint32_t scan_window); 485 486 /****************************************************************************** 487 * 488 * Function BTM_BleReadControllerFeatures 489 * 490 * Description Reads BLE specific controller features 491 * 492 * Parameters: tBTM_BLE_CTRL_FEATURES_CBACK : Callback to notify when 493 * features are read 494 * 495 * Returns void 496 * 497 ******************************************************************************/ 498 extern void BTM_BleReadControllerFeatures( 499 tBTM_BLE_CTRL_FEATURES_CBACK* p_vsc_cback); 500 501 /******************************************************************************* 502 * 503 * Function BTM__BLEReadDiscoverability 504 * 505 * Description This function is called to read the current LE 506 * discoverability mode of the device. 507 * 508 * Returns BTM_BLE_NON_DISCOVERABLE ,BTM_BLE_LIMITED_DISCOVERABLE or 509 * BTM_BLE_GENRAL_DISCOVERABLE 510 * 511 ******************************************************************************/ 512 uint16_t BTM_BleReadDiscoverability(); 513 514 /******************************************************************************* 515 * 516 * Function BTM__BLEReadConnectability 517 * 518 * Description This function is called to read the current LE 519 * connectibility mode of the device. 520 * 521 * Returns BTM_BLE_NON_CONNECTABLE or BTM_BLE_CONNECTABLE 522 * 523 ******************************************************************************/ 524 extern uint16_t BTM_BleReadConnectability(); 525 526 /******************************************************************************* 527 * 528 * Function BTM_ReadDevInfo 529 * 530 * Description This function is called to read the device/address type 531 * of BD address. 532 * 533 * Parameter remote_bda: remote device address 534 * p_dev_type: output parameter to read the device type. 535 * p_addr_type: output parameter to read the address type. 536 * 537 ******************************************************************************/ 538 extern void BTM_ReadDevInfo(const RawAddress& remote_bda, 539 tBT_DEVICE_TYPE* p_dev_type, 540 tBLE_ADDR_TYPE* p_addr_type); 541 542 /******************************************************************************* 543 * 544 * Function BTM_ReadConnectedTransportAddress 545 * 546 * Description This function is called to read the paired device/address 547 * type of other device paired corresponding to the BD_address 548 * 549 * Parameter remote_bda: remote device address, carry out the transport 550 * address 551 * transport: active transport 552 * 553 * Return true if an active link is identified; false otherwise 554 * 555 ******************************************************************************/ 556 extern bool BTM_ReadConnectedTransportAddress(RawAddress* remote_bda, 557 tBT_TRANSPORT transport); 558 559 /******************************************************************************* 560 * 561 * Function BTM_BleConfigPrivacy 562 * 563 * Description This function is called to enable or disable the privacy in 564 * the local device. 565 * 566 * Parameters enable: true to enable it; false to disable it. 567 * 568 * Returns bool privacy mode set success; otherwise failed. 569 * 570 ******************************************************************************/ 571 extern bool BTM_BleConfigPrivacy(bool enable); 572 573 /******************************************************************************* 574 * 575 * Function BTM_BleLocalPrivacyEnabled 576 * 577 * Description Checks if local device supports private address 578 * 579 * Returns Return true if local privacy is enabled else false 580 * 581 ******************************************************************************/ 582 extern bool BTM_BleLocalPrivacyEnabled(void); 583 584 /******************************************************************************* 585 * 586 * Function BTM_BleEnableMixedPrivacyMode 587 * 588 * Description This function is called to enabled Mixed mode if privacy 1.2 589 * is applicable in controller. 590 * 591 * Parameters mixed_on: mixed mode to be used or not. 592 * 593 * Returns void 594 * 595 ******************************************************************************/ 596 extern void BTM_BleEnableMixedPrivacyMode(bool mixed_on); 597 598 /******************************************************************************* 599 * 600 * Function BTM_BleMaxMultiAdvInstanceCount 601 * 602 * Description Returns the maximum number of multi adv instances supported 603 * by the controller. 604 * 605 * Returns Max multi adv instance count 606 * 607 ******************************************************************************/ 608 extern uint8_t BTM_BleMaxMultiAdvInstanceCount(); 609 610 /******************************************************************************* 611 * 612 * Function BTM_BleSetConnectableMode 613 * 614 * Description This function is called to set BLE connectable mode for a 615 * peripheral device. 616 * 617 * Parameters connectable_mode: directed connectable mode, or 618 * non-directed. It can be 619 * BTM_BLE_CONNECT_EVT, 620 * BTM_BLE_CONNECT_DIR_EVT or 621 * BTM_BLE_CONNECT_LO_DUTY_DIR_EVT 622 * 623 * Returns BTM_ILLEGAL_VALUE if controller does not support BLE. 624 * BTM_SUCCESS is status set successfully; otherwise failure. 625 * 626 ******************************************************************************/ 627 extern tBTM_STATUS BTM_BleSetConnectableMode( 628 tBTM_BLE_CONN_MODE connectable_mode); 629 630 /******************************************************************************* 631 * 632 * Function BTM_BleTurnOnPrivacyOnRemote 633 * 634 * Description This function is called to enable or disable the privacy on 635 * the remote device. 636 * 637 * Parameters bd_addr: remote device address. 638 * privacy_on: true to enable it; false to disable it. 639 * 640 * Returns void 641 * 642 ******************************************************************************/ 643 extern void BTM_BleTurnOnPrivacyOnRemote(const RawAddress& bd_addr, 644 bool privacy_on); 645 646 /******************************************************************************* 647 * 648 * Function BTM_BleUpdateAdvFilterPolicy 649 * 650 * Description This function update the filter policy of advertiser. 651 * 652 * Parameter adv_policy: advertising filter policy 653 * 654 * Return void 655 ******************************************************************************/ 656 extern void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy); 657 658 /******************************************************************************* 659 * 660 * Function BTM_BleReceiverTest 661 * 662 * Description This function is called to start the LE Receiver test 663 * 664 * Parameter rx_freq - Frequency Range 665 * p_cmd_cmpl_cback - Command Complete callback 666 * 667 ******************************************************************************/ 668 void BTM_BleReceiverTest(uint8_t rx_freq, tBTM_CMPL_CB* p_cmd_cmpl_cback); 669 670 /******************************************************************************* 671 * 672 * Function BTM_BleTransmitterTest 673 * 674 * Description This function is called to start the LE Transmitter test 675 * 676 * Parameter tx_freq - Frequency Range 677 * test_data_len - Length in bytes of payload data in each 678 * packet 679 * packet_payload - Pattern to use in the payload 680 * p_cmd_cmpl_cback - Command Complete callback 681 * 682 ******************************************************************************/ 683 void BTM_BleTransmitterTest(uint8_t tx_freq, uint8_t test_data_len, 684 uint8_t packet_payload, 685 tBTM_CMPL_CB* p_cmd_cmpl_cback); 686 687 /******************************************************************************* 688 * 689 * Function BTM_BleTestEnd 690 * 691 * Description This function is called to stop the in-progress TX or RX test 692 * 693 * Parameter p_cmd_cmpl_cback - Command complete callback 694 * 695 ******************************************************************************/ 696 void BTM_BleTestEnd(tBTM_CMPL_CB* p_cmd_cmpl_cback); 697 698 /******************************************************************************* 699 * 700 * Function BTM_UseLeLink 701 * 702 * Description Select the underlying physical link to use. 703 * 704 * Returns true to use LE, false use BR/EDR. 705 * 706 ******************************************************************************/ 707 extern bool BTM_UseLeLink(const RawAddress& bd_addr); 708 709 /******************************************************************************* 710 * 711 * Function BTM_BleStackEnable 712 * 713 * Description Enable/Disable BLE functionality on stack regardless of 714 * controller capability. 715 * 716 * Parameters: enable: true to enable, false to disable. 717 * 718 * Returns true if added OK, else false 719 * 720 ******************************************************************************/ 721 extern tBTM_STATUS BTM_BleStackEnable(bool enable); 722 723 /******************************************************************************* 724 * 725 * Function BTM_GetLeSecurityState 726 * 727 * Description This function is called to get security mode 1 flags and 728 * encryption key size for LE peer. 729 * 730 * Returns bool true if LE device is found, false otherwise. 731 * 732 ******************************************************************************/ 733 extern bool BTM_GetLeSecurityState(const RawAddress& bd_addr, 734 uint8_t* p_le_dev_sec_flags, 735 uint8_t* p_le_key_size); 736 737 /******************************************************************************* 738 * 739 * Function BTM_BleSecurityProcedureIsRunning 740 * 741 * Description This function indicates if LE security procedure is 742 * currently running with the peer. 743 * 744 * Returns bool true if security procedure is running, false otherwise. 745 * 746 ******************************************************************************/ 747 extern bool BTM_BleSecurityProcedureIsRunning(const RawAddress& bd_addr); 748 749 /******************************************************************************* 750 * 751 * Function BTM_BleGetSupportedKeySize 752 * 753 * Description This function gets the maximum encryption key size in bytes 754 * the local device can suport. 755 * record. 756 * 757 * Returns the key size or 0 if the size can't be retrieved. 758 * 759 ******************************************************************************/ 760 extern uint8_t BTM_BleGetSupportedKeySize(const RawAddress& bd_addr); 761 762 /******************************************************************************* 763 * 764 * Function BTM_BleAdvFilterParamSetup 765 * 766 * Description This function is called to setup the adv data payload filter 767 * condition. 768 * 769 ******************************************************************************/ 770 extern void BTM_BleAdvFilterParamSetup( 771 int action, tBTM_BLE_PF_FILT_INDEX filt_index, 772 std::unique_ptr<btgatt_filt_param_setup_t> p_filt_params, 773 tBTM_BLE_PF_PARAM_CB cb); 774 775 /** 776 * This functions are called to configure the adv data payload filter condition 777 */ 778 extern void BTM_LE_PF_set(tBTM_BLE_PF_FILT_INDEX filt_index, 779 std::vector<ApcfCommand> commands, 780 tBTM_BLE_PF_CFG_CBACK cb); 781 extern void BTM_LE_PF_clear(tBTM_BLE_PF_FILT_INDEX filt_index, 782 tBTM_BLE_PF_CFG_CBACK cb); 783 784 /******************************************************************************* 785 * 786 * Function BTM_BleEnableDisableFilterFeature 787 * 788 * Description Enable or disable the APCF feature 789 * 790 * Parameters enable - true - enables APCF, false - disables APCF 791 * 792 ******************************************************************************/ 793 extern void BTM_BleEnableDisableFilterFeature( 794 uint8_t enable, tBTM_BLE_PF_STATUS_CBACK p_stat_cback); 795 796 /******************************************************************************* 797 * 798 * Function BTM_BleGetEnergyInfo 799 * 800 * Description This function obtains the energy info 801 * 802 * Parameters p_ener_cback - Callback pointer 803 * 804 * Returns status 805 * 806 ******************************************************************************/ 807 extern tBTM_STATUS BTM_BleGetEnergyInfo( 808 tBTM_BLE_ENERGY_INFO_CBACK* p_ener_cback); 809 810 /******************************************************************************* 811 * 812 * Function BTM_SetBleDataLength 813 * 814 * Description Set the maximum BLE transmission packet size 815 * 816 * Returns BTM_SUCCESS if success; otherwise failed. 817 * 818 ******************************************************************************/ 819 extern tBTM_STATUS BTM_SetBleDataLength(const RawAddress& bd_addr, 820 uint16_t tx_pdu_length); 821 822 /******************************************************************************* 823 * 824 * Function BTM_BleReadPhy 825 * 826 * Description To read the current PHYs for specified LE connection 827 * 828 * 829 * Returns BTM_SUCCESS if success; otherwise failed. 830 * 831 ******************************************************************************/ 832 extern void BTM_BleReadPhy( 833 const RawAddress& bd_addr, 834 base::Callback<void(uint8_t tx_phy, uint8_t rx_phy, uint8_t status)> cb); 835 836 /******************************************************************************* 837 * 838 * Function BTM_BleSetDefaultPhy 839 * 840 * Description To set preferred PHY for ensuing LE connections 841 * 842 * 843 * Returns BTM_SUCCESS if success; otherwise failed. 844 * 845 ******************************************************************************/ 846 extern tBTM_STATUS BTM_BleSetDefaultPhy(uint8_t all_phys, uint8_t tx_phys, 847 uint8_t rx_phys); 848 849 /******************************************************************************* 850 * 851 * Function BTM_BleSetPhy 852 * 853 * Description To set PHY preferences for specified LE connection 854 * 855 * 856 * Returns BTM_SUCCESS if success; otherwise failed. 857 * 858 ******************************************************************************/ 859 extern void BTM_BleSetPhy(const RawAddress& bd_addr, uint8_t tx_phys, 860 uint8_t rx_phys, uint16_t phy_options); 861 862 extern void btm_ble_multi_adv_cleanup(void); 863 864 #endif 865