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 ******************************************************************************/
55extern 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 ******************************************************************************/
74extern 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 ******************************************************************************/
89extern 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 ******************************************************************************/
105extern 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 **/
111extern 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 ******************************************************************************/
126extern 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 ******************************************************************************/
145extern 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 */
152extern 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 */
158extern void BTM_BleDisableBatchScan(
159    base::Callback<void(uint8_t /* status */)> cb);
160
161/* This function is called to read batch scan reports */
162extern 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 */
166extern 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 ******************************************************************************/
180extern 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 ******************************************************************************/
195extern 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 ******************************************************************************/
210extern 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 ******************************************************************************/
223extern 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 ******************************************************************************/
235extern 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 ******************************************************************************/
251extern 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 ******************************************************************************/
268extern 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 ******************************************************************************/
283extern 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 ******************************************************************************/
297extern 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 ******************************************************************************/
313extern 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 ******************************************************************************/
332extern 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 ******************************************************************************/
350extern 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 ******************************************************************************/
363extern 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_ReadRemoteConnectionAddr
370 *
371 * Description      Read the remote device address currently used.
372 *
373 * Returns          void
374 *
375 ******************************************************************************/
376extern bool BTM_ReadRemoteConnectionAddr(const RawAddress& pseudo_addr,
377                                         RawAddress& conn_addr,
378                                         tBLE_ADDR_TYPE* p_addr_type);
379
380/*******************************************************************************
381 *
382 * Function         BTM_BleLoadLocalKeys
383 *
384 * Description      Local local identity key, encryption root or sign counter.
385 *
386 * Parameters:      key_type: type of key, can be BTM_BLE_KEY_TYPE_ID,
387 *                            BTM_BLE_KEY_TYPE_ER
388 *                            or BTM_BLE_KEY_TYPE_COUNTER.
389 *                  p_key: pointer to the key.
390*
391 * Returns          non2.
392 *
393 ******************************************************************************/
394extern void BTM_BleLoadLocalKeys(uint8_t key_type, tBTM_BLE_LOCAL_KEYS* p_key);
395
396/**
397 * Set BLE connectable mode to auto connect
398 */
399extern void BTM_BleStartAutoConn();
400
401/*******************************************************************************
402 *
403 * Function         BTM_BleUpdateBgConnDev
404 *
405 * Description      This function is called to add or remove a device into/from
406 *                  background connection procedure. The background connection
407*                   procedure is decided by the background connection type, it
408*can be
409*                   auto connection, or selective connection.
410 *
411 * Parameters       add_remove: true to add; false to remove.
412 *                  remote_bda: device address to add/remove.
413 *
414 * Returns          void
415 *
416 ******************************************************************************/
417extern bool BTM_BleUpdateBgConnDev(bool add_remove,
418                                   const RawAddress& remote_bda);
419
420/*******************************************************************************
421 *
422 * Function         BTM_BleClearBgConnDev
423 *
424 * Description      This function is called to clear the whitelist,
425 *                  end any pending whitelist connections,
426 *                  and reset the local bg device list.
427 *
428 * Parameters       void
429 *
430 * Returns          void
431 *
432 ******************************************************************************/
433extern void BTM_BleClearBgConnDev(void);
434
435/********************************************************
436 *
437 * Function         BTM_BleSetPrefConnParams
438 *
439 * Description      Set a peripheral's preferred connection parameters. When
440 *                  any of the value does not want to be updated while others
441 *                  do, use BTM_BLE_CONN_PARAM_UNDEF for the ones want to
442 *                  leave untouched.
443 *
444 * Parameters:      bd_addr          - BD address of the peripheral
445 *                  min_conn_int     - minimum preferred connection interval
446 *                  max_conn_int     - maximum preferred connection interval
447 *                  slave_latency    - preferred slave latency
448 *                  supervision_tout - preferred supervision timeout
449 *
450 * Returns          void
451 *
452 ******************************************************************************/
453extern void BTM_BleSetPrefConnParams(const RawAddress& bd_addr,
454                                     uint16_t min_conn_int,
455                                     uint16_t max_conn_int,
456                                     uint16_t slave_latency,
457                                     uint16_t supervision_tout);
458
459/******************************************************************************
460 *
461 * Function         BTM_BleSetConnScanParams
462 *
463 * Description      Set scan parameters used in BLE connection request
464 *
465 * Parameters:      scan_interval    - scan interval
466 *                  scan_window      - scan window
467 *
468 * Returns          void
469 *
470 ******************************************************************************/
471extern void BTM_BleSetConnScanParams(uint32_t scan_interval,
472                                     uint32_t scan_window);
473
474/******************************************************************************
475 *
476 * Function         BTM_BleReadControllerFeatures
477 *
478 * Description      Reads BLE specific controller features
479 *
480 * Parameters:      tBTM_BLE_CTRL_FEATURES_CBACK : Callback to notify when
481 *                  features are read
482 *
483 * Returns          void
484 *
485 ******************************************************************************/
486extern void BTM_BleReadControllerFeatures(
487    tBTM_BLE_CTRL_FEATURES_CBACK* p_vsc_cback);
488
489/*******************************************************************************
490 *
491 * Function         BTM__BLEReadDiscoverability
492 *
493 * Description      This function is called to read the current LE
494 *                  discoverability mode of the device.
495 *
496 * Returns          BTM_BLE_NON_DISCOVERABLE ,BTM_BLE_LIMITED_DISCOVERABLE or
497 *                     BTM_BLE_GENRAL_DISCOVERABLE
498 *
499 ******************************************************************************/
500uint16_t BTM_BleReadDiscoverability();
501
502/*******************************************************************************
503 *
504 * Function         BTM__BLEReadConnectability
505 *
506 * Description      This function is called to read the current LE
507 *                  connectibility mode of the device.
508 *
509 * Returns          BTM_BLE_NON_CONNECTABLE or BTM_BLE_CONNECTABLE
510 *
511 ******************************************************************************/
512extern uint16_t BTM_BleReadConnectability();
513
514/*******************************************************************************
515 *
516 * Function         BTM_ReadDevInfo
517 *
518 * Description      This function is called to read the device/address type
519 *                  of BD address.
520 *
521 * Parameter        remote_bda: remote device address
522 *                  p_dev_type: output parameter to read the device type.
523 *                  p_addr_type: output parameter to read the address type.
524 *
525 ******************************************************************************/
526extern void BTM_ReadDevInfo(const RawAddress& remote_bda,
527                            tBT_DEVICE_TYPE* p_dev_type,
528                            tBLE_ADDR_TYPE* p_addr_type);
529
530/*******************************************************************************
531 *
532 * Function         BTM_ReadConnectedTransportAddress
533 *
534 * Description      This function is called to read the paired device/address
535 *                  type of other device paired corresponding to the BD_address
536 *
537 * Parameter        remote_bda: remote device address, carry out the transport
538 *                              address
539 *                  transport: active transport
540 *
541 * Return           true if an active link is identified; false otherwise
542 *
543 ******************************************************************************/
544extern bool BTM_ReadConnectedTransportAddress(RawAddress* remote_bda,
545                                              tBT_TRANSPORT transport);
546
547/*******************************************************************************
548 *
549 * Function         BTM_BleConfigPrivacy
550 *
551 * Description      This function is called to enable or disable the privacy in
552 *                  the local device.
553 *
554 * Parameters       enable: true to enable it; false to disable it.
555 *
556 * Returns          bool    privacy mode set success; otherwise failed.
557 *
558 ******************************************************************************/
559extern bool BTM_BleConfigPrivacy(bool enable);
560
561/*******************************************************************************
562 *
563 * Function         BTM_BleLocalPrivacyEnabled
564 *
565 * Description        Checks if local device supports private address
566 *
567 * Returns          Return true if local privacy is enabled else false
568 *
569 ******************************************************************************/
570extern bool BTM_BleLocalPrivacyEnabled(void);
571
572/*******************************************************************************
573 *
574 * Function         BTM_BleEnableMixedPrivacyMode
575 *
576 * Description      This function is called to enabled Mixed mode if privacy 1.2
577 *                  is applicable in controller.
578 *
579 * Parameters       mixed_on:  mixed mode to be used or not.
580 *
581 * Returns          void
582 *
583 ******************************************************************************/
584extern void BTM_BleEnableMixedPrivacyMode(bool mixed_on);
585
586/*******************************************************************************
587 *
588 * Function          BTM_BleMaxMultiAdvInstanceCount
589 *
590 * Description      Returns the maximum number of multi adv instances supported
591 *                  by the controller.
592 *
593 * Returns          Max multi adv instance count
594 *
595 ******************************************************************************/
596extern uint8_t BTM_BleMaxMultiAdvInstanceCount();
597
598/*******************************************************************************
599 *
600 * Function         BTM_BleSetConnectableMode
601 *
602 * Description      This function is called to set BLE connectable mode for a
603 *                  peripheral device.
604 *
605 * Parameters       connectable_mode:  directed connectable mode, or
606 *                                     non-directed. It can be
607 *                                     BTM_BLE_CONNECT_EVT,
608 *                                     BTM_BLE_CONNECT_DIR_EVT or
609 *                                     BTM_BLE_CONNECT_LO_DUTY_DIR_EVT
610 *
611 * Returns          BTM_ILLEGAL_VALUE if controller does not support BLE.
612 *                  BTM_SUCCESS is status set successfully; otherwise failure.
613 *
614 ******************************************************************************/
615extern tBTM_STATUS BTM_BleSetConnectableMode(
616    tBTM_BLE_CONN_MODE connectable_mode);
617
618/*******************************************************************************
619 *
620 * Function         BTM_BleTurnOnPrivacyOnRemote
621 *
622 * Description      This function is called to enable or disable the privacy on
623 *                  the remote device.
624 *
625 * Parameters       bd_addr: remote device address.
626 *                  privacy_on: true to enable it; false to disable it.
627 *
628 * Returns          void
629 *
630 ******************************************************************************/
631extern void BTM_BleTurnOnPrivacyOnRemote(const RawAddress& bd_addr,
632                                         bool privacy_on);
633
634/*******************************************************************************
635 *
636 * Function         BTM_BleUpdateAdvFilterPolicy
637 *
638 * Description      This function update the filter policy of advertiser.
639 *
640 * Parameter        adv_policy: advertising filter policy
641 *
642 * Return           void
643 ******************************************************************************/
644extern void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy);
645
646/*******************************************************************************
647 *
648 * Function         BTM_BleReceiverTest
649 *
650 * Description      This function is called to start the LE Receiver test
651 *
652 * Parameter       rx_freq - Frequency Range
653 *               p_cmd_cmpl_cback - Command Complete callback
654 *
655 ******************************************************************************/
656void BTM_BleReceiverTest(uint8_t rx_freq, tBTM_CMPL_CB* p_cmd_cmpl_cback);
657
658/*******************************************************************************
659 *
660 * Function         BTM_BleTransmitterTest
661 *
662 * Description      This function is called to start the LE Transmitter test
663 *
664 * Parameter       tx_freq - Frequency Range
665 *                       test_data_len - Length in bytes of payload data in each
666 *                                       packet
667 *                       packet_payload - Pattern to use in the payload
668 *                       p_cmd_cmpl_cback - Command Complete callback
669 *
670 ******************************************************************************/
671void BTM_BleTransmitterTest(uint8_t tx_freq, uint8_t test_data_len,
672                            uint8_t packet_payload,
673                            tBTM_CMPL_CB* p_cmd_cmpl_cback);
674
675/*******************************************************************************
676 *
677 * Function         BTM_BleTestEnd
678 *
679 * Description     This function is called to stop the in-progress TX or RX test
680 *
681 * Parameter       p_cmd_cmpl_cback - Command complete callback
682 *
683 ******************************************************************************/
684void BTM_BleTestEnd(tBTM_CMPL_CB* p_cmd_cmpl_cback);
685
686/*******************************************************************************
687 *
688 * Function         BTM_UseLeLink
689 *
690 * Description      Select the underlying physical link to use.
691 *
692 * Returns          true to use LE, false use BR/EDR.
693 *
694 ******************************************************************************/
695extern bool BTM_UseLeLink(const RawAddress& bd_addr);
696
697/*******************************************************************************
698 *
699 * Function         BTM_BleStackEnable
700 *
701 * Description      Enable/Disable BLE functionality on stack regardless of
702 *                  controller capability.
703 *
704 * Parameters:      enable: true to enable, false to disable.
705 *
706 * Returns          true if added OK, else false
707 *
708 ******************************************************************************/
709extern tBTM_STATUS BTM_BleStackEnable(bool enable);
710
711/*******************************************************************************
712 *
713 * Function         BTM_GetLeSecurityState
714 *
715 * Description      This function is called to get security mode 1 flags and
716 *                  encryption key size for LE peer.
717 *
718 * Returns          bool    true if LE device is found, false otherwise.
719 *
720 ******************************************************************************/
721extern bool BTM_GetLeSecurityState(const RawAddress& bd_addr,
722                                   uint8_t* p_le_dev_sec_flags,
723                                   uint8_t* p_le_key_size);
724
725/*******************************************************************************
726 *
727 * Function         BTM_BleSecurityProcedureIsRunning
728 *
729 * Description      This function indicates if LE security procedure is
730 *                  currently running with the peer.
731 *
732 * Returns          bool true if security procedure is running, false otherwise.
733 *
734 ******************************************************************************/
735extern bool BTM_BleSecurityProcedureIsRunning(const RawAddress& bd_addr);
736
737/*******************************************************************************
738 *
739 * Function         BTM_BleGetSupportedKeySize
740 *
741 * Description      This function gets the maximum encryption key size in bytes
742 *                  the local device can suport.
743 *                  record.
744 *
745 * Returns          the key size or 0 if the size can't be retrieved.
746 *
747 ******************************************************************************/
748extern uint8_t BTM_BleGetSupportedKeySize(const RawAddress& bd_addr);
749
750/*******************************************************************************
751 *
752 * Function         BTM_BleAdvFilterParamSetup
753 *
754 * Description      This function is called to setup the adv data payload filter
755 *                  condition.
756 *
757 ******************************************************************************/
758extern void BTM_BleAdvFilterParamSetup(
759    int action, tBTM_BLE_PF_FILT_INDEX filt_index,
760    std::unique_ptr<btgatt_filt_param_setup_t> p_filt_params,
761    tBTM_BLE_PF_PARAM_CB cb);
762
763/**
764 * This functions are called to configure the adv data payload filter condition
765 */
766extern void BTM_LE_PF_set(tBTM_BLE_PF_FILT_INDEX filt_index,
767                          std::vector<ApcfCommand> commands,
768                          tBTM_BLE_PF_CFG_CBACK cb);
769extern void BTM_LE_PF_clear(tBTM_BLE_PF_FILT_INDEX filt_index,
770                            tBTM_BLE_PF_CFG_CBACK cb);
771
772/*******************************************************************************
773 *
774 * Function         BTM_BleEnableDisableFilterFeature
775 *
776 * Description      Enable or disable the APCF feature
777 *
778 * Parameters       enable - true - enables APCF, false - disables APCF
779 *
780 ******************************************************************************/
781extern void BTM_BleEnableDisableFilterFeature(
782    uint8_t enable, tBTM_BLE_PF_STATUS_CBACK p_stat_cback);
783
784/*******************************************************************************
785 *
786 * Function         BTM_BleGetEnergyInfo
787 *
788 * Description      This function obtains the energy info
789 *
790 * Parameters       p_ener_cback - Callback pointer
791 *
792 * Returns          status
793 *
794 ******************************************************************************/
795extern tBTM_STATUS BTM_BleGetEnergyInfo(
796    tBTM_BLE_ENERGY_INFO_CBACK* p_ener_cback);
797
798/*******************************************************************************
799 *
800 * Function         BTM_SetBleDataLength
801 *
802 * Description      Set the maximum BLE transmission packet size
803 *
804 * Returns          BTM_SUCCESS if success; otherwise failed.
805 *
806 ******************************************************************************/
807extern tBTM_STATUS BTM_SetBleDataLength(const RawAddress& bd_addr,
808                                        uint16_t tx_pdu_length);
809
810/*******************************************************************************
811 *
812 * Function         BTM_BleReadPhy
813 *
814 * Description      To read the current PHYs for specified LE connection
815 *
816 *
817 * Returns          BTM_SUCCESS if success; otherwise failed.
818 *
819 ******************************************************************************/
820extern void BTM_BleReadPhy(
821    const RawAddress& bd_addr,
822    base::Callback<void(uint8_t tx_phy, uint8_t rx_phy, uint8_t status)> cb);
823
824/*******************************************************************************
825 *
826 * Function         BTM_BleSetDefaultPhy
827 *
828 * Description      To set preferred PHY for ensuing LE connections
829 *
830 *
831 * Returns          BTM_SUCCESS if success; otherwise failed.
832 *
833 ******************************************************************************/
834extern tBTM_STATUS BTM_BleSetDefaultPhy(uint8_t all_phys, uint8_t tx_phys,
835                                        uint8_t rx_phys);
836
837/*******************************************************************************
838 *
839 * Function         BTM_BleSetPhy
840 *
841 * Description      To set PHY preferences for specified LE connection
842 *
843 *
844 * Returns          BTM_SUCCESS if success; otherwise failed.
845 *
846 ******************************************************************************/
847extern void BTM_BleSetPhy(const RawAddress& bd_addr, uint8_t tx_phys,
848                          uint8_t rx_phys, uint16_t phy_options);
849
850extern void btm_ble_multi_adv_cleanup(void);
851
852#endif
853