• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 main Bluetooth Manager (BTM) internal
22  *  definitions.
23  *
24  ******************************************************************************/
25 
26 #ifndef BTM_BLE_INT_H
27 #define BTM_BLE_INT_H
28 
29 #include "bt_common.h"
30 #include "bt_target.h"
31 #include "btm_ble_api.h"
32 #include "btm_ble_int_types.h"
33 #include "btm_int_types.h"
34 #include "hcidefs.h"
35 #include "smp_api.h"
36 #include "stack/include/hci_error_code.h"
37 
38 extern void btm_ble_process_periodic_adv_sync_est_evt(uint8_t len, uint8_t* p);
39 extern void btm_ble_process_periodic_adv_pkt(uint8_t len, uint8_t* p);
40 extern void btm_ble_process_periodic_adv_sync_lost_evt(uint8_t len, uint8_t* p);
41 extern void btm_send_hci_set_scan_params(uint8_t scan_type, uint16_t scan_int,
42                                          uint16_t scan_win,
43                                          uint8_t addr_type_own,
44                                          uint8_t scan_filter_policy);
45 extern void btm_ble_stop_scan(void);
46 extern void btm_clear_all_pending_le_entry(void);
47 
48 extern void btm_ble_init(void);
49 extern void btm_ble_free();
50 extern void btm_ble_connected(const RawAddress& bda, uint16_t handle,
51                               uint8_t enc_mode, uint8_t role,
52                               tBLE_ADDR_TYPE addr_type, bool addr_matched);
53 extern void btm_ble_connected_from_address_with_type(
54     const tBLE_BD_ADDR& address_with_type, uint16_t handle, uint8_t enc_mode,
55     uint8_t role, bool addr_matched);
56 
57 extern tBTM_STATUS btm_ble_start_adv(void);
58 extern tBTM_STATUS btm_ble_stop_adv(void);
59 extern void btm_ble_start_scan(void);
60 
61 /* LE security function from btm_sec.cc */
62 extern void btm_ble_link_sec_check(const RawAddress& bd_addr,
63                                    tBTM_LE_AUTH_REQ auth_req,
64                                    tBTM_BLE_SEC_REQ_ACT* p_sec_req_act);
65 extern void btm_ble_ltk_request_reply(const RawAddress& bda, bool use_stk,
66                                       const Octet16& stk);
67 extern tBTM_STATUS btm_proc_smp_cback(tSMP_EVT event, const RawAddress& bd_addr,
68                                       tSMP_EVT_DATA* p_data);
69 extern tBTM_STATUS btm_ble_set_encryption(const RawAddress& bd_addr,
70                                           tBTM_BLE_SEC_ACT sec_act,
71                                           uint8_t link_role);
72 extern tBTM_STATUS btm_ble_start_encrypt(const RawAddress& bda, bool use_stk,
73                                          Octet16* p_stk);
74 extern void btm_ble_link_encrypted(const RawAddress& bd_addr,
75                                    uint8_t encr_enable);
76 
77 /* LE device management functions */
78 extern void btm_ble_reset_id(void);
79 
80 extern bool btm_get_local_div(const RawAddress& bd_addr, uint16_t* p_div);
81 extern bool btm_ble_get_enc_key_type(const RawAddress& bd_addr,
82                                      uint8_t* p_key_types);
83 
84 extern void btm_sec_save_le_key(const RawAddress& bd_addr,
85                                 tBTM_LE_KEY_TYPE key_type,
86                                 tBTM_LE_KEY_VALUE* p_keys,
87                                 bool pass_to_application);
88 extern void btm_ble_update_sec_key_size(const RawAddress& bd_addr,
89                                         uint8_t enc_key_size);
90 extern uint8_t btm_ble_read_sec_key_size(const RawAddress& bd_addr);
91 
92 /* acceptlist function */
93 extern void btm_update_scanner_filter_policy(tBTM_BLE_SFP scan_policy);
94 
95 /* background connection function */
96 extern bool btm_ble_suspend_bg_conn(void);
97 extern bool btm_ble_resume_bg_conn(void);
98 extern void btm_ble_update_mode_operation(uint8_t link_role,
99                                           const RawAddress* bda,
100                                           tHCI_STATUS status);
101 extern void btm_ble_bgconn_cancel_if_disconnected(const RawAddress& bd_addr);
102 
103 /* BLE address management */
104 extern void btm_gen_resolvable_private_addr(
105     base::Callback<void(const RawAddress& rpa)> cb);
106 
107 extern tBTM_SEC_DEV_REC* btm_ble_resolve_random_addr(
108     const RawAddress& random_bda);
109 extern void btm_gen_resolve_paddr_low(const RawAddress& address);
110 extern uint64_t btm_get_next_private_addrress_interval_ms();
111 
112 /*  privacy function */
113 /* BLE address mapping with CS feature */
114 extern bool btm_random_pseudo_to_identity_addr(RawAddress* random_pseudo,
115                                                uint8_t* p_identity_addr_type);
116 extern void btm_ble_refresh_peer_resolvable_private_addr(
117     const RawAddress& pseudo_bda, const RawAddress& rra,
118     tBTM_SEC_BLE::tADDRESS_TYPE type);
119 extern bool btm_ble_read_resolving_list_entry(tBTM_SEC_DEV_REC* p_dev_rec);
120 
121 extern bool btm_ble_addr_resolvable(const RawAddress& rpa,
122                                     tBTM_SEC_DEV_REC* p_dev_rec);
123 
124 extern bool btm_ble_resolving_list_load_dev(tBTM_SEC_DEV_REC* p_dev_rec);
125 extern void btm_ble_resolving_list_remove_dev(tBTM_SEC_DEV_REC* p_dev_rec);
126 extern void btm_ble_enable_resolving_list(uint8_t);
127 extern bool btm_ble_disable_resolving_list(uint8_t rl_mask, bool to_resume);
128 extern void btm_ble_enable_resolving_list_for_platform(uint8_t rl_mask);
129 extern void btm_ble_resolving_list_init(uint8_t max_irk_list_sz);
130 
131 extern void btm_ble_adv_init(void);
132 extern void btm_ble_multi_adv_cleanup(void);
133 extern void btm_ble_batchscan_init(void);
134 extern void btm_ble_adv_filter_init(void);
135 extern bool btm_ble_topology_check(tBTM_BLE_STATE_MASK request);
136 extern bool btm_ble_clear_topology_mask(tBTM_BLE_STATE_MASK request_state);
137 extern bool btm_ble_set_topology_mask(tBTM_BLE_STATE_MASK request_state);
138 extern void btm_ble_set_random_address(const RawAddress& random_bda);
139 
140 #if (BTM_BLE_CONFORMANCE_TESTING == TRUE)
141 extern void btm_ble_set_no_disc_if_pair_fail(bool disble_disc);
142 extern void btm_ble_set_test_mac_value(bool enable, uint8_t* p_test_mac_val);
143 extern void btm_ble_set_test_local_sign_cntr_value(
144     bool enable, uint32_t test_local_sign_cntr);
145 extern void btm_ble_set_keep_rfu_in_auth_req(bool keep_rfu);
146 #endif
147 
148 #endif
149