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

Commit 84697125 authored by Satya Calloji's avatar Satya Calloji Committed by Wei Wang
Browse files

Add support of advertising through standard instance.(4/4)

Handled the case of standard ADV when Multi ADV is not
supported by controller

Bug:17641092

Change-Id: I129a7faaf027985c63197e7298dbd2507905d29f
parent 7b10d07e
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -47,13 +47,11 @@ static btgatt_multi_adv_common_data *p_multi_adv_com_data_cb = NULL;

btgatt_multi_adv_common_data *btif_obtain_multi_adv_data_cb()
{
    if(0 == BTM_BleMaxMultiAdvInstanceCount())
    {
        BTIF_TRACE_WARNING("%s - No instances found", __FUNCTION__);
        return NULL;
    }
    int max_adv_inst = BTM_BleMaxMultiAdvInstanceCount();
    if (0 == max_adv_inst)
        max_adv_inst = 1;

    BTIF_TRACE_DEBUG("%s, Count:%d", __FUNCTION__, BTM_BleMaxMultiAdvInstanceCount());
    BTIF_TRACE_DEBUG("%s, Count:%d", __FUNCTION__, max_adv_inst);
    if (NULL == p_multi_adv_com_data_cb)
    {
        BTIF_TRACE_DEBUG("Initializing in %s", __FUNCTION__);
@@ -64,16 +62,16 @@ btgatt_multi_adv_common_data *btif_obtain_multi_adv_data_cb()

            /* Storing both client_if and inst_id details */
            p_multi_adv_com_data_cb->clntif_map =
                  GKI_getbuf(( BTM_BleMaxMultiAdvInstanceCount() * INST_ID_IDX_MAX)* sizeof(INT8));
                  GKI_getbuf(( max_adv_inst * INST_ID_IDX_MAX)* sizeof(INT8));
            memset(p_multi_adv_com_data_cb->clntif_map, 0 ,
                  ( BTM_BleMaxMultiAdvInstanceCount() * INST_ID_IDX_MAX)* sizeof(INT8));
                  ( max_adv_inst * INST_ID_IDX_MAX)* sizeof(INT8));

            p_multi_adv_com_data_cb->inst_cb = GKI_getbuf(( BTM_BleMaxMultiAdvInstanceCount() + 1 )
            p_multi_adv_com_data_cb->inst_cb = GKI_getbuf(( max_adv_inst + 1 )
                                              * sizeof(btgatt_multi_adv_inst_cb));
            memset(p_multi_adv_com_data_cb->inst_cb, 0 ,
                 ( BTM_BleMaxMultiAdvInstanceCount() + 1) * sizeof(btgatt_multi_adv_inst_cb));
                 ( max_adv_inst + 1) * sizeof(btgatt_multi_adv_inst_cb));

            for (int i=0; i < BTM_BleMaxMultiAdvInstanceCount()*2; i += 2)
            for (int i=0; i < max_adv_inst * 2; i += 2)
            {
                p_multi_adv_com_data_cb->clntif_map[i] = INVALID_ADV_INST;
                p_multi_adv_com_data_cb->clntif_map[i+1] = INVALID_ADV_INST;