15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2003-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 implements utility functions for the HeaLth device profile 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * (HL). 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdio.h> 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined(HL_INCLUDED) && (HL_INCLUDED == TRUE) 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "utl.h" 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_hl_int.h" 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_hl_co.h" 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "mca_defs.h" 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "mca_api.h" 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_set_ctrl_psm_for_dch 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function set the control PSM for the DCH setup 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE - control PSM setting is successful 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_set_ctrl_psm_for_dch(UINT8 app_idx, UINT8 mcl_idx, 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdl_idx, UINT16 ctrl_psm) 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN success = TRUE, update_ctrl_psm = FALSE; 545cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(mdl_idx); 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->sdp.num_recs) 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->ctrl_psm != ctrl_psm) 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* can not use a different ctrl PSM than the current one*/ 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project success = FALSE; 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* No SDP info control i.e. channel was opened by the peer */ 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project update_ctrl_psm = TRUE; 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (success && update_ctrl_psm) 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->ctrl_psm = ctrl_psm; 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!success) 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 79e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_set_ctrl_psm_for_dch num_recs=%d success=%d update_ctrl_psm=%d ctrl_psm=0x%x ", 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->sdp.num_recs, success, update_ctrl_psm, ctrl_psm ); 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return success; 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_sdp_idx_using_ctrl_psm 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9470ae7de9451e3dc074a048ba98b672a6ba3a4551Pavlin Radoslavov** Returns TRUE if found 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_sdp_idx_using_ctrl_psm(tBTA_HL_SDP *p_sdp, 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 ctrl_psm, 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_sdp_idx) 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SDP_REC *p_rec; 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (ctrl_psm != 0) 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i<p_sdp->num_recs; i++) 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_rec = &p_sdp->sdp_rec[i]; 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_rec->ctrl_psm == ctrl_psm) 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_sdp_idx = i; 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_sdp_idx = 0; 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 127e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_sdp_idx_using_ctrl_psm found=%d sdp_idx=%d ctrl_psm=0x%x ", 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, *p_sdp_idx, ctrl_psm ); 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1361d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov** Function bta_hl_set_user_tx_buf_size 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1381d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov** Description This function sets the user tx buffer size 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1401d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov** Returns UINT16 buf_size 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1441d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin RadoslavovUINT16 bta_hl_set_user_tx_buf_size(UINT16 max_tx_size) 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14670ae7de9451e3dc074a048ba98b672a6ba3a4551Pavlin Radoslavov if (max_tx_size > BT_DEFAULT_BUFFER_SIZE) 1471d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov return BTA_HL_LRG_DATA_BUF_SIZE; 1481d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov return L2CAP_INVALID_ERM_BUF_SIZE; 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1531d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov** Function bta_hl_set_user_rx_buf_size 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1551d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov** Description This function sets the user rx buffer size 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1571d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov** Returns UINT16 buf_size 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1611d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin RadoslavovUINT16 bta_hl_set_user_rx_buf_size(UINT16 mtu) 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16370ae7de9451e3dc074a048ba98b672a6ba3a4551Pavlin Radoslavov if (mtu > BT_DEFAULT_BUFFER_SIZE) 1641d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov return BTA_HL_LRG_DATA_BUF_SIZE; 1651d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov return L2CAP_INVALID_ERM_BUF_SIZE; 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_set_tx_win_size 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sets the tx window size 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns UINT8 tx_win_size 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT8 bta_hl_set_tx_win_size(UINT16 mtu, UINT16 mps) 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 tx_win_size; 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mtu <= mps) 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tx_win_size =1; 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mps > 0) 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tx_win_size = (mtu/mps)+1; 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 195e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("The MPS is zero"); 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tx_win_size = 10; 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 201e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_set_tx_win_size win_size=%d mtu=%d mps=%d", 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tx_win_size, mtu, mps); 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return tx_win_size; 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_set_mps 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sets the MPS 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns UINT16 MPS 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT16 bta_hl_set_mps(UINT16 mtu) 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 mps; 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mtu > BTA_HL_L2C_MPS) 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mps = BTA_HL_L2C_MPS; 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mps = mtu; 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 228e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_set_mps mps=%d mtu=%d", 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mps, mtu); 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return mps; 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_clean_mdl_cb 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function clean up the specified MDL control block 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_clean_mdl_cb(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx) 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 248e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_clean_mdl_cb app_idx=%d mcl_idx=%d mdl_idx=%d", 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project app_idx, mcl_idx, mdl_idx); 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 251abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9Pavlin Radoslavov osi_free_and_reset((void **)&p_dcb->p_tx_pkt); 252abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9Pavlin Radoslavov osi_free_and_reset((void **)&p_dcb->p_rx_pkt); 253abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9Pavlin Radoslavov osi_free_and_reset((void **)&p_dcb->p_echo_tx_pkt); 254abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9Pavlin Radoslavov osi_free_and_reset((void **)&p_dcb->p_echo_rx_pkt); 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset((void *)p_dcb, 0 , sizeof(tBTA_HL_MDL_CB)); 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_get_buf 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function allocate a buffer based on the specified data size 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BT_HDR *. 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2694d7575b601cd3e0408312d103d0c10cf597c82abJacob LeeBT_HDR * bta_hl_get_buf(UINT16 data_size, BOOLEAN fcs_use) 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 271a42f0d9343594af5e2a17273f33aa8f0ae186410Srinu Jella size_t size = data_size + L2CAP_MIN_OFFSET + BT_HDR_SIZE + L2CAP_FCS_LEN 272a42f0d9343594af5e2a17273f33aa8f0ae186410Srinu Jella + L2CAP_EXT_CONTROL_OVERHEAD; 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2744d7575b601cd3e0408312d103d0c10cf597c82abJacob Lee if (fcs_use) 2754d7575b601cd3e0408312d103d0c10cf597c82abJacob Lee size += L2CAP_FCS_LEN; 2764d7575b601cd3e0408312d103d0c10cf597c82abJacob Lee 2775fe6f0cf6b223e3ed6be4912d55b3ed5b41ce0cdPavlin Radoslavov BT_HDR *p_new = (BT_HDR *)osi_malloc(size); 2785fe6f0cf6b223e3ed6be4912d55b3ed5b41ce0cdPavlin Radoslavov p_new->len = data_size; 2795fe6f0cf6b223e3ed6be4912d55b3ed5b41ce0cdPavlin Radoslavov p_new->offset = L2CAP_MIN_OFFSET; 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return p_new; 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_service_in_db 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function check the specified service class(es) can be find in 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the received SDP database 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE - found 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE - not found 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_service_in_db( UINT8 app_idx, UINT8 mcl_idx, 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 service_uuid, 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSDP_DISC_REC **pp_rec ) 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found = TRUE; 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (service_uuid) 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case UUID_SERVCLASS_HDP_SINK: 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case UUID_SERVCLASS_HDP_SOURCE: 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((*pp_rec = SDP_FindServiceInDb(p_mcb->p_db, service_uuid, 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *pp_rec)) == NULL) 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = FALSE; 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (((*pp_rec = bta_hl_find_sink_or_src_srv_class_in_db(p_mcb->p_db, 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *pp_rec)) == NULL)) 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = FALSE; 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_get_service_uuids 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the service class(es) for both CCH and DCH oeprations 3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns UINT16 - service_id 3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** if service_uuid = 0xFFFF then it means service uuid 3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** can be either Sink or Source 3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT16 bta_hl_get_service_uuids(UINT8 sdp_oper, UINT8 app_idx, UINT8 mcl_idx, 3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdl_idx ) 3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb; 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 service_uuid = 0xFFFF; /* both Sink and Source */ 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (sdp_oper) 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_SDP_OP_DCH_OPEN_INIT: 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_SDP_OP_DCH_RECONNECT_INIT: 3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID) 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->peer_mdep_role == BTA_HL_MDEP_ROLE_SINK) 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project service_uuid = UUID_SERVCLASS_HDP_SINK; 3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project service_uuid = UUID_SERVCLASS_HDP_SOURCE; 3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_SDP_OP_CCH_INIT: 3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* use default that is both Sink and Source */ 3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 365e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_get_service_uuids service_uuid=0x%x",service_uuid ); 3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return service_uuid; 3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_echo_cfg_rsp 3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the configuration response for the echo test 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_echo_cfg_rsp(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdep_idx, UINT8 cfg, 3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_cfg_rsp) 3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP *p_mdep= &p_acb->sup_feature.mdep[mdep_idx]; 3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN status =TRUE; 3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdep->mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) 3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((cfg == BTA_HL_DCH_CFG_RELIABLE) || (cfg == BTA_HL_DCH_CFG_STREAMING)) 3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_cfg_rsp = cfg; 3935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else if (cfg == BTA_HL_DCH_CFG_NO_PREF ) 3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_cfg_rsp = BTA_HL_DEFAULT_ECHO_TEST_SRC_DCH_CFG; 3975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 3995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = FALSE; 401e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("Inavlid echo cfg value"); 4025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 4045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 4075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!status) 4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 409e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_echo_cfg_rsp status=failed app_idx=%d mcl_idx=%d mdep_idx=%d cfg=%d", 4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project app_idx, mcl_idx, mdep_idx, cfg); 4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_validate_dch_cfg 4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function validate the DCH configuration 4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE cfg is valid 4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not valid 4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_validate_cfg(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx, 4285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 cfg) 4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 4315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_valid =FALSE; 4325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx) && 4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (cfg != BTA_HL_DCH_CFG_RELIABLE)) 4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 437e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("the first DCH should be a reliable channel"); 4385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return is_valid; 4395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (p_dcb->local_cfg) 4425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_CFG_NO_PREF: 4445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((cfg == BTA_HL_DCH_CFG_RELIABLE) || (cfg == BTA_HL_DCH_CFG_STREAMING)) 4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project is_valid = TRUE; 4485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 4505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_CFG_RELIABLE: 4515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_CFG_STREAMING: 4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->local_cfg == cfg ) 4535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project is_valid = TRUE; 4555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 4575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 4625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!is_valid) 4635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 464e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_validate_dch_open_cfg is_valid=%d, cfg=%d", is_valid, cfg ); 4655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 4665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return is_valid; 4685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_cch_cb_indexes 4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the indexes needed for the CCH state machine 4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_cch_cb_indexes(tBTA_HL_DATA *p_msg, 4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_app_idx, 4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mcl_idx) 4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found = FALSE; 4855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb; 486ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 app_idx = 0, mcl_idx = 0; 4875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (p_msg->hdr.event) 4895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 4905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CCH_SDP_OK_EVT: 4915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CCH_SDP_FAIL_EVT: 4925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project app_idx = p_msg->cch_sdp.app_idx; 4935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mcl_idx = p_msg->cch_sdp.mcl_idx; 4945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 4955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 4965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CONNECT_IND_EVT: 4985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_app_idx_using_handle(p_msg->mca_evt.app_handle, &app_idx)) 5005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx(app_idx, p_msg->mca_evt.mca_data.connect_ind.bd_addr, &mcl_idx)) 5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* local initiated */ 5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else if (!bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx)&& 5075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_avail_mcl_idx(app_idx, &mcl_idx)) 5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* remote initiated */ 5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->in_use = TRUE; 5125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_oper = BTA_HL_CCH_OP_REMOTE_OPEN; 5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_DISCONNECT_IND_EVT: 5195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx)) 5215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else if (bta_hl_find_app_idx_using_handle(p_msg->mca_evt.app_handle, &app_idx) && 5255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mcl_idx(app_idx, p_msg->mca_evt.mca_data.disconnect_ind.bd_addr, &mcl_idx)) 5265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 533ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_CLOSE) && (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_OPEN) ) 5345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_oper = BTA_HL_CCH_OP_REMOTE_CLOSE; 5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RSP_TOUT_IND_EVT: 5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx)) 5435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 5455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 5485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 550ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if ((p_mcb->cch_oper != BTA_HL_CCH_OP_REMOTE_CLOSE) && (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_OPEN)) 5515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE; 5535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 5565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 5575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 5585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_app_idx = app_idx; 5645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mcl_idx = mcl_idx; 5655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 5685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 5695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 570e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_cch_cb_indexes event=%s found=%d app_idx=%d mcl_idx=%d", 5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_evt_code(p_msg->hdr.event), found, app_idx, mcl_idx); 5725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 5735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 5745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 5765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_dch_cb_indexes 5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the indexes needed for the DCH state machine 5835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 5855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 5865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 5875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 5885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_dch_cb_indexes(tBTA_HL_DATA *p_msg, 5895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_app_idx, 5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mcl_idx, 5915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx) 5925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found = FALSE; 5945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb; 595ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 app_idx = 0, mcl_idx = 0, mdl_idx = 0; 5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (p_msg->hdr.event) 5985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 5995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CREATE_CFM_EVT: 6005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) && 6015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.create_cfm.mdl_id, &mdl_idx)) 6025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CREATE_IND_EVT: 6085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RECONNECT_IND_EVT: 6095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) && 6105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_avail_mdl_idx( app_idx, mcl_idx, &mdl_idx)) 6115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_OPEN_CFM_EVT: 6175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) && 6185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.open_cfm.mdl_id, &mdl_idx)) 6195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_OPEN_IND_EVT: 6255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) && 6265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.open_ind.mdl_id, &mdl_idx)) 6275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CLOSE_CFM_EVT: 6335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_idx_using_handle((tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.close_cfm.mdl, 6355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &app_idx, &mcl_idx, &mdl_idx)) 6365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CLOSE_IND_EVT: 6415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_idx_using_handle((tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.close_ind.mdl, 6435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &app_idx, &mcl_idx, &mdl_idx)) 6445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_SEND_DATA_EVT: 6495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_idx_using_handle(p_msg->api_send_data.mdl_handle, 6515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &app_idx, &mcl_idx, &mdl_idx )) 6525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CONG_CHG_EVT: 6595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_idx_using_handle((tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.cong_chg.mdl, 6615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &app_idx, &mcl_idx, &mdl_idx )) 6625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RCV_DATA_EVT: 6695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project app_idx = p_msg->mca_rcv_data_evt.app_idx; 6705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mcl_idx = p_msg->mca_rcv_data_evt.mcl_idx; 6715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_idx = p_msg->mca_rcv_data_evt.mdl_idx; 6725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_RECONNECT_EVT: 6755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_OPEN_EVT: 6765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_ECHO_TEST_EVT: 6775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_SDP_FAIL_EVT: 6785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project app_idx = p_msg->dch_sdp.app_idx; 6795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mcl_idx = p_msg->dch_sdp.mcl_idx; 6805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_idx = p_msg->dch_sdp.mdl_idx; 6815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RECONNECT_CFM_EVT: 6845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) && 6855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.reconnect_cfm.mdl_id, &mdl_idx)) 6865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DCH_CREATE_RSP_EVT: 6935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->api_dch_create_rsp.mcl_handle, &app_idx, &mcl_idx)&& 6945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mdl_idx( app_idx, mcl_idx,p_msg->api_dch_create_rsp.mdl_id, &mdl_idx)) 6955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 6965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 6975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 6985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 6995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_ABORT_IND_EVT: 7005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) && 7015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mdl_idx( app_idx, mcl_idx,p_msg->mca_evt.mca_data.abort_ind.mdl_id, &mdl_idx)) 7025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 7045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 7065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_ABORT_CFM_EVT: 7075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) && 7085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.abort_cfm.mdl_id, &mdl_idx)) 7095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 7115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 7135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_GET_TX_DATA_EVT: 7145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_PUT_RX_DATA_EVT: 7155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_idx_using_handle(p_msg->ci_get_put_data.mdl_handle, &app_idx, &mcl_idx, &mdl_idx)) 7165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 7185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 7205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_GET_ECHO_DATA_EVT: 7215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_PUT_ECHO_DATA_EVT: 7225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx_using_handle(p_msg->ci_get_put_echo_data.mcl_handle, &app_idx, &mcl_idx)) 7235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 7255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_idx = p_mcb->echo_mdl_idx; 7265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 7275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 7295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 7315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 7325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 7365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_app_idx = app_idx; 7385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mcl_idx = mcl_idx; 7395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_idx = mdl_idx; 7405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 7425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 7435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 744e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_dch_cb_indexes event=%s found=%d app_idx=%d mcl_idx=%d mdl_idx=%d", 7455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_evt_code(p_msg->hdr.event), found, *p_app_idx, *p_mcl_idx, *p_mdl_idx ); 7465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 7485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 7505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 7535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_allocate_mdl_id 7555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function allocates a MDL ID 7575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns UINT16 - MDL ID 7595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 7605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 7615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT16 bta_hl_allocate_mdl_id(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx ) 7625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 mdl_id=0; 7645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 7655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN duplicate_id; 7665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i, mdl_cfg_idx; 7675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project do 7695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project duplicate_id = FALSE; 7715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_id = ((mdl_id+1) & 0xFEFF); 7725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* check mdl_ids that are used for the current conenctions */ 7735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< BTA_HL_NUM_MDLS_PER_MCL; i++) 7745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->mdl[i].in_use && 7765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (i != mdl_idx) && 7775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_mcb->mdl[i].mdl_id == mdl_id) ) 7785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project duplicate_id = TRUE; 7805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 7815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (duplicate_id) 7855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* start from the beginning to get another MDL value*/ 7875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project continue; 7885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 7905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* check mdl_ids that are stored in the persistent memory */ 7925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_cfg_idx(app_idx,mcl_idx, mdl_id, &mdl_cfg_idx)) 7935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project duplicate_id = TRUE; 7955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 7965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 7975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 7985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* found a new MDL value */ 7995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 8005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project }while (TRUE); 8045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 806e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_allocate_mdl OK mdl_id=%d", mdl_id); 8075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 8085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return mdl_id; 8095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 8115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_mdl_idx 8135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the MDL index based on mdl_id 8155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 8175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 8195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_mdl_idx(UINT8 app_idx, UINT8 mcl_idx, UINT16 mdl_id, 8205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx) 8215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 8235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 8245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 8255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++) 8275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->mdl[i].in_use && 8295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (mdl_id !=0) && 8305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_mcb->mdl[i].mdl_id== mdl_id)) 8315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 8335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_idx = i; 8345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 8355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 8395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 8405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 841e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_mdl_idx found=%d mdl_id=%d mdl_idx=%d ", 8425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, mdl_id, i); 8435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 8455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 8475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 8505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_an_active_mdl_idx 8525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds an active MDL 8545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 8565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 8585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_an_active_mdl_idx(UINT8 app_idx, UINT8 mcl_idx, 8595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx) 8605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 8625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 8635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 8645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++) 8665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->mdl[i].in_use && 8685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_mcb->mdl[i].dch_state == BTA_HL_DCH_OPEN_ST)) 8695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 8705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 8715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_idx = i; 8725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 8735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 8775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 8785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 879e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_an_opened_mdl_idx found=%d app_idx=%d mcl_idx=%d mdl_idx=%d", 8805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, app_idx, mcl_idx, i); 8815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 8825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 8835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 8855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 8885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_dch_setup_mdl_idx 8905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds a MDL which in the DCH setup state 8925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 8945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 8955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 8965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_dch_setup_mdl_idx(UINT8 app_idx, UINT8 mcl_idx, 8975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx) 8985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 9005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 9015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 9025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++) 9045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->mdl[i].in_use && 9065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_mcb->mdl[i].dch_state == BTA_HL_DCH_OPENING_ST)) 9075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 9095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_idx = i; 9105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 9115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 9155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 9165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 917e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_dch_setup_mdl_idx found=%d app_idx=%d mcl_idx=%d mdl_idx=%d", 9185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, app_idx, mcl_idx, i); 9195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 9235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 9265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_an_in_use_mcl_idx 9285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds an in-use MCL control block index 9305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 9325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 9345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_an_in_use_mcl_idx(UINT8 app_idx, 9355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mcl_idx) 9365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb; 9385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 9395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 9405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_MCLS ; i ++) 9425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, i); 9445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->in_use && 9455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_mcb->cch_state != BTA_HL_CCH_IDLE_ST)) 9465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 9485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mcl_idx = i; 9495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 9505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 9545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 9555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 956e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_an_in_use_mcl_idx found=%d app_idx=%d mcl_idx=%d ", 9575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, app_idx, i); 9585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 9625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 9665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_an_in_use_app_idx 9685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds an in-use application control block index 9705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 9725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 9735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 9745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_an_in_use_app_idx(UINT8 *p_app_idx) 9755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb ; 9775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 9785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 9795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_APPS ; i ++) 9815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb = BTA_HL_GET_APP_CB_PTR(i); 9835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->in_use) 9845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 9855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 9865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_app_idx = i; 9875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 9885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 9925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 9935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 994e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_an_in_use_app_idx found=%d app_idx=%d ", 9955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, i); 9965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 9975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 10005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 10015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 10025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_app_idx 10045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the application control block index based on 10065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the application ID 10075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 10095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 10115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_app_idx(UINT8 app_id, UINT8 *p_app_idx) 10125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 10135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 10145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 10155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_APPS ; i ++) 10175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 10185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_cb.acb[i].in_use && 10195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (bta_hl_cb.acb[i].app_id == app_id)) 10205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 10215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 10225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_app_idx = i; 10235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 10245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 10255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 10265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 1028e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_app_idx found=%d app_id=%d idx=%d ", 10295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, app_id, i); 10305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 10315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 10335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 10345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 10375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_app_idx_using_handle 10395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the application control block index based on 10415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the application handle 10425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 10445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 10465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_app_idx_using_handle(tBTA_HL_APP_HANDLE app_handle, 10475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_app_idx) 10485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 10495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 10505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 10515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_APPS ; i ++) 10535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 10545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_cb.acb[i].in_use && 10555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (bta_hl_cb.acb[i].app_handle == app_handle)) 10565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 10575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 10585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_app_idx = i; 10595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 10605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 10615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 10625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 10645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 10655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1066e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_app_idx_using_mca_handle status=%d handle=%d app_idx=%d ", 10675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, app_handle , i); 10685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 10695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 10705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 10725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 10735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 10765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_mcl_idx_using_handle 10785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the MCL control block index based on 10805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the MCL handle 10815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 10835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 10845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 10855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_mcl_idx_using_handle( tBTA_HL_MCL_HANDLE mcl_handle, 10865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_app_idx, UINT8 *p_mcl_idx) 10875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 10885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb; 10895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 1090ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 i = 0,j = 0; 10915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i<BTA_HL_NUM_APPS; i++) 10935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 10945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb = BTA_HL_GET_APP_CB_PTR(i); 10955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->in_use) 10965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 10975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (j=0; j < BTA_HL_NUM_MCLS ; j++) 10985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 10995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ( p_acb->mcb[j].mcl_handle == mcl_handle ) 11005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 11025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_app_idx = i; 11035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mcl_idx = j; 11045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 11055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 11115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 11125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1113e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_mcl_idx_using_handle found=%d app_idx=%d mcl_idx=%d", 11145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, i, j); 11155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 11175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 11185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 11195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 11215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_mcl_idx 11235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the MCL control block index based on 11255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the peer BD address 11265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 11285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 11305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_mcl_idx(UINT8 app_idx, BD_ADDR p_bd_addr, UINT8 *p_mcl_idx) 11315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 11325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 11335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 11345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_MCLS ; i ++) 11365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_cb.acb[app_idx].mcb[i].in_use && 11385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (!memcmp (bta_hl_cb.acb[app_idx].mcb[i].bd_addr, p_bd_addr, BD_ADDR_LEN))) 11395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 11415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mcl_idx = i; 11425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 11435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 11475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 11485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1149e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_mcl_idx found=%d idx=%d", 11505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, i); 11515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 11535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 11545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 11555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 11595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_mdl_idx_using_handle 11615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the MDL control block index based on 11635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the MDL handle 11645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN TRUE-found 11665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 11675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 11685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle, 11695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_app_idx,UINT8 *p_mcl_idx, 11705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx) 11715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 11725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb; 11735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb; 11745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb; 11755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 11765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i,j,k; 11775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_APPS ; i ++) 11795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb = BTA_HL_GET_APP_CB_PTR(i); 11815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->in_use) 11825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (j=0; j< BTA_HL_NUM_MCLS; j++) 11845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(i,j); 11865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->in_use) 11875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (k=0; k< BTA_HL_NUM_MDLS_PER_MCL; k++) 11895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb = BTA_HL_GET_MDL_CB_PTR(i,j,k); 11915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->in_use) 11925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->mdl_handle == mdl_handle) 11945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 11965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_app_idx = i; 11975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mcl_idx =j; 11985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_idx = k; 11995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 12005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 12105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 12115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1212e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_mdl_idx_using_handle found=%d mdl_handle=%d ", 12135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, mdl_handle); 12145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 12165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 12175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 12185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 12195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_is_the_first_reliable_existed 12215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function checks whether the first reliable DCH channel 12235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** has been setup on the MCL or not 12245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE exist 12265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE does not exist 12275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 12295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_is_the_first_reliable_existed(UINT8 app_idx, UINT8 mcl_idx ) 12305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 12315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 12325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_existed =FALSE; 12335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i ; 12345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< BTA_HL_NUM_MDLS_PER_MCL; i++) 12365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->mdl[i].in_use && p_mcb->mdl[i].is_the_first_reliable) 12385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project is_existed = TRUE; 12405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 12415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 1245e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_is_the_first_reliable_existed is_existed=%d ",is_existed ); 12465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 12475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return is_existed; 12485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 12495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 12515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_non_active_mdl_cfg 12535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds a valid MDL configiration index and this 12555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** MDL ID is not active 12565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 12585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 12595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 12605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 12615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_non_active_mdl_cfg(UINT8 app_idx, UINT8 start_mdl_cfg_idx, 12625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_cfg_idx) 12635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 12645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb; 12665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb; 12675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl; 12685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN mdl_in_use; 12695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found = FALSE; 12705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i,j,k; 12715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = start_mdl_cfg_idx; i< BTA_HL_NUM_MDL_CFGS; i++) 12735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_in_use = FALSE; 12755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i); 12765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (j=0; j< BTA_HL_NUM_MCLS; j++) 12775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, j); 12795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->in_use && 12805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project !memcmp(p_mdl->peer_bd_addr,p_mcb->bd_addr,BD_ADDR_LEN)) 12815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (k=0; k<BTA_HL_NUM_MDLS_PER_MCL; k++) 12845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, j, k); 12865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->in_use && p_mdl->mdl_id == p_dcb->mdl_id) 12885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_in_use = TRUE; 12905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 12915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mdl_in_use) 12965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 12975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 12985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 12995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!mdl_in_use) 13025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_cfg_idx = i; 13045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 13055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 13065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 13105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 13115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 13135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 13145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_mdl_cfg_idx 13155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 13165cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen** Description This function finds an available MDL configuration index 13175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 13185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 13195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 13205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 13215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 13225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_avail_mdl_cfg_idx(UINT8 app_idx, UINT8 mcl_idx, 13235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_cfg_idx) 13245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 13255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl, *p_mdl1, *p_mdl2; 13265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 13275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 13285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 first_mdl_cfg_idx, second_mdl_cfg_idx, older_mdl_cfg_idx; 13295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN done; 13305cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen UNUSED(mcl_idx); 13315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++) 13335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i); 13355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_mdl->active ) 13365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* found an unused space to store mdl cfg*/ 13385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found=TRUE; 13395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_cfg_idx =i; 13405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 13415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 13455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* all available mdl cfg spaces are in use so we need to find the mdl cfg which is 13475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project not currently in use and has the the oldest time stamp to remove*/ 13485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 13505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_non_active_mdl_cfg(app_idx,0, &first_mdl_cfg_idx)) 13515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_non_active_mdl_cfg(app_idx,(UINT8) (first_mdl_cfg_idx+1), &second_mdl_cfg_idx)) 13535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project done = FALSE; 13555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project while (!done) 13565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl1 = BTA_HL_GET_MDL_CFG_PTR(app_idx, first_mdl_cfg_idx); 13585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl2 = BTA_HL_GET_MDL_CFG_PTR(app_idx, second_mdl_cfg_idx); 13595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl1->time < p_mdl2->time) 13615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project older_mdl_cfg_idx = first_mdl_cfg_idx; 13635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 13655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project older_mdl_cfg_idx = second_mdl_cfg_idx; 13675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_non_active_mdl_cfg(app_idx,(UINT8) (second_mdl_cfg_idx+1), &second_mdl_cfg_idx)) 13705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project first_mdl_cfg_idx = older_mdl_cfg_idx; 13725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 13745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project done = TRUE; 13765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_cfg_idx = older_mdl_cfg_idx; 13805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 13835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_cfg_idx = first_mdl_cfg_idx; 13855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 13895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = FALSE; 13915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 13955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 13965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1397e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_avail_mdl_cfg_idx found=%d mdl_cfg_idx=%d ",found, *p_mdl_cfg_idx ); 13985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 14005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 14025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 14055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 14075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_mdl_cfg_idx 14095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the MDL configuration index based on 14115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the MDL ID 14125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 14145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 14155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 14175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_mdl_cfg_idx(UINT8 app_idx, UINT8 mcl_idx, 14185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_ID mdl_id, UINT8 *p_mdl_cfg_idx) 14195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 14215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl; 14225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i ; 14235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 1424bea4131cac3214e0ad26ea8258e270448f23f1f3Matthew Xie 1425bea4131cac3214e0ad26ea8258e270448f23f1f3Matthew Xie *p_mdl_cfg_idx = 0; 14265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++) 14275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i); 1429f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if(p_mdl->active) 1430e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_mdl_cfg_idx: mdl_id =%d, p_mdl->mdl_id=%d",mdl_id, 1431f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_mdl->mdl_id); 14325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->active && 14335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (!memcmp (p_mcb->bd_addr, p_mdl->peer_bd_addr, BD_ADDR_LEN))&& 14345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_mdl->mdl_id == mdl_id)) 14355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found=TRUE; 14375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_cfg_idx =i; 14385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 14395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 14435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 14445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1445e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_mdl_cfg_idx found=%d mdl_cfg_idx=%d ",found, i ); 14465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 14485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 14505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 14535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 14565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_get_cur_time 14585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function get the cuurent time value 14605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 14625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 14635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 14645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 14655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_get_cur_time(UINT8 app_idx, UINT8 *p_cur_time) 14665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl; 14685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i, j, time_latest, time; 14695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE, result=TRUE; 14705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++) 14725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i); 14745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->active) 14755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found=TRUE; 14775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project time_latest = p_mdl->time; 14785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (j=(i+1); j< BTA_HL_NUM_MDL_CFGS; j++ ) 14795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, j); 14815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->active) 14825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project time = p_mdl->time; 14845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (time > time_latest) 14855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project time_latest = time; 14875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 14915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 14935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 14965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (time_latest < BTA_HL_MAX_TIME) 14985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 14995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_cur_time = time_latest+1; 15005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 15025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* need to wrap around */ 15045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project result = FALSE; 15055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 15085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_cur_time = BTA_HL_MIN_TIME; 15105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 15135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!result) 15145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1515e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_get_cur_time result=%s cur_time=%d", 15165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (result?"OK":"FAIL"), *p_cur_time); 15175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 15195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return result; 15215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 15225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 15245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_sort_cfg_time_idx 15265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sort the mdl configuration idx stored in array a 15285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** based on decending time value 15295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 15315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 15325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 15345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_sort_cfg_time_idx(UINT8 app_idx, UINT8 *a, UINT8 n) 15355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 15365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 15375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 temp_time, temp_idx; 15385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project INT16 i, j; 15395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 1; i < n; ++i) 15405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project temp_idx = a[i]; 15425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project temp_time = p_acb->mdl_cfg[temp_idx].time; 15435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project j = i - 1; 15445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project while ((j >= 0) && (temp_time < p_acb->mdl_cfg[a[j]].time)) 15455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project a[j + 1] = a[j]; 15475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project --j; 15485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project a[j + 1] = temp_idx; 15505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 15525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 15545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_compact_mdl_cfg_time 15565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the MDL configuration index based on 15585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the MDL ID 15595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 15615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 15625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 15635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1564f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Agheravoid bta_hl_compact_mdl_cfg_time(UINT8 app_idx, UINT8 mdep_id) 15655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 15665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl; 15675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i, time_min, cnt=0; 15685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 s_arr[BTA_HL_NUM_MDL_CFGS]; 15695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++) 15725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i); 15745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->active ) 15755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project s_arr[cnt]= i; 15775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project cnt++; 15785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 1584e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_compact_mdl_cfg_time cnt=%d ",cnt ); 15855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 15865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (cnt) 15895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_sort_cfg_time_idx(app_idx, s_arr, cnt); 15915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project time_min = BTA_HL_MIN_TIME; 15925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0;i<cnt; i++) 15935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 15945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, s_arr[i]); 15955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl->time = time_min + i; 1596f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera bta_hl_co_save_mdl(mdep_id, s_arr[i], p_mdl); 15975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 15995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 16065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_is_mdl_exsit_in_mcl 16085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function checks whether the MDL ID 16105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** has already existed in teh MCL or not 16115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE exist 16135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE does not exist 16145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 16165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_is_mdl_exsit_in_mcl(UINT8 app_idx, BD_ADDR bd_addr, 16175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_ID mdl_id) 16185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl; 16205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found = FALSE; 16215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 16225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i< BTA_HL_NUM_MDL_CFGS; i++) 16245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i); 16265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->active && 16275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project !memcmp(p_mdl->peer_bd_addr, bd_addr,BD_ADDR_LEN)) 16285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS) 16305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->mdl_id == mdl_id) 16325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 16345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 16355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 16385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 16405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 16415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 16465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 16495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_delete_mdl_cfg 16515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function delete the specified MDL ID 16535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE Success 16555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE Failed 16565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 16585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_delete_mdl_cfg(UINT8 app_idx, BD_ADDR bd_addr, 16595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_ID mdl_id) 16605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl; 16625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN success = FALSE; 16635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 16645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i< BTA_HL_NUM_MDL_CFGS; i++) 16665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i); 16685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->active && 16695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project !memcmp(p_mdl->peer_bd_addr, bd_addr,BD_ADDR_LEN)) 16705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS) 16725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 16735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mdl->mdl_id == mdl_id) 16745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1675f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera bta_hl_co_delete_mdl(p_mdl->local_mdep_id, i); 16765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_mdl, 0, sizeof(tBTA_HL_MDL_CFG)); 16775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project success = TRUE; 16785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 16795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 16825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1683f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera bta_hl_co_delete_mdl(p_mdl->local_mdep_id, i); 16845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset(p_mdl, 0, sizeof(tBTA_HL_MDL_CFG)); 16855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project success = TRUE; 16865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 16895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return success; 16915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 16955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_is_mdl_value_valid 16975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 16995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function checks the specified MDL ID is in valid range or not 17005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE Success 17025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE Failed 17035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** note: mdl_id range 0x0000 reserved, 17055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 0x0001-oxFEFF dynamic range, 17065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 0xFF00-0xFFFE reserved, 17075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 0xFFFF indicates all MDLs (for delete operation only) 17085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 17105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_is_mdl_value_valid(tBTA_HL_MDL_ID mdl_id) 17115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 17125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN status = TRUE; 17135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS) 17155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mdl_id != 0) 17175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mdl_id > BTA_HL_MAX_MDL_VAL ) 17195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = FALSE; 17215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 17225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 17235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 17245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = FALSE; 17265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 17275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 17285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 17305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 17315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 17335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_mdep_cfg_idx 17355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the MDEP configuration index based 17375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** on the local MDEP ID 17385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 17405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 17415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 17435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_mdep_cfg_idx(UINT8 app_idx, tBTA_HL_MDEP_ID local_mdep_id, 17445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdep_cfg_idx) 17455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 17465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 17475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SUP_FEATURE *p_sup_feature= &p_acb->sup_feature; 17485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found =FALSE; 17495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 17505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< p_sup_feature->num_of_mdeps; i++) 17525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ( p_sup_feature->mdep[i].mdep_id == local_mdep_id) 17545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 17565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdep_cfg_idx = i; 17575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 17585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 17595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 17605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 17625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 17635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1764e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_mdep_cfg_idx found=%d mdep_idx=%d local_mdep_id=%d ", 17655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found,i, local_mdep_id ); 17665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 17675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 17685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 17695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 17705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 17735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_rxtx_apdu_size 17755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the maximum APDU rx and tx sizes based on 17775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** the MDEP configuration data 17785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 17805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 17815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 17825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_find_rxtx_apdu_size(UINT8 app_idx, UINT8 mdep_cfg_idx, 17835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 *p_rx_apu_size, 17845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 *p_tx_apu_size) 17855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 17865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 17875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_CFG *p_mdep_cfg; 17885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 17895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 max_rx_apdu_size=0, max_tx_apdu_size=0; 17905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdep_cfg = &p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg; 17925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< p_mdep_cfg->num_of_mdep_data_types ; i++) 17955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (max_rx_apdu_size < p_mdep_cfg->data_cfg[i].max_rx_apdu_size) 17985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 17995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project max_rx_apdu_size = p_mdep_cfg->data_cfg[i].max_rx_apdu_size; 18005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 18015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (max_tx_apdu_size < p_mdep_cfg->data_cfg[i].max_tx_apdu_size) 18035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 18045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project max_tx_apdu_size = p_mdep_cfg->data_cfg[i].max_tx_apdu_size; 18055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 18065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 18075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_rx_apu_size = max_rx_apdu_size; 18105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_tx_apu_size = max_tx_apdu_size; 18115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 1813e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_rxtx_apdu_size max_rx_apdu_size=%d max_tx_apdu_size=%d ", 18145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project max_rx_apdu_size, max_tx_apdu_size ); 18155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 18165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 18195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 18215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_validate_peer_cfg 18235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function validates the peer DCH configuration 18255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE validation is successful 18275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE validation failed 18285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 18305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_validate_peer_cfg(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx, 18315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ID peer_mdep_id, 18325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ROLE peer_mdep_role, 18335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sdp_idx) 18345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 18355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 18365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 18375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SDP_REC *p_rec; 18385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN peer_found =FALSE; 18395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 18405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1841e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_validate_peer_cfg sdp_idx=%d app_idx %d", sdp_idx, app_idx); 18425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) 18455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 18465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return TRUE; 18475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 18485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_rec = &p_mcb->sdp.sdp_rec[sdp_idx]; 18505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< p_rec->num_mdeps; i++) 18515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1852e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("mdep_id %d peer_mdep_id %d",p_rec->mdep_cfg[i].mdep_id , peer_mdep_id); 1853e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("mdep_role %d peer_mdep_role %d",p_rec->mdep_cfg[i].mdep_role, 1854f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera peer_mdep_role) 18555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ( (p_rec->mdep_cfg[i].mdep_id == peer_mdep_id) && 18565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_rec->mdep_cfg[i].mdep_role == peer_mdep_role)) 18575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 18585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project peer_found = TRUE; 18595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 18615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 18625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 18635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 18655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!peer_found) 18665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1867e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_validate_peer_cfg failed num_mdeps=%d",p_rec->num_mdeps); 18685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 18695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 18705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return peer_found; 18715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 18725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 18745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_chk_local_cfg 18765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function check whether the local DCH configuration is OK or not 18785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns tBTA_HL_STATUS - OK - local DCH configuration is OK 18805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** NO_FIRST_RELIABLE - the streaming DCH configuration 18815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is not OK and it needs to use 18825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** reliable DCH configuration 18835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 18845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 18855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_HL_STATUS bta_hl_chk_local_cfg(UINT8 app_idx, UINT8 mcl_idx, 18865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdep_cfg_idx, 18875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_DCH_CFG local_cfg) 18885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 18895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 18905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status = BTA_HL_STATUS_OK; 18915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ( mdep_cfg_idx && 18935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg.mdep_role == BTA_HL_MDEP_ROLE_SOURCE) && 18945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx)) && 18955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (local_cfg != BTA_HL_DCH_CFG_RELIABLE)) 18965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 18975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_NO_FIRST_RELIABLE; 1898e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("BTA_HL_STATUS_INVALID_DCH_CFG"); 18995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 19025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 19035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 19065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 19075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_validate_reconnect_params 19085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 19095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function validates the reconnect parameters 19105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 19115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE validation is successful 19125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE validation failed 19135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 19145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_validate_reconnect_params(UINT8 app_idx, UINT8 mcl_idx, 19155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_API_DCH_RECONNECT *p_reconnect, 19165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdep_cfg_idx, UINT8 *p_mdl_cfg_idx) 19175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 19185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 19195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SUP_FEATURE *p_sup_feature = &p_acb->sup_feature; 19205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 num_mdeps; 19215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdl_cfg_idx; 19225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN local_mdep_id_found =FALSE; 19235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN mdl_cfg_found =FALSE; 19245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN status=FALSE; 1925ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 i, in_use_mdl_idx = 0; 19265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 1928e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_validate_reconnect_params mdl_id=%d app_idx=%d", p_reconnect->mdl_id, app_idx); 19295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 19305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_reconnect->mdl_id, &mdl_cfg_idx)) 19315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 19325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg_found = TRUE; 19335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 19365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!mdl_cfg_found) 19375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1938e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("mdl_cfg_found not found"); 19395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 19415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (mdl_cfg_found) 19445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 19455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project num_mdeps = p_sup_feature->num_of_mdeps; 19465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i< num_mdeps ; i++) 19475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 19485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ( p_sup_feature->mdep[i].mdep_id == p_acb->mdl_cfg[mdl_cfg_idx].local_mdep_id) 19495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 19505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project local_mdep_id_found = TRUE; 19515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdep_cfg_idx =i; 19525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_cfg_idx = mdl_cfg_idx; 19535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 19545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 19595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!local_mdep_id_found) 19605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1961e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("local_mdep_id not found"); 19625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 19645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (local_mdep_id_found) 19675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 19685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!bta_hl_find_mdl_idx(app_idx,mcl_idx, p_reconnect->mdl_id, &in_use_mdl_idx)) 19695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 19705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status= TRUE; 19715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 19735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1974e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("mdl_id=%d is curreltly in use",p_reconnect->mdl_id); 19755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 19795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!status) 19805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1981e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("Reconnect validation failed local_mdep_id found=%d mdl_cfg_idx found=%d in_use_mdl_idx=%d ", 19825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project local_mdep_id_found, mdl_cfg_found, in_use_mdl_idx); 19835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 19845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 19855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 19865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 19875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 19895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 19905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_avail_mcl_idx 19915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 19925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 19935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 19945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 19955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 19965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_avail_mcl_idx(UINT8 app_idx, UINT8 *p_mcl_idx) 19975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 19985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 19995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 20005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_MCLS ; i ++) 20025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!bta_hl_cb.acb[app_idx].mcb[i].in_use) 20045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 20065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mcl_idx = i; 20075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 20085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 20125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 20135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2014e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_avail_mcl_idx found=%d idx=%d", 20155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, i); 20165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 20185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 20195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 20205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 20245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 20255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_avail_mdl_idx 20265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 20275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds an available MDL control block index 20285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 20295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 20305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 20315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 20325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 20335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_avail_mdl_idx(UINT8 app_idx, UINT8 mcl_idx, 20345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx) 20355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 20365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 20375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 20385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 20395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++) 20415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_mcb->mdl[i].in_use) 20435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset((void *)&p_mcb->mdl[i],0, sizeof(tBTA_HL_MDL_CB)); 20455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 20465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_mdl_idx = i; 20475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 20485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 20525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 20535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2054e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_avail_mdl_idx found=%d idx=%d", 20555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, i); 20565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 20585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 20595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 20605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 20625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 20635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_is_a_duplicate_id 20645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 20655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds the application has been used or not 20665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 20675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE the app_id is a duplicate ID 20685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not a duplicate ID 20695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 20705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_is_a_duplicate_id(UINT8 app_id) 20715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 20725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_duplicate=FALSE; 20735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 20745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_APPS ; i ++) 20765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_cb.acb[i].in_use && 20785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (bta_hl_cb.acb[i].app_id == app_id)) 20795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project is_duplicate = TRUE; 20815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 20835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 20875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (is_duplicate) 20885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2090e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_is_a_duplicate_id app_id=%d is_duplicate=%d", 20915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project app_id, is_duplicate); 20925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 20945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return is_duplicate; 20965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 20975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 21005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 21015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_find_avail_app_idx 21025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 21035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function finds an available application control block index 21045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 21055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE found 21065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not found 21075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 21085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 21095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_find_avail_app_idx(UINT8 *p_idx) 21105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 21115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=FALSE; 21125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i; 21135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_APPS ; i ++) 21155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 21165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!bta_hl_cb.acb[i].in_use) 21175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 21185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found = TRUE; 21195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *p_idx = i; 21205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 21215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 21225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 21235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 21255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!found) 21265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2127e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_find_avail_app_idx found=%d app_idx=%d", 21285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found, i); 21295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 21305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 21315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return found; 21325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 21335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 21355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2136f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera** Function bta_hl_app_update 2137f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera** 2138f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera** Description This function registers an HDP application MCAP and DP 2139f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera** 2140f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera** Returns tBTA_HL_STATUS -registration status 2141f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera** 2142f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera*******************************************************************************/ 2143f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti AgheratBTA_HL_STATUS bta_hl_app_update(UINT8 app_id, BOOLEAN is_register) 2144f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera{ 2145f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera tBTA_HL_STATUS status = BTA_HL_STATUS_OK; 2146f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(0); 2147f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera tMCA_CS mca_cs; 2148f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera UINT8 i, mdep_idx, num_of_mdeps; 2149f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera UINT8 mdep_counter = 0; 2150f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2151f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2152f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera#if BTA_HL_DEBUG == TRUE 2153e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_app_update app_id=%d", app_id); 2154f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera#endif 2155f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2156f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (is_register) 2157f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2158f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if ((status == BTA_HL_STATUS_OK) && 2159f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera bta_hl_co_get_num_of_mdep(app_id, &num_of_mdeps)) 2160f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2161f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera for (i=0; i < num_of_mdeps; i++) 2162f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2163f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera mca_cs.type = MCA_TDEP_DATA; 2164f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP; 2165f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera mca_cs.p_data_cback = bta_hl_mcap_data_cback; 2166f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera /* Find the first available mdep index, and create a MDL Endpoint */ 2167f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera // make a function later if needed 2168f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera for (mdep_idx = 1; mdep_idx < BTA_HL_NUM_MDEPS; mdep_idx++) 2169f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2170f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if ( p_acb->sup_feature.mdep[mdep_idx].mdep_id == 0) 2171f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2172f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera break; /* We found an available index */ 2173f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2174f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera else 2175f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2176f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera mdep_counter++; 2177f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2178f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2179f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera /* If no available MDEPs, return error */ 2180f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (mdep_idx == BTA_HL_NUM_MDEPS) 2181f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2182e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("bta_hl_app_update: Out of MDEP IDs"); 2183f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_MCAP_REG_FAIL; 2184f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera break; 2185f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2186f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle, 2187f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera &(p_acb->sup_feature.mdep[mdep_idx].mdep_id), &mca_cs) == MCA_SUCCESS) 2188f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2189f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (bta_hl_co_get_mdep_config(app_id, 2190f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera mdep_idx, 2191f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera mdep_counter, 2192f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[mdep_idx].mdep_id, 2193f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera &p_acb->sup_feature.mdep[mdep_idx].mdep_cfg)) 2194f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2195f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[mdep_idx].ori_app_id = app_id; 2196e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("mdep idx %d id %d ori_app_id %d num data type %d",mdep_idx, 2197f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[mdep_idx].mdep_id, 2198f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[mdep_idx].ori_app_id, 2199f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.num_of_mdep_data_types); 2200f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role == 2201f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera BTA_HL_MDEP_ROLE_SOURCE) 2202f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2203f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SOURCE; 2204f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2205f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera else if (p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role == 2206f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera BTA_HL_MDEP_ROLE_SINK) 2207f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2208f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SINK; 2209f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2210f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera else 2211f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2212e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("bta_hl_app_registration: Invalid Role %d", 2213f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role); 2214f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_MDEP_CO_FAIL; 2215f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera break; 2216f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2217f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2218f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera else 2219f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2220e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("bta_hl_app_registration: Cfg callout failed"); 2221f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_MDEP_CO_FAIL; 2222f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera break; 2223f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2224f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2225f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera else 2226f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2227e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("bta_hl_app_registration: MCA_CreateDep failed"); 2228f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_MCAP_REG_FAIL; 2229f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera break; 2230f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2231f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2232f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2233f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.num_of_mdeps += num_of_mdeps; 2234e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("num_of_mdeps %d", p_acb->sup_feature.num_of_mdeps); 2235f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2236f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if ((status == BTA_HL_STATUS_OK) && 2237f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera (p_acb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE)) 2238f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2239f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.advertize_source_sdp = 2240f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera bta_hl_co_advrtise_source_sdp(app_id); 2241f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2242f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2243f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if ((status == BTA_HL_STATUS_OK)&& 2244f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera (!bta_hl_co_get_echo_config(app_id, &p_acb->sup_feature.echo_cfg))) 2245f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2246f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_ECHO_CO_FAIL; 2247f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2248f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2249f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if ((status == BTA_HL_STATUS_OK)&& 2250f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera (!bta_hl_co_load_mdl_config(app_id, BTA_HL_NUM_MDL_CFGS, &p_acb->mdl_cfg[0]))) 2251f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2252f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_MDL_CFG_CO_FAIL; 2253f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2254f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2255f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera else 2256f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2257f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_MDEP_CO_FAIL; 2258f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2259f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2260f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera else 2261f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2262f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera for (i=1; i<BTA_HL_NUM_MDEPS; i++) 2263f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2264f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (p_acb->sup_feature.mdep[i].ori_app_id == app_id) 2265f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2266e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("Found index %", i); 2267f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2268f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2269f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (MCA_DeleteDep((tMCA_HANDLE)p_acb->app_handle, 2270f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera (p_acb->sup_feature.mdep[i].mdep_id)) != MCA_SUCCESS) 2271f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2272e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("Error deregistering"); 2273f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = BTA_HL_STATUS_MCAP_REG_FAIL; 2274f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera return status; 2275f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2276f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera memset(&p_acb->sup_feature.mdep[i], 0, sizeof(tBTA_HL_MDEP)); 2277f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2278f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2279f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2280f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2281f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2282f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2283f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera if (status == BTA_HL_STATUS_OK) 2284f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera { 2285f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera /* Register/Update MDEP(s) in SDP Record */ 2286f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera status = bta_hl_sdp_update(app_id); 2287f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera } 2288f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera /* else do cleanup */ 2289f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2290f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2291f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera return status; 2292f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera} 2293f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2294f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 2295f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera/******************************************************************************* 2296f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera** 22975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_app_registration 22985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 22995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function registers an HDP application MCAP and DP 23005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 23015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns tBTA_HL_STATUS -registration status 23025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 23035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 23045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_HL_STATUS bta_hl_app_registration(UINT8 app_idx) 23055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 23065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status = BTA_HL_STATUS_OK; 23075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 23085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tMCA_REG reg; 23095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tMCA_CS mca_cs; 23105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 i, num_of_mdeps; 2311f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera UINT8 mdep_counter = 0; 23125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 2314e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_app_registration app_idx=%d", app_idx); 23155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 23165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project reg.ctrl_psm = p_acb->ctrl_psm; 23185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project reg.data_psm = p_acb->data_psm; 23195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project reg.sec_mask = p_acb->sec_mask; 23205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project reg.rsp_tout = BTA_HL_MCAP_RSP_TOUT; 23215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ( (p_acb->app_handle = (tBTA_HL_APP_HANDLE) MCA_Register(®, bta_hl_mcap_ctrl_cback))!=0) 23235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mca_cs.type = MCA_TDEP_ECHO; 23255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP; 23265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mca_cs.p_data_cback = bta_hl_mcap_data_cback; 23275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle, 23295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &(p_acb->sup_feature.mdep[0].mdep_id), 23305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &mca_cs) == MCA_SUCCESS) 23315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->sup_feature.mdep[0].mdep_id != BTA_HL_ECHO_TEST_MDEP_ID) 23335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MCAP_REG_FAIL; 2335e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("BAD MDEP ID for echo test mdep_id=%d", 23365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->sup_feature.mdep[0].mdep_id ); 23375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 23405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MCAP_REG_FAIL; 2342e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("MCA_CreateDep for echo test(mdep_id=0) failed"); 23435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status == BTA_HL_STATUS_OK) && 23475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_co_get_num_of_mdep(p_acb->app_id, &num_of_mdeps)) 23485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->sup_feature.num_of_mdeps = num_of_mdeps+1; 23505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=1; i<p_acb->sup_feature.num_of_mdeps; i++) 23525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mca_cs.type = MCA_TDEP_DATA; 23545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP; 23555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mca_cs.p_data_cback = bta_hl_mcap_data_cback; 23565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle, 23585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &(p_acb->sup_feature.mdep[i].mdep_id), &mca_cs) == MCA_SUCCESS) 23595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_co_get_mdep_config(p_acb->app_id, 2361f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera i,mdep_counter, 23625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->sup_feature.mdep[i].mdep_id, 23635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &p_acb->sup_feature.mdep[i].mdep_cfg)) 23645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->sup_feature.mdep[i].mdep_cfg.mdep_role == BTA_HL_MDEP_ROLE_SOURCE) 23665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SOURCE; 23685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else if (p_acb->sup_feature.mdep[i].mdep_cfg.mdep_role == BTA_HL_MDEP_ROLE_SINK) 23705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SINK; 23725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 23745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MDEP_CO_FAIL; 23765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 23775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2378f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[i].ori_app_id = p_acb->app_id; 2379e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("index %d ori_app_id %d", i, 2380f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_acb->sup_feature.mdep[i].ori_app_id); 23815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 23835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MDEP_CO_FAIL; 23855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 23865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 23895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 23905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MCAP_REG_FAIL; 23915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 23925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 23945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status == BTA_HL_STATUS_OK) && 23985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_acb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE)) 23995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* this is a source only applciation */ 24015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->sup_feature.advertize_source_sdp = 24025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_co_advrtise_source_sdp(p_acb->app_id); 24035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status == BTA_HL_STATUS_OK)&& 24065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (!bta_hl_co_get_echo_config(p_acb->app_id, &p_acb->sup_feature.echo_cfg))) 24075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_ECHO_CO_FAIL; 24095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((status == BTA_HL_STATUS_OK)&& 24125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (!bta_hl_co_load_mdl_config(p_acb->app_id, BTA_HL_NUM_MDL_CFGS, &p_acb->mdl_cfg[0]))) 24135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MDL_CFG_CO_FAIL; 24155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 24185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MDEP_CO_FAIL; 24205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 24235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = BTA_HL_STATUS_MCAP_REG_FAIL; 24255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (status == BTA_HL_STATUS_OK) 24285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project status = bta_hl_sdp_register(app_idx); 24305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return status; 24335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 24345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 24375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_discard_data 24395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function discard an HDP event 24415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 24435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 24455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_discard_data(UINT16 event, tBTA_HL_DATA *p_data) 24465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 24475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 2449e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("BTA HL Discard event=%s",bta_hl_evt_code(event)); 24505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 24525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (event) 24545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_SEND_DATA_EVT: 24565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 24575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RCV_DATA_EVT: 2459abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9Pavlin Radoslavov osi_free_and_reset((void **)&p_data->mca_rcv_data_evt.p_pkt); 24605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 24615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 24635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /*Nothing to free*/ 24645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 24655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 24675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 24695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_save_mdl_cfg 24715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function saves the MDL configuration 24735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 24755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 24765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 24775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_save_mdl_cfg(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx ) 24785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 24795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 24805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 24815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 24825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdl_cfg_idx; 24835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_ID mdl_id; 24845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN found=TRUE; 24855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG mdl_cfg; 24865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP *p_mdep_cfg; 24875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_L2CAP_CFG_INFO l2cap_cfg; 2488ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 time_val = 0; 24895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_id = p_dcb->mdl_id; 24905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, mdl_id, &mdl_cfg_idx)) 24915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!bta_hl_find_avail_mdl_cfg_idx(app_idx, mcl_idx, &mdl_cfg_idx)) 24935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2494e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("No space to save the MDL config"); 24955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project found= FALSE; /*no space available*/ 24965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 25005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 25015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_get_l2cap_cfg(p_dcb->mdl_handle, &l2cap_cfg); 25025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!bta_hl_get_cur_time(app_idx, &time_val )) 25035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2504f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera bta_hl_compact_mdl_cfg_time(app_idx,p_dcb->local_mdep_id); 25055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_get_cur_time(app_idx, &time_val); 25065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 25075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.active = TRUE; 25085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.time = time_val; 25095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.mdl_id = p_dcb->mdl_id; 25105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.dch_mode = p_dcb->dch_mode; 25115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.mtu = l2cap_cfg.mtu; 25125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.fcs = l2cap_cfg.fcs; 25135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bdcpy(mdl_cfg.peer_bd_addr, p_mcb->bd_addr); 25155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.local_mdep_id= p_dcb->local_mdep_id; 25165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mdep_cfg = &p_acb->sup_feature.mdep[p_dcb->local_mdep_cfg_idx]; 25175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.local_mdep_role= p_mdep_cfg->mdep_cfg.mdep_role; 25185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_acb->mdl_cfg[mdl_cfg_idx], &mdl_cfg, sizeof(tBTA_HL_MDL_CFG)); 2519f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera bta_hl_co_save_mdl(mdl_cfg.local_mdep_id, mdl_cfg_idx, &mdl_cfg); 25205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 25215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 25235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (found) 25245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 25255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->mtu != l2cap_cfg.mtu) 25265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2527e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_WARNING("MCAP and L2CAP peer mtu size out of sync from MCAP mtu=%d from l2cap mtu=%d", 25285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->mtu, l2cap_cfg.mtu); 25295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2530e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_save_mdl_cfg saved=%d", found); 2531e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("Saved. L2cap cfg mdl_id=%d mtu=%d fcs=%d dch_mode=%d", 25325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project mdl_cfg.mdl_id, mdl_cfg.mtu, mdl_cfg.fcs, mdl_cfg.dch_mode); 25335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 25345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 25355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 25395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 25415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 25425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_set_dch_chan_cfg 25435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 25445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function setups the L2CAP DCH channel configuration 25455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 25465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 25475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 25485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_set_dch_chan_cfg(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx,tBTA_HL_DATA *p_data) 25495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 25505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 25515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 25525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 l2cap_mode = L2CAP_FCR_ERTM_MODE; 25535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SUP_FEATURE *p_sup_feature= &p_acb->sup_feature; 25545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 local_mdep_cfg_idx = p_dcb->local_mdep_cfg_idx; 25555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (p_dcb->dch_oper) 25575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 25585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_OP_LOCAL_RECONNECT: 25595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_OP_REMOTE_RECONNECT: 25605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->dch_mode == BTA_HL_DCH_MODE_STREAMING) 25615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project l2cap_mode = L2CAP_FCR_STREAM_MODE; 25625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 25635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_OP_LOCAL_OPEN: 25645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_data->mca_evt.mca_data.create_cfm.cfg == BTA_HL_DCH_CFG_STREAMING) 25655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project l2cap_mode = L2CAP_FCR_STREAM_MODE; 25665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 25675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_OP_REMOTE_OPEN: 25685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->local_cfg == BTA_HL_DCH_CFG_STREAMING ) 25695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project l2cap_mode = L2CAP_FCR_STREAM_MODE; 25705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 25715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 2572e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR("Invalid dch oper=%d for set dch chan cfg", p_dcb->dch_oper); 25735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project break; 25745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 25755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.mode = l2cap_mode; 25765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.mps = bta_hl_set_mps(p_dcb->max_rx_apdu_size); 25775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.tx_win_sz = bta_hl_set_tx_win_size(p_dcb->max_rx_apdu_size, 25785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.mps); 25795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.max_transmit= BTA_HL_L2C_MAX_TRANSMIT; 25805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.rtrans_tout = BTA_HL_L2C_RTRANS_TOUT; 25815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.mon_tout = BTA_HL_L2C_MON_TOUT; 25825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25831d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.user_rx_buf_size = bta_hl_set_user_rx_buf_size(p_dcb->max_rx_apdu_size); 25841d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.user_tx_buf_size = bta_hl_set_user_tx_buf_size(p_dcb->max_tx_apdu_size); 25851d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.fcr_rx_buf_size = L2CAP_INVALID_ERM_BUF_SIZE; 25861d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.fcr_tx_buf_size = L2CAP_INVALID_ERM_BUF_SIZE; 25875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.data_mtu = p_dcb->max_rx_apdu_size; 25885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcs = BTA_HL_MCA_NO_FCS; 25905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (local_mdep_cfg_idx != BTA_HL_ECHO_TEST_MDEP_CFG_IDX) 25915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 25925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_sup_feature->mdep[local_mdep_cfg_idx].mdep_cfg.mdep_role == 25935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HL_MDEP_ROLE_SOURCE) 25945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 25955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcs = BTA_HL_DEFAULT_SOURCE_FCS; 25965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 25975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 25985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 25995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcs = BTA_HL_MCA_USE_FCS; 26015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 2604e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("L2CAP Params l2cap_mode[3-ERTM 4-STREAM]=%d", l2cap_mode); 2605e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("Use FCS =%s mtu=%d", ((p_dcb->chnl_cfg.fcs & 1)?"YES":"NO"), 26065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.data_mtu); 2607e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("tx_win_sz=%d, max_transmit=%d, rtrans_tout=%d, mon_tout=%d, mps=%d", 26085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.tx_win_sz, 26095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.max_transmit, 26105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.rtrans_tout, 26115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.mon_tout, 26125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->chnl_cfg.fcr_opt.mps); 26135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26141d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov APPL_TRACE_DEBUG("USER rx_buf_size=%d, tx_buf_size=%d, FCR rx_buf_size=%d, tx_buf_size=%d", 26151d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.user_rx_buf_size, 26161d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.user_tx_buf_size, 26171d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.fcr_rx_buf_size, 26181d5b85924df3a114efe6588e857d0de3eb47b1d2Pavlin Radoslavov p_dcb->chnl_cfg.fcr_tx_buf_size); 26195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 26215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 26305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 26325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 26335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_get_l2cap_cfg 26345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 26355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function get the current L2CAP channel configuration 26365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 26375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE - operation is successful 26385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 26395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_get_l2cap_cfg(tBTA_HL_MDL_HANDLE mdl_hnd, tBTA_HL_L2CAP_CFG_INFO *p_cfg) 26405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 26415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN success = FALSE; 26425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 lcid; 26435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tL2CAP_CFG_INFO *p_our_cfg; 26445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tL2CAP_CH_CFG_BITS our_cfg_bits; 26455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tL2CAP_CFG_INFO *p_peer_cfg; 26465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tL2CAP_CH_CFG_BITS peer_cfg_bits; 26475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project lcid = MCA_GetL2CapChannel((tMCA_DL) mdl_hnd); 26495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ( lcid && 26505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project L2CA_GetCurrentConfig(lcid, &p_our_cfg, &our_cfg_bits, &p_peer_cfg, 26515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project &peer_cfg_bits)) 26525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->fcs = BTA_HL_MCA_NO_FCS; 26545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (our_cfg_bits & L2CAP_CH_CFG_MASK_FCS) 26555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->fcs |= p_our_cfg->fcs; 26575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 26595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->fcs = BTA_HL_MCA_USE_FCS; 26615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_cfg->fcs != BTA_HL_MCA_USE_FCS ) 26645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (peer_cfg_bits & L2CAP_CH_CFG_MASK_FCS) 26665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->fcs |= p_peer_cfg->fcs; 26685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 26705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->fcs = BTA_HL_MCA_USE_FCS; 26725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->mtu =0; 26765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (peer_cfg_bits & L2CAP_CH_CFG_MASK_MTU) 26775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->mtu = p_peer_cfg->mtu; 26795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 26815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 26825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_cfg->mtu = L2CAP_DEFAULT_MTU; 26835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project success = TRUE; 26855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2686bea4131cac3214e0ad26ea8258e270448f23f1f3Matthew Xie else 2687bea4131cac3214e0ad26ea8258e270448f23f1f3Matthew Xie { 2688bea4131cac3214e0ad26ea8258e270448f23f1f3Matthew Xie p_cfg->mtu = L2CAP_DEFAULT_MTU; 2689bea4131cac3214e0ad26ea8258e270448f23f1f3Matthew Xie p_cfg->fcs = BTA_HL_L2C_NO_FCS; 2690bea4131cac3214e0ad26ea8258e270448f23f1f3Matthew Xie } 26915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 26935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!success) 26945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2695e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_get_l2cap_cfg success=%d mdl=%d lcid=%d", success, mdl_hnd, lcid); 2696e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("l2cap mtu=%d fcs=%d", p_cfg->mtu, p_cfg->fcs); 26975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 26985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 26995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return success; 27015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 27045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_validate_chan_cfg 27065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function validates the L2CAP channel configuration 27085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE - validation is successful 27105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 27115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_validate_chan_cfg(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx) 27125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 27145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 27155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN success = FALSE; 2716ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 mdl_cfg_idx = 0; 27175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_L2CAP_CFG_INFO l2cap_cfg; 2718ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN get_l2cap_result, get_mdl_result; 27195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2720ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta get_l2cap_result = bta_hl_get_l2cap_cfg(p_dcb->mdl_handle, &l2cap_cfg); 2721ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta get_mdl_result = bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_dcb->mdl_id, &mdl_cfg_idx); 27225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2723ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (get_l2cap_result && get_mdl_result) 27245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 27255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_acb->mdl_cfg[mdl_cfg_idx].mtu <= l2cap_cfg.mtu) && 27265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_acb->mdl_cfg[mdl_cfg_idx].fcs == l2cap_cfg.fcs) && 27275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project (p_acb->mdl_cfg[mdl_cfg_idx].dch_mode == p_dcb->dch_mode)) 27285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 27295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project success = TRUE; 27305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 27315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 27325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 27355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_dcb->mtu != l2cap_cfg.mtu) 27375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2738e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_WARNING("MCAP and L2CAP peer mtu size out of sync from MCAP mtu=%d from l2cap mtu=%d", 27395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->mtu, l2cap_cfg.mtu); 27405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 27415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!success) 27435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2744e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_validate_chan_cfg success=%d app_idx=%d mcl_idx=%d mdl_idx=%d",success, app_idx, mcl_idx, mdl_idx); 2745e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("Cur. L2cap cfg mtu=%d fcs=%d dch_mode=%d", l2cap_cfg.mtu, l2cap_cfg.fcs, p_dcb->dch_mode); 2746e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("From saved: L2cap cfg mtu=%d fcs=%d dch_mode=%d", p_acb->mdl_cfg[mdl_cfg_idx].mtu, 27475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->mdl_cfg[mdl_cfg_idx].fcs , p_acb->mdl_cfg[mdl_cfg_idx].dch_mode); 27485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 27495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 27505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return success; 27525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 27565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_is_cong_on 27585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function checks whether the congestion condition is on or not 27605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BOOLEAN - TRUE DCH is congested 27625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** FALSE not congested 27635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 27655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN bta_hl_is_cong_on(UINT8 app_id, BD_ADDR bd_addr, tBTA_HL_MDL_ID mdl_id) 27665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb; 2769ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 app_idx = 0, mcl_idx, mdl_idx; 27705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN cong_status = TRUE; 27715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_app_idx(app_id, &app_idx)) 27735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 27745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mcl_idx(app_idx, bd_addr, &mcl_idx )) 27755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 27765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_mdl_idx(app_idx, mcl_idx, mdl_id, &mdl_idx )) 27775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 27785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 27795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project cong_status = p_dcb->cong; 27805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 27815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 27825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 27835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return cong_status; 27855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 27885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_check_cch_close 27905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function checks whether there is a pending CCH close request 27925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** or not 27935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 27945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 27955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 27965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_check_cch_close(UINT8 app_idx, UINT8 mcl_idx, tBTA_HL_DATA *p_data, BOOLEAN check_dch_setup ) 27975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 27995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CB *p_dcb; 28005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdl_idx; 28015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTA_HL_DEBUG == TRUE) 2803e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_check_cch_close cch_close_dch_oper=%d",p_mcb->cch_close_dch_oper ); 28045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 28055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->cch_oper == BTA_HL_CCH_OP_LOCAL_CLOSE) 28075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (check_dch_setup && bta_hl_find_dch_setup_mdl_idx(app_idx, mcl_idx, &mdl_idx)) 28095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx); 28115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_mcb->rsp_tout) 28125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_ABORT; 28145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_dcb->abort_oper) 28165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_dcb->abort_oper |= BTA_HL_ABORT_CCH_CLOSE_MASK; 28185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT, p_data); 28195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 28225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_CLOSE; 28245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data); 28255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else if (bta_hl_find_an_active_mdl_idx(app_idx, mcl_idx,&mdl_idx)) 28285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_CLOSE; 28305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT, p_data); 28315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 28335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_NONE; 28355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_EVT, p_data); 28365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 28395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 28415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 28425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_clean_app 28435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 28445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Cleans up the HDP application resources and control block 28455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 28465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 28475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 28485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 28495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_clean_app(UINT8 app_idx) 28505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 28515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 28525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int i, num_act_apps=0; 28535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HL_DEBUG == TRUE 2855e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_clean_app"); 28565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 28575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project MCA_Deregister((tMCA_HANDLE)p_acb->app_handle); 28585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->sdp_handle) SDP_DeleteRecord(p_acb->sdp_handle); 28605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset((void *) p_acb, 0, sizeof(tBTA_HL_APP_CB)); 28625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* check any application is still active */ 28645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i=0; i < BTA_HL_NUM_APPS ; i ++) 28655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb = BTA_HL_GET_APP_CB_PTR(i); 28675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->in_use) num_act_apps++; 28685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!num_act_apps) 28715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_remove_uuid(UUID_SERVCLASS_HDP_PROFILE); 28735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 28745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 28755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 28775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 28785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_check_deregistration 28795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 28805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function checks whether there is a pending deregistration 28815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** request or not 28825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 28835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 28845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 28855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_check_deregistration(UINT8 app_idx, tBTA_HL_DATA *p_data ) 28865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 28875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 28885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_CB *p_mcb; 28895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mcl_idx; 28905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL evt_data; 28915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTA_HL_DEBUG == TRUE) 2893e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_check_deregistration"); 28945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 28955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_acb->deregistering) 28975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 28985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_an_in_use_mcl_idx(app_idx, &mcl_idx)) 28995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 29005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx); 29015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_CLOSE) 29025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2903ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta if (p_mcb->cch_state == BTA_HL_CCH_OPENING_ST) 2904ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta p_mcb->force_close_local_cch_opening = TRUE; 29055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE; 2906e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("p_mcb->force_close_local_cch_opening=%d", p_mcb->force_close_local_cch_opening ); 29075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_check_cch_close(app_idx,mcl_idx,p_data, TRUE); 29085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 29115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 29125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* all cchs are closed */ 29135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project evt_data.dereg_cfm.app_handle = p_acb->app_handle; 2914f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera evt_data.dereg_cfm.app_id = p_data->api_dereg.app_id; 29155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project evt_data.dereg_cfm.status = BTA_HL_STATUS_OK; 29165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->p_cback(BTA_HL_DEREGISTER_CFM_EVT, (tBTA_HL *) &evt_data ); 29175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_clean_app(app_idx); 29185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_check_disable(p_data); 29195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 29225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 29255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_check_disable 29275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function checks whether there is a pending disable 29295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** request or not 29305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 29325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 29345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_check_disable(tBTA_HL_DATA *p_data ) 29355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_CB *p_cb= &bta_hl_cb; 29375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_CB *p_acb; 29385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_idx; 29395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_CTRL evt_data; 29405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTA_HL_DEBUG == TRUE) 2942e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_check_disable"); 29435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 29445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_cb.disabling) 29465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 29475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_hl_find_an_in_use_app_idx(&app_idx)) 29485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 29495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb = BTA_HL_GET_APP_CB_PTR(app_idx); 29505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!p_acb->deregistering) 29515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 29525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_acb->deregistering = TRUE; 29535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_hl_check_deregistration(app_idx, p_data); 29545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 29575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 29585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* all apps are deregistered */ 29595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_deregister(BTA_ID_HL); 29605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project evt_data.disable_cfm.status = BTA_HL_STATUS_OK; 29615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (p_cb->p_ctrl_cback) p_cb->p_ctrl_cback(BTA_HL_CTRL_DISABLE_CFM_EVT, (tBTA_HL_CTRL *) &evt_data); 29625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memset((void *) p_cb, 0, sizeof(tBTA_HL_CB)); 29635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 29655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 29665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 29685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_abort_cfm 29705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the abort confirmation event data 29725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 29745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 29765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_abort_cfm(tBTA_HL *p_evt_data, 29775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 29785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 29795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status) 29805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_abort_cfm.status = status; 29825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_abort_cfm.mcl_handle = mcl_handle; 29835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_abort_cfm.app_handle = app_handle; 29845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 29855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 29875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_abort_ind 29895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the abort indication event data 29915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 29935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 29945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 29955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_abort_ind(tBTA_HL *p_evt_data, 29965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 29975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle) 29985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_abort_ind.mcl_handle = mcl_handle; 30005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_abort_ind.app_handle = app_handle; 30015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 30035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_close_cfm 30055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the close confirmation event data 30075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 30095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 30115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_dch_close_cfm(tBTA_HL *p_evt_data, 30125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 30135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 30145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_HANDLE mdl_handle, 30155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status) 30165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_cfm.status = status; 30185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_cfm.mdl_handle = mdl_handle; 30195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_cfm.mcl_handle = mcl_handle; 30205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_cfm.app_handle = app_handle; 30215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 30245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_dch_close_ind 30265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the close indication event data 30285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 30305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 30325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_dch_close_ind(tBTA_HL *p_evt_data, 30335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 30345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 30355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_HANDLE mdl_handle, 30365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN intentional) 30375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_ind.mdl_handle = mdl_handle; 30395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_ind.mcl_handle = mcl_handle; 30405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_ind.app_handle = app_handle; 30415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_close_ind.intentional = intentional; 30425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 30455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_send_data_cfm 30475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the send data confirmation event data 30495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 30515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 30535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_send_data_cfm(tBTA_HL *p_evt_data, 30545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 30555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 30565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_HANDLE mdl_handle, 30575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status ) 30585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_send_data_cfm.mdl_handle = mdl_handle; 30615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_send_data_cfm.mcl_handle = mcl_handle; 30625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_send_data_cfm.app_handle = app_handle; 30635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_send_data_cfm.status = status; 30645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 30675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_rcv_data_ind 30695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the received data indication event data 30715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 30735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 30755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_rcv_data_ind(tBTA_HL *p_evt_data, 30765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 30775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 30785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_HANDLE mdl_handle) 30795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_rcv_data_ind.mdl_handle = mdl_handle; 30815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_rcv_data_ind.mcl_handle = mcl_handle; 30825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_rcv_data_ind.app_handle = app_handle; 30835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 30875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_cch_open_cfm 30895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the CCH open confirmation event data 30915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 30935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 30945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 30955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_cch_open_cfm(tBTA_HL *p_evt_data, 3096f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera UINT8 app_id, 30975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 30985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 30995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr, 31005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status ) 31015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3102f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_evt_data->cch_open_cfm.app_id = app_id; 31035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_open_cfm.app_handle = app_handle; 31045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_open_cfm.mcl_handle = mcl_handle; 31055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bdcpy(p_evt_data->cch_open_cfm.bd_addr, bd_addr); 31065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_open_cfm.status = status; 3107e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_build_cch_open_cfm: status=%d",status); 31085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 31115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_cch_open_ind 31135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the CCH open indication event data 31155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 31175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 31195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_cch_open_ind(tBTA_HL *p_evt_data, tBTA_HL_APP_HANDLE app_handle, 31205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 31215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr ) 31225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_open_ind.app_handle = app_handle; 31255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_open_ind.mcl_handle = mcl_handle; 31265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bdcpy(p_evt_data->cch_open_ind.bd_addr, bd_addr); 31275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 31305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_cch_close_cfm 31325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the CCH close confirmation event data 31345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 31365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 31385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_cch_close_cfm(tBTA_HL *p_evt_data, 31395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 31405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 31415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status ) 31425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_close_cfm.mcl_handle = mcl_handle; 31445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_close_cfm.app_handle = app_handle; 31455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_close_cfm.status = status; 31465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 31505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_cch_close_ind 31525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the CCH colse indication event data 31545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 31565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 31585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_cch_close_ind(tBTA_HL *p_evt_data, 31595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 31605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 31615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN intentional) 31625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_close_ind.mcl_handle = mcl_handle; 31645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_close_ind.app_handle = app_handle; 31655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->cch_close_ind.intentional = intentional; 31665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 31695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_dch_open_cfm 31715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the DCH open confirmation event data 31735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 31755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 31765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 31775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_dch_open_cfm(tBTA_HL *p_evt_data, 31785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 31795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 31805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_HANDLE mdl_handle, 31815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ID local_mdep_id, 31825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_ID mdl_id, 31835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_DCH_MODE dch_mode, 31845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN first_reliable, 31855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 mtu, 31865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status) 31875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.mdl_handle = mdl_handle; 31905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.mcl_handle = mcl_handle; 31915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.app_handle = app_handle; 31925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.local_mdep_id = local_mdep_id; 31935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.mdl_id = mdl_id; 31945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.dch_mode = dch_mode; 31955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.first_reliable = first_reliable; 31965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.mtu = mtu; 31975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->dch_open_cfm.status = status; 31985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 32025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_sdp_query_cfm 32045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the SDP query indication event data 32065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 32085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 32105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_sdp_query_cfm(tBTA_HL *p_evt_data, 3211f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera UINT8 app_id, 32125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 32135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr, 32145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SDP *p_sdp, 32155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status) 32165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3218e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_DEBUG("bta_hl_build_sdp_query_cfm: app_id = %d, app_handle=%d", 3219f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera app_id,app_handle); 3220f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera p_evt_data->sdp_query_cfm.app_id = app_id; 32215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->sdp_query_cfm.app_handle = app_handle; 32225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bdcpy(p_evt_data->sdp_query_cfm.bd_addr, bd_addr); 32235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->sdp_query_cfm.p_sdp = p_sdp; 32245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->sdp_query_cfm.status = status; 32255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 32265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 32295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_delete_mdl_cfm 32315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the delete MDL confirmation event data 32335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 32355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 32375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_delete_mdl_cfm(tBTA_HL *p_evt_data, 32385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 32395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 32405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_ID mdl_id, 32415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status) 32425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 32445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->delete_mdl_cfm.mcl_handle = mcl_handle; 32455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->delete_mdl_cfm.app_handle = app_handle; 32465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->delete_mdl_cfm.mdl_id = mdl_id; 32475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->delete_mdl_cfm.status = status; 32485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 32495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 32515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_build_echo_test_cfm 32535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function builds the echo test confirmation event data 32555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 32575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 32595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_hl_build_echo_test_cfm(tBTA_HL *p_evt_data, 32605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 32615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 32625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status ) 32635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 32645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->echo_test_cfm.mcl_handle = mcl_handle; 32655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->echo_test_cfm.app_handle = app_handle; 32665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_evt_data->echo_test_cfm.status = status; 32675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 32685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 32715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Debug Functions 32725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/ 32735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTA_HL_DEBUG == TRUE) 32745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 32765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_status_code 32785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description get the status string pointer 32805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns char * - status string pointer 32825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 32835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 32845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectchar *bta_hl_status_code(tBTA_HL_STATUS status) 32855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 32865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (status) 32875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 32885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_OK: 32895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_OK"; 32905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_FAIL: 32915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_FAIL"; 32925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_ABORTED: 32935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_ABORTED"; 32945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_NO_RESOURCE: 32955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_NO_RESOURCE"; 32965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_LAST_ITEM: 32975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_LAST_ITEM"; 32985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_DUPLICATE_APP_ID: 32995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_DUPLICATE_APP_ID"; 33005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_INVALID_APP_HANDLE: 33015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_INVALID_APP_HANDLE"; 33025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_INVALID_MCL_HANDLE: 33035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_INVALID_MCL_HANDLE"; 33045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_MCAP_REG_FAIL: 33055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_MCAP_REG_FAIL"; 33065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_MDEP_CO_FAIL: 33075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_MDEP_CO_FAIL"; 33085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_ECHO_CO_FAIL: 33095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_ECHO_CO_FAIL"; 33105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_MDL_CFG_CO_FAIL: 33115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_MDL_CFG_CO_FAIL"; 33125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_SDP_NO_RESOURCE: 33135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_SDP_NO_RESOURCE"; 33145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_SDP_FAIL: 33155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_SDP_FAIL"; 33165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_NO_CCH: 33175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_NO_CCH"; 33185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_NO_MCL: 33195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_NO_MCL"; 33205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_NO_FIRST_RELIABLE: 33225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_NO_FIRST_RELIABLE"; 33235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_INVALID_DCH_CFG: 33245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_INVALID_DCH_CFG"; 33255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_INVALID_BD_ADDR: 33265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_INVALID_BD_ADDR"; 33275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_INVALID_RECONNECT_CFG: 33285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_INVALID_RECONNECT_CFG"; 33295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_ECHO_TEST_BUSY: 33305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_ECHO_TEST_BUSY"; 33315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID: 33325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID"; 33335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_INVALID_MDL_ID: 33345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_INVALID_MDL_ID"; 33355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_NO_MDL_ID_FOUND: 33365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_NO_MDL_ID_FOUND"; 33375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_STATUS_DCH_BUSY: 33385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_STATUS_DCH_BUSY"; 33395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 33405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "Unknown status code"; 33415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 33425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 33435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 33445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 33455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_hl_evt_code 33465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 33475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Maps HL event code to the corresponding event string 33485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 33495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns string pointer for the associated event name 33505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 33515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 33525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectchar *bta_hl_evt_code(tBTA_HL_INT_EVT evt_code) 33535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 33545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project switch (evt_code) 33555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 33565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CCH_OPEN_EVT: 33575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CCH_OPEN_EVT"; 33585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CCH_SDP_OK_EVT: 33595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CCH_SDP_OK_EVT"; 33605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CCH_SDP_FAIL_EVT: 33615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CCH_SDP_FAIL_EVT"; 33625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CONNECT_IND_EVT: 33635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_CONNECT_IND_EVT"; 33645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_DISCONNECT_IND_EVT: 33655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_DISCONNECT_IND_EVT"; 33665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CCH_CLOSE_EVT: 33685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CCH_CLOSE_EVT"; 33695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CCH_CLOSE_CMPL_EVT: 33705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CCH_CLOSE_CMPL_EVT"; 33715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_OPEN_EVT: 33725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_OPEN_EVT"; 33735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CREATE_IND_EVT: 33745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_CREATE_IND_EVT"; 33755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CREATE_CFM_EVT: 33765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_CREATE_CFM_EVT"; 33775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_OPEN_IND_EVT: 33785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_OPEN_IND_EVT"; 33795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_OPEN_CFM_EVT: 33805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_OPEN_CFM_EVT"; 33815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_CLOSE_EVT: 33825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_CLOSE_EVT"; 33835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CLOSE_IND_EVT: 33845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_CLOSE_IND_EVT"; 33855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CLOSE_CFM_EVT: 33865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_CLOSE_CFM_EVT"; 33875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_SEND_DATA_EVT: 33885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_SEND_DATA_EVT"; 33895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RCV_DATA_EVT: 33905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_RCV_DATA_EVT"; 33915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_CLOSE_CMPL_EVT: 33925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_CLOSE_CMPL_EVT"; 33935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_ENABLE_EVT: 33955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_ENABLE_EVT"; 33965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DISABLE_EVT: 33975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DISABLE_EVT"; 3398f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera case BTA_HL_API_UPDATE_EVT: 3399f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera return "BTA_HL_API_UPDATE_EVT"; 34005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_REGISTER_EVT: 34015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_REGISTER_EVT"; 34025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DEREGISTER_EVT: 34035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DEREGISTER_EVT"; 34045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_CCH_OPEN_EVT: 34065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_CCH_OPEN_EVT"; 34075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_CCH_CLOSE_EVT: 34095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_CCH_CLOSE_EVT"; 34105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DCH_OPEN_EVT: 34115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DCH_OPEN_EVT"; 34125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DCH_RECONNECT_EVT: 34145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DCH_RECONNECT_EVT"; 34155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DCH_CLOSE_EVT: 34165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DCH_CLOSE_EVT"; 34175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DELETE_MDL_EVT: 34185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DELETE_MDL_EVT"; 34195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DCH_ABORT_EVT: 34205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DCH_ABORT_EVT"; 34215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_RECONNECT_EVT: 34235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_RECONNECT_EVT"; 34245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_SDP_INIT_EVT: 34255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_SDP_INIT_EVT"; 34265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_SDP_FAIL_EVT: 34275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_SDP_FAIL_EVT"; 34285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DCH_ECHO_TEST_EVT: 34295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DCH_ECHO_TEST_EVT"; 34305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_CLOSE_ECHO_TEST_EVT: 34315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_CLOSE_ECHO_TEST_EVT"; 34325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RECONNECT_IND_EVT: 34335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_RECONNECT_IND_EVT"; 34345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RECONNECT_CFM_EVT: 34355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_RECONNECT_CFM_EVT"; 34365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_DCH_CREATE_RSP_EVT: 34375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_DCH_CREATE_RSP_EVT"; 34385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_ABORT_EVT: 34395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_ABORT_EVT"; 34405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_ABORT_IND_EVT: 34415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_ABORT_IND_EVT"; 34425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_ABORT_CFM_EVT: 34435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_ABORT_CFM_EVT"; 34445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_DELETE_IND_EVT: 34455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_DELETE_IND_EVT"; 34465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_DELETE_CFM_EVT: 34475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_DELETE_CFM_EVT"; 34485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_CONG_CHG_EVT: 34495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_CONG_CHG_EVT"; 34505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_GET_TX_DATA_EVT: 34515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CI_GET_TX_DATA_EVT"; 34525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_PUT_RX_DATA_EVT: 34535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CI_PUT_RX_DATA_EVT"; 34545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_GET_ECHO_DATA_EVT: 34555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CI_GET_ECHO_DATA_EVT"; 34565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_DCH_ECHO_TEST_EVT: 34575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_DCH_ECHO_TEST_EVT"; 34585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_CI_PUT_ECHO_DATA_EVT: 34595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_CI_PUT_ECHO_DATA_EVT"; 34605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_API_SDP_QUERY_EVT: 34615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_API_SDP_QUERY_EVT"; 34625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_SDP_QUERY_OK_EVT: 34635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_SDP_QUERY_OK_EVT"; 34645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_SDP_QUERY_FAIL_EVT: 34655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_SDP_QUERY_FAIL_EVT"; 34665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project case BTA_HL_MCA_RSP_TOUT_IND_EVT: 34675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "BTA_HL_MCA_RSP_TOUT_IND_EVT"; 34685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project default: 34705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return "Unknown HL event code"; 34715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 34725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 34735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* Debug Functions */ 34755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif // HL_INCLUDED 34765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3484