Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bac74d76 authored by Priti Aghera's avatar Priti Aghera Committed by Matthew Xie
Browse files

HDP fix for Single SDP record

Modified stack code to support single SDP record
for each register app call.
bug 8656462
Change-Id: I92570243306d5c1ca8339042eba5733e43fdb72c
parent c1a7678b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1508,6 +1508,7 @@ void bta_hl_dch_mca_create_ind(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx,
        evt_data.dch_create_ind.local_mdep_id = p_dcb->local_mdep_id;
        evt_data.dch_create_ind.mdl_id = p_dcb->mdl_id;
        evt_data.dch_create_ind.cfg = p_dcb->remote_cfg;
        bdcpy(evt_data.dch_create_ind.bd_addr, p_mcb->bd_addr);
        p_acb->p_cback(BTA_HL_DCH_CREATE_IND_EVT,(tBTA_HL *) &evt_data );
    }
    else
@@ -1783,6 +1784,7 @@ static void bta_hl_sdp_cback(UINT8 sdp_oper, UINT8 app_idx, UINT8 mcl_idx,
                if (bta_hl_fill_sup_feature_list (p_attr, &sup_feature))
                {
                    p_hdp_rec->num_mdeps = (UINT8) sup_feature.num_elems;
                    APPL_TRACE_WARNING1("bta_hl_sdp_cback num_mdeps %d",sup_feature.num_elems);
                    for (i=0; i<sup_feature.num_elems; i++)
                    {
                        p_hdp_rec->mdep_cfg[i].data_type = sup_feature.list_elem[i].data_type;
@@ -2261,6 +2263,7 @@ void bta_hl_cch_sdp_init(UINT8 app_idx, UINT8 mcl_idx, tBTA_HL_DATA *p_data)
#endif
    if ( p_cb->sdp_oper == BTA_HL_SDP_OP_NONE)
    {
        p_cb->app_id = p_data->api_cch_open.app_id;
        p_cb->sdp_oper = BTA_HL_SDP_OP_CCH_INIT;

        if (bta_hl_init_sdp( p_cb->sdp_oper, app_idx, mcl_idx, 0xFF) != BTA_HL_STATUS_OK)
@@ -2383,7 +2386,7 @@ void bta_hl_cch_close_cmpl(UINT8 app_idx, UINT8 mcl_idx, tBTA_HL_DATA *p_data)
    switch (p_mcb->cch_oper)
    {
        case BTA_HL_CCH_OP_LOCAL_OPEN:
            bta_hl_build_cch_open_cfm(&evt_data, p_acb->app_handle,
            bta_hl_build_cch_open_cfm(&evt_data,p_mcb->app_id,p_acb->app_handle,
                                      p_mcb->mcl_handle,
                                      p_mcb->bd_addr,
                                      BTA_HL_STATUS_FAIL);
@@ -2531,7 +2534,7 @@ void bta_hl_cch_mca_connect(UINT8 app_idx, UINT8 mcl_idx, tBTA_HL_DATA *p_data)
    switch (p_mcb->cch_oper)
    {
        case BTA_HL_CCH_OP_LOCAL_OPEN:
            bta_hl_build_cch_open_cfm(&evt_data, p_acb->app_handle,
            bta_hl_build_cch_open_cfm(&evt_data, p_mcb->app_id,p_acb->app_handle,
                                      p_mcb->mcl_handle,
                                      p_mcb->bd_addr,
                                      BTA_HL_STATUS_OK);
+80 −3
Original line number Diff line number Diff line
@@ -96,6 +96,80 @@ void BTA_HlDisable(void)
    }
}

/*******************************************************************************
**
** Function         BTA_HlUpdate
**
** Description      Register an HDP application
**
** Parameters       app_id        - Application ID
**                  p_reg_param   - non-platform related parameters for the
**                                  HDP application
**                  p_cback       - HL event callback fucntion
**
** Returns          void
**
*******************************************************************************/
void BTA_HlUpdate(UINT8  app_id,
                    tBTA_HL_REG_PARAM *p_reg_param, BOOLEAN is_register,
                    tBTA_HL_CBACK *p_cback)
{
    tBTA_HL_API_UPDATE *p_buf;

    APPL_TRACE_DEBUG0("BTA_HlUpdate");
    if (is_register)
    {

        if ((p_buf = (tBTA_HL_API_UPDATE *)GKI_getbuf((UINT16)sizeof(tBTA_HL_API_UPDATE))) != NULL)
        {
            p_buf->hdr.event    = BTA_HL_API_UPDATE_EVT;
            p_buf->app_id       = app_id;
            p_buf->sec_mask     = (p_reg_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
            p_buf->p_cback = p_cback;
            p_buf->is_register = is_register;
            if (p_reg_param->p_srv_name)
            {
                BCM_STRNCPY_S(p_buf->srv_name, sizeof(p_buf->srv_name),
                              p_reg_param->p_srv_name, BTA_SERVICE_NAME_LEN);
                p_buf->srv_name[BTA_SERVICE_NAME_LEN] = '\0';
            }
            else
                p_buf->srv_name[0]= '\0';

            if (p_reg_param->p_srv_desp)
            {
                BCM_STRNCPY_S(p_buf->srv_desp, sizeof(p_buf->srv_desp),
                              p_reg_param->p_srv_desp, BTA_SERVICE_DESP_LEN);
                p_buf->srv_desp[BTA_SERVICE_DESP_LEN]= '\0';
            }
            else
                p_buf->srv_desp[0]= '\0';

            if (p_reg_param->p_provider_name)
            {
                BCM_STRNCPY_S(p_buf->provider_name, sizeof(p_buf->provider_name),
                              p_reg_param->p_provider_name, BTA_PROVIDER_NAME_LEN);
                p_buf->provider_name[BTA_PROVIDER_NAME_LEN]= '\0';
            }
            else
                p_buf->provider_name[0]= '\0';

            bta_sys_sendmsg(p_buf);
        }
    }
    else
    {
        if ((p_buf = (tBTA_HL_API_UPDATE *)GKI_getbuf((UINT16)sizeof(tBTA_HL_API_UPDATE))) != NULL)
        {
            p_buf->hdr.event    = BTA_HL_API_UPDATE_EVT;
            p_buf->app_id       = app_id;
            p_buf->is_register = is_register;
            bta_sys_sendmsg(p_buf);
        }

    }
}

/*******************************************************************************
**
** Function         BTA_HlRegister
@@ -164,13 +238,14 @@ void BTA_HlRegister(UINT8 app_id,
** Returns           void
**
*******************************************************************************/
void BTA_HlDeregister(tBTA_HL_APP_HANDLE app_handle)
void BTA_HlDeregister(UINT8 app_id,tBTA_HL_APP_HANDLE app_handle)
{
    tBTA_HL_API_DEREGISTER  *p_buf;

    if ((p_buf = (tBTA_HL_API_DEREGISTER *)GKI_getbuf((UINT16)(sizeof(tBTA_HL_API_DEREGISTER)))) != NULL)
    {
        p_buf->hdr.event   = BTA_HL_API_DEREGISTER_EVT;
        p_buf->app_id      = app_id;
        p_buf->app_handle  = app_handle;
        bta_sys_sendmsg(p_buf);
    }
@@ -191,7 +266,7 @@ void BTA_HlDeregister(tBTA_HL_APP_HANDLE app_handle)
**                  multiple HDP instances. Also, if the control PSM value is zero
**                  then the first HDP instance is used for the control channel setup
*******************************************************************************/
void BTA_HlCchOpen(tBTA_HL_APP_HANDLE app_handle,
void BTA_HlCchOpen(UINT8 app_id, tBTA_HL_APP_HANDLE app_handle,
                   tBTA_HL_CCH_OPEN_PARAM *p_open_param)
{
    tBTA_HL_API_CCH_OPEN *p_buf;
@@ -199,6 +274,7 @@ void BTA_HlCchOpen(tBTA_HL_APP_HANDLE app_handle,
    if ((p_buf = (tBTA_HL_API_CCH_OPEN *)GKI_getbuf((UINT16)(sizeof(tBTA_HL_API_CCH_OPEN)))) != NULL)
    {
        p_buf->hdr.event        = BTA_HL_API_CCH_OPEN_EVT;
        p_buf->app_id           = app_id;
        p_buf->app_handle       = app_handle;
        p_buf->sec_mask = (p_open_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
        bdcpy(p_buf->bd_addr, p_open_param->bd_addr);
@@ -434,7 +510,7 @@ void BTA_HlDchEchoTest( tBTA_HL_MCL_HANDLE mcl_handle,
** Returns          void
**
*******************************************************************************/
void BTA_HlSdpQuery(tBTA_HL_APP_HANDLE app_handle,
void BTA_HlSdpQuery(UINT8  app_id,tBTA_HL_APP_HANDLE app_handle,
                    BD_ADDR bd_addr)
{
    tBTA_HL_API_SDP_QUERY *p_buf;
@@ -442,6 +518,7 @@ void BTA_HlSdpQuery(tBTA_HL_APP_HANDLE app_handle,
    if ((p_buf = (tBTA_HL_API_SDP_QUERY *)GKI_getbuf((UINT16)(sizeof(tBTA_HL_API_SDP_QUERY)))) != NULL)
    {
        p_buf->hdr.event        = BTA_HL_API_SDP_QUERY_EVT;
        p_buf->app_id           = app_id;
        p_buf->app_handle       = app_handle;
        bdcpy(p_buf->bd_addr, bd_addr);
        bta_sys_sendmsg(p_buf);
+26 −2
Original line number Diff line number Diff line
@@ -188,6 +188,7 @@ enum
    /* these events are handled outside the state machine */
    BTA_HL_API_ENABLE_EVT,
    BTA_HL_API_DISABLE_EVT,
    BTA_HL_API_UPDATE_EVT,
    BTA_HL_API_REGISTER_EVT,
    BTA_HL_API_DEREGISTER_EVT,
    BTA_HL_API_CCH_OPEN_EVT,
@@ -237,6 +238,20 @@ typedef struct
    tBTA_HL_CTRL_CBACK  *p_cback;        /* pointer to control callback function */
} tBTA_HL_API_ENABLE;

typedef struct
{
    BT_HDR              hdr;
    UINT8               app_id;
    BOOLEAN             is_register;        /* Update HL application due to register or deregister */
    tBTA_HL_CBACK       *p_cback;           /* pointer to application callback function */
    tBTA_HL_DEVICE_TYPE dev_type;           /* sink, source or dual roles */
    tBTA_SEC            sec_mask;           /* security mask for accepting conenction*/
    char                srv_name[BTA_SERVICE_NAME_LEN +1];        /* service name to be used in the SDP; null terminated*/
    char                srv_desp[BTA_SERVICE_DESP_LEN +1];        /* service description to be used in the SDP; null terminated */
    char                provider_name[BTA_PROVIDER_NAME_LEN +1];   /* provide name to be used in the SDP; null terminated */

} tBTA_HL_API_UPDATE;

typedef struct
{
    BT_HDR              hdr;
@@ -252,12 +267,15 @@ typedef struct
typedef struct
{
    BT_HDR                  hdr;
    UINT8                   app_id;
    tBTA_HL_CBACK           *p_cback;        /* pointer to application callback function */
    tBTA_HL_APP_HANDLE      app_handle;
} tBTA_HL_API_DEREGISTER;

typedef struct
{
    BT_HDR                  hdr;
    UINT8                   app_id;
    tBTA_HL_APP_HANDLE      app_handle;
    UINT16                  ctrl_psm;
    BD_ADDR                 bd_addr;        /* Address of peer device */
@@ -372,6 +390,7 @@ typedef struct
{
    BT_HDR                  hdr;
    tBTA_HL_APP_HANDLE      app_handle;
    UINT8                   app_id;
    BD_ADDR                 bd_addr;        /* Address of peer device */
} tBTA_HL_API_SDP_QUERY;

@@ -404,6 +423,7 @@ typedef union
{
    BT_HDR                      hdr;
    tBTA_HL_API_ENABLE          api_enable; /* data for BTA_MSE_API_ENABLE_EVT */
    tBTA_HL_API_UPDATE          api_update;
    tBTA_HL_API_REGISTER        api_reg;
    tBTA_HL_API_DEREGISTER      api_dereg;
    tBTA_HL_API_CCH_OPEN        api_cch_open;
@@ -492,6 +512,7 @@ typedef struct
    BOOLEAN                 echo_test;
    UINT8                   echo_mdl_idx;
    UINT8                   cch_close_dch_oper;
    UINT8                   app_id;
}tBTA_HL_MCL_CB;

typedef struct
@@ -589,7 +610,7 @@ extern "C"
    /* sdp */
    extern BOOLEAN bta_hl_fill_sup_feature_list( const tSDP_DISC_ATTR  *p_attr,
                                                 tBTA_HL_SUP_FEATURE_LIST_ELEM *p_list);

    extern tBTA_HL_STATUS bta_hl_sdp_update (UINT8 app_id);
    extern tBTA_HL_STATUS bta_hl_sdp_register (UINT8 app_idx);
    extern tSDP_DISC_REC *bta_hl_find_sink_or_src_srv_class_in_db (const tSDP_DISCOVERY_DB *p_db,
                                                                   const tSDP_DISC_REC *p_start_rec);
@@ -739,7 +760,7 @@ extern "C"
                                            tBTA_HL_MDL_ID mdl_id, UINT8 *p_mdl_cfg_idx);
    extern BOOLEAN  bta_hl_get_cur_time(UINT8 app_idx, UINT8 *p_cur_time);
    extern void bta_hl_sort_cfg_time_idx(UINT8 app_idx, UINT8 *a, UINT8 n);
    extern void  bta_hl_compact_mdl_cfg_time(UINT8 app_idx);
    extern void  bta_hl_compact_mdl_cfg_time(UINT8 app_idx, UINT8 mdep_id);
    extern BOOLEAN  bta_hl_is_mdl_exsit_in_mcl(UINT8 app_idx, BD_ADDR bd_addr,
                                               tBTA_HL_MDL_ID mdl_id);
    extern BOOLEAN  bta_hl_delete_mdl_cfg(UINT8 app_idx, BD_ADDR bd_addr,
@@ -766,6 +787,7 @@ extern "C"
                                             UINT8 *p_mdl_idx);
    extern BOOLEAN bta_hl_is_a_duplicate_id(UINT8 app_id);
    extern BOOLEAN bta_hl_find_avail_app_idx(UINT8 *p_idx);
    extern tBTA_HL_STATUS bta_hl_app_update(UINT8 app_id, BOOLEAN is_register);
    extern tBTA_HL_STATUS bta_hl_app_registration(UINT8 app_idx);
    extern void bta_hl_discard_data(UINT16 event, tBTA_HL_DATA *p_data);
    extern void bta_hl_save_mdl_cfg(UINT8 app_idx, UINT8 mcl_idx, UINT8 mdl_idx );
@@ -805,6 +827,7 @@ extern "C"
                                           tBTA_HL_MCL_HANDLE mcl_handle,
                                           tBTA_HL_MDL_HANDLE mdl_handle);
    extern void  bta_hl_build_cch_open_cfm(tBTA_HL *p_evt_data,
                                            UINT8 app_id,
                                           tBTA_HL_APP_HANDLE app_handle,
                                           tBTA_HL_MCL_HANDLE mcl_handle,
                                           BD_ADDR bd_addr,
@@ -843,6 +866,7 @@ extern "C"
                                            tBTA_HL_MCL_HANDLE mcl_handle,
                                            tBTA_HL_STATUS status );
    extern void  bta_hl_build_sdp_query_cfm(tBTA_HL *p_evt_data,
                                            UINT8 app_id,
                                            tBTA_HL_APP_HANDLE app_handle,
                                            BD_ADDR bd_addr,
                                            tBTA_HL_SDP *p_sdp,
+109 −3
Original line number Diff line number Diff line
@@ -590,6 +590,85 @@ static void bta_hl_api_disable(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)

}

/*******************************************************************************
**
** Function         bta_hl_api_update
**
** Description      Process the API registration request to register an HDP applciation
**
** Returns          void
**
*******************************************************************************/
static void bta_hl_api_update(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
{
    tBTA_HL         evt_data;
    tBTA_HL_APP_CB  *p_acb = BTA_HL_GET_APP_CB_PTR(0);
    tBTA_HL_STATUS  status = BTA_HL_STATUS_FAIL;


    APPL_TRACE_DEBUG0("bta_hl_api_update");
    if (p_cb->enable)
    {

        status = bta_hl_app_update(p_data->api_update.app_id, p_data->api_update.is_register);
        if (!p_data->api_update.is_register)
        {
            APPL_TRACE_DEBUG0("Deregister");
            memset(&evt_data, 0, sizeof(tBTA_HL));
            evt_data.dereg_cfm.status = status;
            evt_data.dereg_cfm.app_id = p_data->api_update.app_id;
            if (status == BTA_HL_STATUS_OK)
                evt_data.dereg_cfm.app_handle = p_acb->app_handle;
            if (p_acb->p_cback)
            {
                p_acb->p_cback(BTA_HL_DEREGISTER_CFM_EVT, (tBTA_HL *) &evt_data);
            }
            return ;
        }

    }

    if (status != BTA_HL_STATUS_OK)
    {
        if ((status != BTA_HL_STATUS_DUPLICATE_APP_ID) &&
            (status != BTA_HL_STATUS_NO_RESOURCE))
        {
            if (p_acb)
                memset(p_acb, 0, sizeof(tBTA_HL_APP_CB));
        }
    }
#if BTA_HL_DEBUG == TRUE
    if (status != BTA_HL_STATUS_OK)
    {
        APPL_TRACE_DEBUG1("bta_hl_api_register status =%s", bta_hl_status_code(status));
    }
#endif

    memset(&evt_data, 0, sizeof(tBTA_HL));
    evt_data.reg_cfm.status = status;
    evt_data.reg_cfm.app_id = p_data->api_update.app_id;
    if (status == BTA_HL_STATUS_OK)
        evt_data.reg_cfm.app_handle = p_acb->app_handle;
    if (p_data->api_reg.p_cback)
    {
        p_data->api_reg.p_cback(BTA_HL_REGISTER_CFM_EVT, (tBTA_HL *) &evt_data);
    }

    if (status == BTA_HL_STATUS_OK)
    {
        evt_data.sdp_info_ind.app_handle = p_acb->app_handle;
        evt_data.sdp_info_ind.ctrl_psm = p_acb->ctrl_psm;
        evt_data.sdp_info_ind.data_psm = p_acb->data_psm;
        evt_data.sdp_info_ind.data_x_spec = BTA_HL_SDP_IEEE_11073_20601;
        evt_data.sdp_info_ind.mcap_sup_procs = BTA_HL_MCAP_SUP_PROC_MASK ;

        if (p_data->api_reg.p_cback)
        {
            p_data->api_reg.p_cback(BTA_HL_SDP_INFO_IND_EVT, (tBTA_HL *) &evt_data);
        }
    }
}

/*******************************************************************************
**
** Function         bta_hl_api_register
@@ -746,7 +825,24 @@ static void bta_hl_api_cch_open(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
        else
        {
            /* Only one MCL per BD_ADDR */
            status = BTA_HL_STATUS_FAIL;
            status = BTA_HL_STATUS_DUPLICATE_CCH_OPEN;
            APPL_TRACE_DEBUG1("bta_hl_api_cch_open: CCH already open: status =%d",status)
            p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
            p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
            if (p_acb->p_cback)
            {
                bta_hl_build_cch_open_cfm(&evt_data, p_data->api_cch_open.app_id,
                                          p_data->api_cch_open.app_handle,
                                          p_mcb->mcl_handle,
                                          p_data->api_cch_open.bd_addr,
                                          status);
                p_acb->p_cback(BTA_HL_CCH_OPEN_CFM_EVT,(tBTA_HL *) &evt_data );
            }
            else
            {
                APPL_TRACE_ERROR0("bta_hl_api_cch_open Null Callback");
            }
            return;
        }
    }
    else
@@ -770,7 +866,8 @@ static void bta_hl_api_cch_open(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
            p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
            if (p_acb->p_cback)
            {
                bta_hl_build_cch_open_cfm(&evt_data, p_data->api_cch_open.app_handle,
                bta_hl_build_cch_open_cfm(&evt_data, p_data->api_cch_open.app_id,
                                          p_data->api_cch_open.app_handle,
                                          0,
                                          p_data->api_cch_open.bd_addr,
                                          status);
@@ -874,6 +971,7 @@ static void bta_hl_api_dch_open(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
        p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
        p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);

        APPL_TRACE_DEBUG4("bta_hl_api_dch_open: app_ix=%d, mcl_idx=%d, cch_state=%d, mcl_handle=%d",app_idx,mcl_idx,p_mcb->cch_state,p_data->api_dch_open.mcl_handle);
        if (p_mcb->cch_state == BTA_HL_CCH_OPEN_ST)
        {
            if (bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx))
@@ -1370,6 +1468,8 @@ static void bta_hl_api_sdp_query(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
                p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
                p_mcb->in_use = TRUE;
                bdcpy(p_mcb->bd_addr, p_data->api_sdp_query.bd_addr);
                APPL_TRACE_DEBUG3("bta_hl_api_sdp_query p_mcb->app_id %d app_idx %d mcl_idx %d", p_mcb->app_id, app_idx, mcl_idx);
                p_mcb->app_id = p_data->api_sdp_query.app_id;
                p_mcb->sdp_oper  = BTA_HL_SDP_OP_SDP_QUERY_NEW ;
            }
            else
@@ -1380,6 +1480,7 @@ static void bta_hl_api_sdp_query(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
        else
        {
            p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
            p_mcb->app_id = p_data->api_sdp_query.app_id;
            if (p_mcb->sdp_oper != BTA_HL_SDP_OP_NONE)
            {
                status = BTA_HL_STATUS_SDP_NO_RESOURCE;
@@ -1419,6 +1520,7 @@ static void bta_hl_api_sdp_query(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
            if (p_acb->p_cback)
            {
                bta_hl_build_sdp_query_cfm(&evt_data,
                                           p_data->api_sdp_query.app_id,
                                           p_data->api_sdp_query.app_handle,
                                           p_data->api_sdp_query.bd_addr,
                                           NULL,
@@ -1490,7 +1592,8 @@ static void bta_hl_sdp_query_results(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
    }
#endif

    bta_hl_build_sdp_query_cfm(&evt_data,p_acb->app_handle,
    APPL_TRACE_DEBUG3("bta_hl_sdp_query_results p_mcb->app_id %d app_idx %d mcl_idx %d", p_mcb->app_id, app_idx, mcl_idx);
    bta_hl_build_sdp_query_cfm(&evt_data,p_mcb->app_id, p_acb->app_handle,
                               p_mcb->bd_addr,p_sdp,status);
    p_acb->p_cback(BTA_HL_SDP_QUERY_CFM_EVT,(tBTA_HL *) &evt_data );

@@ -1861,6 +1964,9 @@ BOOLEAN bta_hl_hdl_event(BT_HDR *p_msg)
        case BTA_HL_API_DISABLE_EVT:
            bta_hl_api_disable(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
            break;
        case BTA_HL_API_UPDATE_EVT:
            bta_hl_api_update(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
            break;
        case BTA_HL_API_REGISTER_EVT:
            bta_hl_api_register(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
            break;
+203 −0

File changed.

Preview size limit exceeded, changes collapsed.

Loading