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