15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Copyright (C) 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);
505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
51b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_inq.cc
52ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************
535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
54a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda,
55c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                         uint8_t origin, period_ms_t timeout_ms,
56911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                         tBTM_CMPL_CB* p_cb);
575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
58a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_process_remote_name(const RawAddress* bda, BD_NAME name,
59c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                    uint16_t evt_len, uint8_t hci_status);
60911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_rmt_name_failed(void);
61911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_remote_name_timer_timeout(void* data);
625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Inquiry related functions */
64a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_clr_inq_db(const RawAddress* p_bda);
65911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_db_init(void);
66911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_inq_results(uint8_t* p, uint8_t inq_res_mode);
67911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_inq_complete(uint8_t status, uint8_t mode);
68911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_cancel_complete(uint8_t status, uint8_t mode);
69911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_event_filter_complete(uint8_t* p);
70911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_stop_on_ssp(void);
71911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_clear_ssp(void);
72a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tINQ_DB_ENT* btm_inq_db_find(const RawAddress& p_bda);
73a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_inq_find_bdaddr(const RawAddress& p_bda);
745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
75b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_acl.cc
76ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *******************************************
775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
78911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_init(void);
79a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_created(const RawAddress& bda, DEV_CLASS dc, BD_NAME bdn,
80911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                            uint16_t hci_handle, uint8_t link_role,
81911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                            tBT_TRANSPORT transport);
82a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_removed(const RawAddress& bda, tBT_TRANSPORT transport);
83911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_device_down(void);
84911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_update_busy_level(tBTM_BLI_EVENT event);
85911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
86911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_cont_rswitch(tACL_CONN* p, tBTM_SEC_DEV_REC* p_dev_rec,
87911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             uint8_t hci_status);
88911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
89911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint8_t btm_handle_to_acl_index(uint16_t hci_handle);
90911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_link_policy_complete(uint8_t* p);
91911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
92911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_rssi_timeout(void* data);
93911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_rssi_complete(uint8_t* p);
94911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
954820b2a6e69a8c13a2d57c8b7d41ba3b6d6471d2Pavlin Radoslavovextern void btm_read_failed_contact_counter_timeout(void* data);
964820b2a6e69a8c13a2d57c8b7d41ba3b6d6471d2Pavlin Radoslavovextern void btm_read_failed_contact_counter_complete(uint8_t* p);
974820b2a6e69a8c13a2d57c8b7d41ba3b6d6471d2Pavlin Radoslavov
98ecb6c72a1d06dbcbd0e5c07628b572c5f22a5f1dPavlin Radoslavovextern void btm_read_automatic_flush_timeout_timeout(void* data);
99ecb6c72a1d06dbcbd0e5c07628b572c5f22a5f1dPavlin Radoslavovextern void btm_read_automatic_flush_timeout_complete(uint8_t* p);
100ecb6c72a1d06dbcbd0e5c07628b572c5f22a5f1dPavlin Radoslavov
101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_tx_power_timeout(void* data);
102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_tx_power_complete(uint8_t* p, bool is_ble);
103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_link_quality_timeout(void* data);
105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_link_quality_complete(uint8_t* p);
106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_STATUS btm_set_packet_types(tACL_CONN* p, uint16_t pkt_types);
108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_process_clk_off_comp_evt(uint16_t hci_handle,
109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                         uint16_t clock_offset);
110a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_role_changed(uint8_t hci_status, const RawAddress* bd_addr,
111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                 uint8_t new_role);
112942648ef5a4b25508cc9ffe7073ddab5e04a9ab4Srinu Jellaextern void btm_blacklist_role_change_device(const RawAddress& bd_addr,
113942648ef5a4b25508cc9ffe7073ddab5e04a9ab4Srinu Jella                                             uint8_t hci_status);
114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_encrypt_change(uint16_t handle, uint8_t status,
115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint8_t encr_enable);
116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t btm_get_acl_disc_reason_code(void);
117a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_remove_acl(const RawAddress& bd_addr,
118c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                  tBT_TRANSPORT transport);
119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_features_complete(uint8_t* p);
120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_ext_features_complete(uint8_t* p);
121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_ext_features_failed(uint8_t status,
122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                                uint16_t handle);
123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_remote_version_complete(uint8_t* p);
124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_establish_continue(tACL_CONN* p_acl_cb);
125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_chk_peer_pkt_type_support(tACL_CONN* p,
127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                              uint16_t* p_pkt_type);
1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Read maximum data packet that can be sent over current connection */
129a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern uint16_t btm_get_max_packet_size(const RawAddress& addr);
130a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tACL_CONN* btm_bda_to_acl(const RawAddress& bda,
131c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                 tBT_TRANSPORT transport);
132a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_acl_notif_conn_collision(const RawAddress& bda);
1337be17ed2c74ba5ab351f6d0dd8bd1f22618ccb86Jakub Pawlowskiextern void btm_acl_update_conn_addr(uint16_t conn_handle,
134a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowski                                     const RawAddress& address);
1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_pm_reset(void);
137d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_pm_sm_alloc(uint8_t ind);
138d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_pm_proc_cmd_status(uint8_t status);
139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_pm_proc_mode_change(uint8_t hci_status, uint16_t hci_handle,
140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    uint8_t mode, uint16_t interval);
141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_pm_proc_ssr_evt(uint8_t* p, uint16_t evt_len);
142a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_read_power_mode_state(const RawAddress& remote_bda,
143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                             tBTM_PM_STATE* pmState);
144d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (BTM_SCO_INCLUDED == TRUE)
145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sco_chk_pend_unpark(uint8_t hci_status, uint16_t hci_handle);
1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else
1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_sco_chk_pend_unpark(hci_status, hci_handle)
1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_SCO_INCLUDED */
14978bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov
150911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_qos_setup_timeout(void* data);
151d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_qos_setup_complete(uint8_t status, uint16_t handle,
152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   FLOW_SPEC* p_flow);
1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
154b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_sco.cc
155ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *******************************************
1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sco_init(void);
158a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sco_connected(uint8_t hci_status, const RawAddress* bda,
159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                              uint16_t hci_handle, tBTM_ESCO_DATA* p_esco_data);
160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_esco_proc_conn_chg(uint8_t status, uint16_t handle,
161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint8_t tx_interval, uint8_t retrans_window,
162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint16_t rx_pkt_len, uint16_t tx_pkt_len);
163a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sco_conn_req(const RawAddress& bda, DEV_CLASS dev_class,
164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             uint8_t link_type);
165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sco_removed(uint16_t hci_handle, uint8_t reason);
166a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sco_acl_removed(const RawAddress* bda);
167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_route_sco_data(BT_HDR* p_msg);
168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern bool btm_is_sco_active(uint16_t handle);
169a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_remove_sco_links(const RawAddress& bda);
170a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_is_sco_active_by_bdaddr(const RawAddress& remote_bda);
171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
17257f6508cf7b22788fa2e7a739cec241b785718fbMudumba Ananthextern void btm_read_def_esco_mode(enh_esco_params_t* p_parms);
173911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint16_t btm_find_scb_by_handle(uint16_t handle);
174d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_sco_flush_sco_data(uint16_t sco_inx);
1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
176b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_devctl.cc
177ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *********************************************
1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
17978bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavovextern void btm_dev_init(void);
180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_local_name_timeout(void* data);
181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_local_name_complete(uint8_t* p, uint16_t evt_len);
1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
183d19e0785e662e640191a075eda07acce61c2aedaMarie Janssenextern void btm_ble_add_2_white_list_complete(uint8_t status);
184911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_ble_remove_from_white_list_complete(uint8_t* p,
185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                                    uint16_t evt_len);
186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_ble_clear_white_list_complete(uint8_t* p, uint16_t evt_len);
187a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_ble_addr_resolvable(const RawAddress& rpa,
188c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                    tBTM_SEC_DEV_REC* p_dev_rec);
189911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_STATUS btm_ble_read_resolving_list_entry(
190911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson    tBTM_SEC_DEV_REC* p_dev_rec);
191911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern bool btm_ble_resolving_list_load_dev(tBTM_SEC_DEV_REC* p_dev_rec);
192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_ble_resolving_list_remove_dev(tBTM_SEC_DEV_REC* p_dev_rec);
1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Vendor Specific Command complete evt handler */
195911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_vsc_complete(uint8_t* p, uint16_t cc_opcode, uint16_t evt_len,
196911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                             tBTM_CMPL_CB* p_vsc_cplt_cback);
197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_inq_db_reset(void);
198911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_vendor_specific_evt(uint8_t* p, uint8_t evt_len);
199911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_delete_stored_link_key_complete(uint8_t* p);
200911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_report_device_status(tBTM_DEV_STATUS status);
2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
202b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_dev.cc
203ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *********************************************
2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
205a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_dev_support_switch(const RawAddress& bd_addr);
206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
207911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void);
208a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_SEC_DEV_REC* btm_sec_alloc_dev(const RawAddress& bd_addr);
209911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_free_dev(tBTM_SEC_DEV_REC* p_dev_rec);
210a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_SEC_DEV_REC* btm_find_dev(const RawAddress& bd_addr);
211a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_SEC_DEV_REC* btm_find_or_alloc_dev(const RawAddress& bd_addr);
212911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_SEC_DEV_REC* btm_find_dev_by_handle(uint16_t handle);
213a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr);
214a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_set_bond_type_dev(const RawAddress& bd_addr,
215c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                  tBTM_BOND_TYPE bond_type);
2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
217b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov/* Internal functions provided by btm_sec.cc
218ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *********************************************
2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
220a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_dev_support_switch(const RawAddress& bd_addr);
221a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_sec_l2cap_access_req(const RawAddress& bd_addr,
222c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                            uint16_t psm, uint16_t handle,
223911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                            CONNECTION_TYPE conn_type,
224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                            tBTM_SEC_CALLBACK* p_callback,
225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                            void* p_ref_data);
226a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr,
227c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             uint16_t psm, bool is_originator,
228c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             uint32_t mx_proto_id,
229c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             uint32_t mx_chan_id,
230c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             tBTM_SEC_CALLBACK* p_callback,
231c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                             void* p_ref_data);
232a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_conn_req(const RawAddress& bda, uint8_t* dc);
233911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_create_conn_cancel_complete(uint8_t* p);
234911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
235911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_inq_tx_power_timeout(void* data);
236911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_inq_tx_power_complete(uint8_t* p);
237911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
238911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_init(uint8_t sec_mode);
239911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_dev_reset(void);
240a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_abort_access_req(const RawAddress& bd_addr);
241911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_auth_complete(uint16_t handle, uint8_t status);
242911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_encrypt_change(uint16_t handle, uint8_t status,
243911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                   uint8_t encr_enable);
244a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_connected(const RawAddress& bda, uint16_t handle,
245c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                              uint8_t status, uint8_t enc_mode);
246911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_STATUS btm_sec_disconnect(uint16_t handle, uint8_t reason);
247911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_disconnected(uint16_t handle, uint8_t reason);
248a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_rmt_name_request_complete(const RawAddress* bd_addr,
249911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                              uint8_t* bd_name, uint8_t status);
250911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_rmt_host_support_feat_evt(uint8_t* p);
251a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_io_capabilities_req(const RawAddress& p);
252911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_io_capabilities_rsp(uint8_t* p);
253911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_proc_sp_req_evt(tBTM_SP_EVT event, uint8_t* p);
254911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_keypress_notif_evt(uint8_t* p);
255911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_simple_pair_complete(uint8_t* p);
256a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_link_key_notification(const RawAddress& p_bda,
257c2276b06572ab6fc1f900fbb1f41087e77d47e2aJakub Pawlowski                                          uint8_t* p_link_key,
258911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                          uint8_t key_type);
259a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_link_key_request(const RawAddress& p_bda);
260a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_pin_code_request(const RawAddress& p_bda);
261911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_update_clock_offset(uint16_t handle, uint16_t clock_offset);
262911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_dev_rec_cback_event(tBTM_SEC_DEV_REC* p_dev_rec,
263911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                        uint8_t res, bool is_le_trasnport);
264911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_set_peer_sec_caps(tACL_CONN* p_acl_cb,
265911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                      tBTM_SEC_DEV_REC* p_dev_rec);
266911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
267911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_sec_clear_ble_keys(tBTM_SEC_DEV_REC* p_dev_rec);
268a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_sec_is_a_bonded_dev(const RawAddress& bda);
269911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_consolidate_dev(tBTM_SEC_DEV_REC* p_target_rec);
270a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_sec_is_le_capable_dev(const RawAddress& bda);
271911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern bool btm_ble_init_pseudo_addr(tBTM_SEC_DEV_REC* p_dev_rec,
272a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowski                                     const RawAddress& new_pseudo_addr);
273911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern tBTM_SEC_SERV_REC* btm_sec_find_first_serv(CONNECTION_TYPE conn_type,
274911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                                  uint16_t psm);
275a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern bool btm_ble_start_sec_check(const RawAddress& bd_addr, uint16_t psm,
276911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    bool is_originator,
277911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    tBTM_SEC_CALLBACK* p_callback,
278911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson                                    void* p_ref_data);
279911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
280a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern tINQ_DB_ENT* btm_inq_db_new(const RawAddress& p_bda);
281911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
282911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_rem_oob_req(uint8_t* p);
283911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_read_local_oob_complete(uint8_t* p);
284911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
285911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_resubmit_page(void);
286911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern void btm_acl_reset_paging(void);
287a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_acl_paging(BT_HDR* p, const RawAddress& dest);
288911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonextern uint8_t btm_sec_clr_service_by_psm(uint16_t psm);
289a484a888196ddf8bcbf1ad3226d6451bc735a94bJakub Pawlowskiextern void btm_sec_clr_temp_auth_service(const RawAddress& bda);
2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
292