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(&reg, 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