15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
35b790feeeb211c42bf78ca3ae9c26aa30e516765Jakub Pawlowski *  Copyright 1999-2012 Broadcom Corporation
45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  you may not use this file except in compliance with the License.
75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  You may obtain a copy of the License at:
85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  See the License for the specific language governing permissions and
155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  limitations under the License.
165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  this file contains the main Bluetooth Manager (BTM) internal
225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  definitions.
235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTM_INT_H
265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_INT_H
275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
28258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h"
29911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include "bt_target.h"
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "hcidefs.h"
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3278bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov#include "osi/include/alarm.h"
331a3844f933bd63c8a381371dabfb35c6a0249e3ePavlin Radoslavov#include "osi/include/fixed_queue.h"
34911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include "osi/include/list.h"
35911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include "rfcdefs.h"
365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_api.h"
3857f6508cf7b22788fa2e7a739cec241b785718fbMudumba Ananth#include "device/include/esco_parameters.h"
3957f6508cf7b22788fa2e7a739cec241b785718fbMudumba Ananth
405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_ble_int.h"
41dc3c1f2afa2d5f311c3ea42bda432089a7f303a4Jakub Pawlowski#include "btm_int_types.h"
422e8e9f42132d0297a94c0852a1fbf45c9bc348e5Myles Watson#include "smp_api.h"
43dc3c1f2afa2d5f311c3ea42bda432089a7f303a4Jakub Pawlowski
4437c1b5f8ccf4fc6d5132e07f98f0f40f65d5bfafPavlin Radoslavovextern tBTM_CB btm_cb;
455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
46b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_main.cc
47ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *******************************************
485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
49911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_init(void);
50f605adc411caa0aa2e12e99183b91ebdb276d915Fukai Wangextern void btm_free(void);
515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
52b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_inq.cc
53ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************
545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
55a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda,
56c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                         uint8_t origin, period_ms_t timeout_ms,
57911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                         tBTM_CMPL_CB* p_cb);
585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
59a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_process_remote_name(const RawAddress* bda, BD_NAME name,
60c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                    uint16_t evt_len, uint8_t hci_status);
61911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_rmt_name_failed(void);
62911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_remote_name_timer_timeout(void* data);
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Inquiry related functions */
65a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_clr_inq_db(const RawAddress* p_bda);
66911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_db_init(void);
67911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode);
68911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_inq_complete(uint8_t status, uint8_t mode);
69911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_cancel_complete(uint8_t status, uint8_t mode);
70911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_event_filter_complete(uint8_t* p);
71911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_stop_on_ssp(void);
72911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_clear_ssp(void);
73a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tINQ_DB_ENT* btm_inq_db_find(const RawAddress& p_bda);
74a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_inq_find_bdaddr(const RawAddress& p_bda);
755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
76b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_acl.cc
77ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *******************************************
785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
79911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_init(void);
80a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_created(const RawAddress& bda, DEV_CLASS dc, BD_NAME bdn,
81911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                            uint16_t hci_handle, uint8_t link_role,
82911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                            tBT_TRANSPORT transport);
83a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_removed(const RawAddress& bda, tBT_TRANSPORT transport);
84911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_device_down(void);
85911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_update_busy_level(tBTM_BLI_EVENT event);
86911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
87911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_cont_rswitch(tACL_CONN* p, tBTM_SEC_DEV_REC* p_dev_rec,
88911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             uint8_t hci_status);
89911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
90911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint8_t btm_handle_to_acl_index(uint16_t hci_handle);
91911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_link_policy_complete(uint8_t* p);
92911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
93911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_rssi_timeout(void* data);
94911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_rssi_complete(uint8_t* p);
95911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
966ab749f3cfd9c7660bb245764fcd01dcff51dbe9Pavlin Radoslavovextern void btm_read_failed_contact_counter_timeout(void* data);
976ab749f3cfd9c7660bb245764fcd01dcff51dbe9Pavlin Radoslavovextern void btm_read_failed_contact_counter_complete(uint8_t* p);
986ab749f3cfd9c7660bb245764fcd01dcff51dbe9Pavlin Radoslavov
99b8568ae0e198a84225c9fdef1e715dc4d45565c9Pavlin Radoslavovextern void btm_read_automatic_flush_timeout_timeout(void* data);
100b8568ae0e198a84225c9fdef1e715dc4d45565c9Pavlin Radoslavovextern void btm_read_automatic_flush_timeout_complete(uint8_t* p);
101b8568ae0e198a84225c9fdef1e715dc4d45565c9Pavlin Radoslavov
102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_tx_power_timeout(void* data);
103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_tx_power_complete(uint8_t* p, bool is_ble);
104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_link_quality_timeout(void* data);
106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_link_quality_complete(uint8_t* p);
107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_STATUS btm_set_packet_types(tACL_CONN* p, uint16_t pkt_types);
109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_clk_off_comp_evt(uint16_t hci_handle,
110911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                         uint16_t clock_offset);
111a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_role_changed(uint8_t hci_status, const RawAddress* bd_addr,
112911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                 uint8_t new_role);
113942648ef5a4b25508cc9ffe7073ddab5e04a9ab4Srinu Jellaextern void btm_blacklist_role_change_device(const RawAddress& bd_addr,
114942648ef5a4b25508cc9ffe7073ddab5e04a9ab4Srinu Jella                                             uint8_t hci_status);
115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_encrypt_change(uint16_t handle, uint8_t status,
116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint8_t encr_enable);
117911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t btm_get_acl_disc_reason_code(void);
118a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_remove_acl(const RawAddress& bd_addr,
119c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                  tBT_TRANSPORT transport);
120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_features_complete(uint8_t* p);
121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_ext_features_complete(uint8_t* p);
122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_ext_features_failed(uint8_t status,
123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                                uint16_t handle);
124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_version_complete(uint8_t* p);
125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_establish_continue(tACL_CONN* p_acl_cb);
126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_chk_peer_pkt_type_support(tACL_CONN* p,
128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                              uint16_t* p_pkt_type);
1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Read maximum data packet that can be sent over current connection */
130a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern uint16_t btm_get_max_packet_size(const RawAddress& addr);
131a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tACL_CONN* btm_bda_to_acl(const RawAddress& bda,
132c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                 tBT_TRANSPORT transport);
133a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_acl_notif_conn_collision(const RawAddress& bda);
13473af4033702ae58a24975a09134a7bf698b5cbd8Jakub Pawlowskiextern void btm_acl_update_conn_addr(uint16_t conn_handle,
135a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowski                                     const RawAddress& address);
1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_pm_reset(void);
138d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_pm_sm_alloc(uint8_t ind);
139d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_pm_proc_cmd_status(uint8_t status);
140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_pm_proc_mode_change(uint8_t hci_status, uint16_t hci_handle,
141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    uint8_t mode, uint16_t interval);
142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_pm_proc_ssr_evt(uint8_t* p, uint16_t evt_len);
143a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_read_power_mode_state(const RawAddress& remote_bda,
144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                             tBTM_PM_STATE* pmState);
145d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (BTM_SCO_INCLUDED == TRUE)
146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sco_chk_pend_unpark(uint8_t hci_status, uint16_t hci_handle);
1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else
1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_sco_chk_pend_unpark(hci_status, hci_handle)
1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_SCO_INCLUDED */
15078bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov
151911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_qos_setup_timeout(void* data);
152d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_qos_setup_complete(uint8_t status, uint16_t handle,
153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   FLOW_SPEC* p_flow);
1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
155b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_sco.cc
156ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *******************************************
1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sco_init(void);
159a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sco_connected(uint8_t hci_status, const RawAddress* bda,
160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                              uint16_t hci_handle, tBTM_ESCO_DATA* p_esco_data);
161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_esco_proc_conn_chg(uint8_t status, uint16_t handle,
162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint8_t tx_interval, uint8_t retrans_window,
163911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint16_t rx_pkt_len, uint16_t tx_pkt_len);
164a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sco_conn_req(const RawAddress& bda, DEV_CLASS dev_class,
165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             uint8_t link_type);
166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sco_removed(uint16_t hci_handle, uint8_t reason);
167a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sco_acl_removed(const RawAddress* bda);
168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_route_sco_data(BT_HDR* p_msg);
169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern bool btm_is_sco_active(uint16_t handle);
170a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_remove_sco_links(const RawAddress& bda);
171a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_is_sco_active_by_bdaddr(const RawAddress& remote_bda);
172911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
17357f6508cf7b22788fa2e7a739cec241b785718fbMudumba Ananthextern void btm_read_def_esco_mode(enh_esco_params_t* p_parms);
174911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t btm_find_scb_by_handle(uint16_t handle);
175d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_sco_flush_sco_data(uint16_t sco_inx);
1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
177b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_devctl.cc
178ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *********************************************
1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
18078bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavovextern void btm_dev_init(void);
181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_local_name_timeout(void* data);
182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_local_name_complete(uint8_t* p, uint16_t evt_len);
1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
184d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_ble_add_2_white_list_complete(uint8_t status);
185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_ble_remove_from_white_list_complete(uint8_t* p,
186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                                    uint16_t evt_len);
187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_ble_clear_white_list_complete(uint8_t* p, uint16_t evt_len);
18841d2d8a07861bb63493bb8b717a372b83ad13fc0Jakub Pawlowskiextern void btm_ble_create_conn_cancel_complete(uint8_t* p);
189a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_ble_addr_resolvable(const RawAddress& rpa,
190c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                    tBTM_SEC_DEV_REC* p_dev_rec);
191911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_STATUS btm_ble_read_resolving_list_entry(
192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson    tBTM_SEC_DEV_REC* p_dev_rec);
193911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern bool btm_ble_resolving_list_load_dev(tBTM_SEC_DEV_REC* p_dev_rec);
194911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_ble_resolving_list_remove_dev(tBTM_SEC_DEV_REC* p_dev_rec);
1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Vendor Specific Command complete evt handler */
197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_vsc_complete(uint8_t* p, uint16_t cc_opcode, uint16_t evt_len,
198325abcfa4a039aa6cb0c7a350c11daacd3cc9b62Vishwath Mohan                             tBTM_VSC_CMPL_CB* p_vsc_cplt_cback);
199911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_db_reset(void);
200911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_vendor_specific_evt(uint8_t* p, uint8_t evt_len);
201911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_delete_stored_link_key_complete(uint8_t* p);
202911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_report_device_status(tBTM_DEV_STATUS status);
2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
204b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_dev.cc
205ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *********************************************
2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
207a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_dev_support_switch(const RawAddress& bd_addr);
208911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
209911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void);
210a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_SEC_DEV_REC* btm_sec_alloc_dev(const RawAddress& bd_addr);
211911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_free_dev(tBTM_SEC_DEV_REC* p_dev_rec);
212a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_SEC_DEV_REC* btm_find_dev(const RawAddress& bd_addr);
213a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_SEC_DEV_REC* btm_find_or_alloc_dev(const RawAddress& bd_addr);
214911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_SEC_DEV_REC* btm_find_dev_by_handle(uint16_t handle);
215a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr);
216a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_set_bond_type_dev(const RawAddress& bd_addr,
217c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                  tBTM_BOND_TYPE bond_type);
2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
219b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_sec.cc
220ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *********************************************
2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
222a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_dev_support_switch(const RawAddress& bd_addr);
223a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_sec_l2cap_access_req(const RawAddress& bd_addr,
224c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                            uint16_t psm, uint16_t handle,
225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                            CONNECTION_TYPE conn_type,
226911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                            tBTM_SEC_CALLBACK* p_callback,
227911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                            void* p_ref_data);
228a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr,
229c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             uint16_t psm, bool is_originator,
230c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             uint32_t mx_proto_id,
231c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             uint32_t mx_chan_id,
232c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             tBTM_SEC_CALLBACK* p_callback,
233c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             void* p_ref_data);
234a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_conn_req(const RawAddress& bda, uint8_t* dc);
235911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_create_conn_cancel_complete(uint8_t* p);
236911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
237911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_inq_tx_power_timeout(void* data);
238911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_inq_tx_power_complete(uint8_t* p);
239911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
240911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_init(uint8_t sec_mode);
241911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_dev_reset(void);
242a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_abort_access_req(const RawAddress& bd_addr);
243911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_auth_complete(uint16_t handle, uint8_t status);
244911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_encrypt_change(uint16_t handle, uint8_t status,
245911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint8_t encr_enable);
246a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_connected(const RawAddress& bda, uint16_t handle,
247c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                              uint8_t status, uint8_t enc_mode);
248911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_STATUS btm_sec_disconnect(uint16_t handle, uint8_t reason);
249911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_disconnected(uint16_t handle, uint8_t reason);
250a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_rmt_name_request_complete(const RawAddress* bd_addr,
251911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                              uint8_t* bd_name, uint8_t status);
252911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_rmt_host_support_feat_evt(uint8_t* p);
253a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_io_capabilities_req(const RawAddress& p);
254911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_io_capabilities_rsp(uint8_t* p);
255911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_proc_sp_req_evt(tBTM_SP_EVT event, uint8_t* p);
256911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_keypress_notif_evt(uint8_t* p);
257911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_simple_pair_complete(uint8_t* p);
258a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_link_key_notification(const RawAddress& p_bda,
259c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                          uint8_t* p_link_key,
260911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                          uint8_t key_type);
261a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_link_key_request(const RawAddress& p_bda);
262a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_pin_code_request(const RawAddress& p_bda);
263911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_update_clock_offset(uint16_t handle, uint16_t clock_offset);
264911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_dev_rec_cback_event(tBTM_SEC_DEV_REC* p_dev_rec,
265911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                        uint8_t res, bool is_le_trasnport);
266911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_set_peer_sec_caps(tACL_CONN* p_acl_cb,
267911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                      tBTM_SEC_DEV_REC* p_dev_rec);
268911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
269911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_clear_ble_keys(tBTM_SEC_DEV_REC* p_dev_rec);
270a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_sec_is_a_bonded_dev(const RawAddress& bda);
271911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_consolidate_dev(tBTM_SEC_DEV_REC* p_target_rec);
272a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_sec_is_le_capable_dev(const RawAddress& bda);
273911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern bool btm_ble_init_pseudo_addr(tBTM_SEC_DEV_REC* p_dev_rec,
274a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowski                                     const RawAddress& new_pseudo_addr);
275911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_SEC_SERV_REC* btm_sec_find_first_serv(CONNECTION_TYPE conn_type,
276911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                                  uint16_t psm);
277a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_ble_start_sec_check(const RawAddress& bd_addr, uint16_t psm,
278911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    bool is_originator,
279911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    tBTM_SEC_CALLBACK* p_callback,
280911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    void* p_ref_data);
281911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
282a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tINQ_DB_ENT* btm_inq_db_new(const RawAddress& p_bda);
283911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
284911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_rem_oob_req(uint8_t* p);
285911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_local_oob_complete(uint8_t* p);
286911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
287911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_resubmit_page(void);
288911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_reset_paging(void);
289a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_paging(BT_HDR* p, const RawAddress& dest);
290911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint8_t btm_sec_clr_service_by_psm(uint16_t psm);
291a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_clr_temp_auth_service(const RawAddress& bda);
292e13501a88820fce0a195ed4a97efa06510be9d71Srinu Jellaextern tBTM_STATUS btm_sec_execute_procedure(tBTM_SEC_DEV_REC* p_dev_rec);
2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
295