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

Commit 235759bc authored by Prerepa Viswanadham's avatar Prerepa Viswanadham
Browse files

Use run time parameters to control LE features

Use values read from controller to enable and control LE features such as
multi advertising, RPA offload, maximum irk size etc

bug 15393216

Change-Id: I193e2b9a0dc61b86f667e986803571440e390160
parent 71cabdbf
Loading
Loading
Loading
Loading
+170 −91
Original line number Diff line number Diff line
@@ -3173,7 +3173,7 @@ static void bta_dm_local_name_cback(UINT8 *p_name)
    if(bta_dm_cb.p_sec_cback)
        bta_dm_cb.p_sec_cback(BTA_DM_ENABLE_EVT, &sec_event);

#if ( BLE_INCLUDED == TRUE)
#if BLE_VND_INCLUDED == TRUE
    BTM_BleReadControllerFeatures (bta_dm_ctrl_features_rd_cmpl_cback);
#endif
}
@@ -5149,7 +5149,6 @@ void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data)
    BTM_BleConfigPrivacy (p_data->ble_local_privacy.privacy_enable);
}
#endif

/*******************************************************************************
**
** Function         bta_dm_ble_observe
@@ -5161,7 +5160,6 @@ void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_observe (tBTA_DM_MSG *p_data)
{

    tBTM_STATUS status;
    if (p_data->ble_observe.start)
    {
@@ -5273,10 +5271,23 @@ void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data)
{
#if BLE_MULTI_ADV_INCLUDED == TRUE
    BTM_BleEnableAdvInstance((tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_enb.p_params,
        p_data->ble_multi_adv_enb.p_cback,p_data->ble_multi_adv_enb.p_ref);
#endif
    tBTM_STATUS btm_status = 0;
    void *p_ref = NULL;

    bta_dm_cb.p_multi_adv_cback = p_data->ble_multi_adv_enb.p_cback;
    if(BTM_BleMaxMultiAdvInstanceCount() > 0 && NULL != p_data->ble_multi_adv_enb.p_ref)
    {
        btm_status = BTM_BleEnableAdvInstance((tBTM_BLE_ADV_PARAMS*)
                                            p_data->ble_multi_adv_enb.p_params,
                                            p_data->ble_multi_adv_enb.p_cback,
                                            p_data->ble_multi_adv_enb.p_ref);
    }

    if(BTM_CMD_STARTED != btm_status)
    {
        bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_ENB_EVT, 0xFF,
                                    p_data->ble_multi_adv_enb.p_ref, BTA_FAILURE);
    }
}
/*******************************************************************************
**
@@ -5289,10 +5300,22 @@ void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data)
{
#if BLE_MULTI_ADV_INCLUDED == TRUE
    BTM_BleUpdateAdvInstParam(p_data->ble_multi_adv_param.inst_id,
    tBTM_STATUS btm_status = 0;
    void *p_ref = NULL;

    if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_param.inst_id > 0
        && p_data->ble_multi_adv_param.inst_id < BTM_BleMaxMultiAdvInstanceCount())
    {
        btm_status = BTM_BleUpdateAdvInstParam(p_data->ble_multi_adv_param.inst_id,
                         (tBTM_BLE_ADV_PARAMS*)p_data->ble_multi_adv_param.p_params);
#endif
    }

    if(BTM_CMD_STARTED != btm_status)
    {
       p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_param.inst_id);
       bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_PARAM_EVT,
                                   p_data->ble_multi_adv_param.inst_id, p_ref, BTA_FAILURE);
    }
}
/*******************************************************************************
**
@@ -5306,10 +5329,25 @@ void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data)
{
#if BLE_MULTI_ADV_INCLUDED == TRUE
    BTM_BleCfgAdvInstData(p_data->ble_multi_adv_data.inst_id,p_data->ble_multi_adv_data.is_scan_rsp,
        p_data->ble_multi_adv_data.data_mask,(tBTM_BLE_ADV_DATA*)p_data->ble_multi_adv_data.p_data);
#endif
    tBTM_STATUS btm_status = 0;
    void *p_ref = NULL;

    if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_data.inst_id > 0
        && p_data->ble_multi_adv_data.inst_id < BTM_BleMaxMultiAdvInstanceCount())
    {
        btm_status = BTM_BleCfgAdvInstData(p_data->ble_multi_adv_data.inst_id,
                        p_data->ble_multi_adv_data.is_scan_rsp,
                        p_data->ble_multi_adv_data.data_mask,
                        (tBTM_BLE_ADV_DATA*)p_data->ble_multi_adv_data.p_data);
    }

    if(BTM_CMD_STARTED != btm_status)
    {
       p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_data.inst_id);
       bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DATA_EVT,
                                   p_data->ble_multi_adv_data.inst_id, p_ref, BTA_FAILURE);
    }

}
/*******************************************************************************
**
@@ -5322,9 +5360,21 @@ void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data)
*******************************************************************************/
void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data)
{
#if BLE_MULTI_ADV_INCLUDED == TRUE
    BTM_BleDisableAdvInstance(p_data->ble_multi_adv_disable.inst_id);
#endif
    tBTM_STATUS btm_status = 0;
    void *p_ref = NULL;

    if(BTM_BleMaxMultiAdvInstanceCount() > 0 && p_data->ble_multi_adv_disable.inst_id > 0
        && p_data->ble_multi_adv_disable.inst_id < BTM_BleMaxMultiAdvInstanceCount())
    {
        btm_status = BTM_BleDisableAdvInstance(p_data->ble_multi_adv_disable.inst_id);
    }

    if(BTM_CMD_STARTED != btm_status)
    {
       p_ref = btm_ble_multi_adv_get_ref(p_data->ble_multi_adv_disable.inst_id);
       bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DISABLE_EVT,
                                   p_data->ble_multi_adv_disable.inst_id, p_ref, BTA_FAILURE);
    }
}

/*******************************************************************************
@@ -5338,9 +5388,13 @@ void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data)
{
#if BLE_BATCH_SCAN_INCLUDED == TRUE
    tBTM_STATUS btm_status = 0;
    tBTM_BLE_VSC_CB cmn_ble_vsc_cb;

    BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);

    if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
    {
        btm_status = BTM_BleSetStorageConfig(p_data->ble_set_storage.batch_scan_full_max,
                                             p_data->ble_set_storage.batch_scan_trunc_max,
                                             p_data->ble_set_storage.batch_scan_notify_threshold,
@@ -5348,11 +5402,11 @@ void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data)
                                             p_data->ble_set_storage.p_thres_cback,
                                             p_data->ble_set_storage.p_read_rep_cback,
                                             p_data->ble_set_storage.ref_value);
    }

    if(BTM_CMD_STARTED != btm_status)
       bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, p_data->ble_set_storage.ref_value,
                             btm_status);
#endif
}

/*******************************************************************************
@@ -5366,20 +5420,24 @@ void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_enable_batch_scan (tBTA_DM_MSG *p_data)
{
#if BLE_BATCH_SCAN_INCLUDED == TRUE
    tBTM_STATUS btm_status = 0;
    tBTM_BLE_VSC_CB cmn_ble_vsc_cb;

    BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);

    if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
    {
        btm_status = BTM_BleEnableBatchScan(p_data->ble_enable_scan.scan_mode,
                           p_data->ble_enable_scan.scan_int,p_data->ble_enable_scan.scan_window,
                           p_data->ble_enable_scan.addr_type,
                                            p_data->ble_enable_scan.scan_int,
                                            p_data->ble_enable_scan.scan_window,
                                            p_data->ble_enable_scan.discard_rule,
                                            p_data->ble_enable_scan.addr_type,
                                            p_data->ble_enable_scan.ref_value);
    }

    if(BTM_CMD_STARTED != btm_status)
       bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT, p_data->ble_enable_scan.ref_value,
                             btm_status);

#endif
}

/*******************************************************************************
@@ -5394,15 +5452,19 @@ void bta_dm_ble_enable_batch_scan (tBTA_DM_MSG *p_data)
void bta_dm_ble_disable_batch_scan (tBTA_DM_MSG *p_data)
{
    UNUSED(p_data);
#if BLE_BATCH_SCAN_INCLUDED == TRUE
    tBTM_STATUS btm_status = 0;
    tBTM_BLE_VSC_CB cmn_ble_vsc_cb;

    BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);

    if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
    {
        btm_status = BTM_BleDisableBatchScan(p_data->ble_disable_scan.ref_value);
    }

    if(BTM_CMD_STARTED != btm_status)
       bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT, p_data->ble_enable_scan.ref_value,
                             btm_status);
#endif
}

/*******************************************************************************
@@ -5416,16 +5478,20 @@ void bta_dm_ble_disable_batch_scan (tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data)
{
#if BLE_BATCH_SCAN_INCLUDED == TRUE
    tBTM_STATUS btm_status = 0;
    tBTM_BLE_VSC_CB cmn_ble_vsc_cb;

    BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);

    if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
    {
        btm_status = BTM_BleReadScanReports(p_data->ble_read_reports.scan_type,
                                            p_data->ble_read_reports.ref_value);
    }

    if(BTM_CMD_STARTED != btm_status)
       bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, p_data->ble_enable_scan.ref_value,
                             btm_status);
#endif
}

/*******************************************************************************
@@ -5439,10 +5505,23 @@ void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data)
*******************************************************************************/
void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data)
{
    BTM_BleTrackAdvertiser(p_data->ble_track_advert.p_track_adv_cback,
    tBTM_STATUS btm_status = 0;
    BD_ADDR bda;
    memset(&bda, 0 , sizeof(BD_ADDR));
    tBTM_BLE_VSC_CB cmn_ble_vsc_cb;

    BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);

    if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
    {
        btm_status = BTM_BleTrackAdvertiser(p_data->ble_track_advert.p_track_adv_cback,
                                            p_data->ble_track_advert.ref_value);
    }

    if(BTM_CMD_STARTED != btm_status)
       p_data->ble_track_advert.p_track_adv_cback(0, 0, bda, 0, p_data->ble_track_advert.ref_value);
}

/*******************************************************************************
**
** Function         bta_ble_scan_setup_cb
@@ -5527,51 +5606,6 @@ static void bta_ble_status_cmpl(tBTM_BLE_PF_ACTION action, tBTM_BLE_REF_VALUE re
       bta_dm_cb.p_scan_filt_status_cback(action, ref_value, st);
}

/*******************************************************************************
**
** Function         bta_ble_enable_scan_cmpl
**
** Description      ADV payload filtering enable / disable complete callback
**
**
** Returns          None
**
*******************************************************************************/
static void bta_ble_energy_info_cmpl(tBTM_BLE_TX_TIME_MS tx_time,
                                        tBTM_BLE_RX_TIME_MS rx_time,
                                        tBTM_BLE_IDLE_TIME_MS idle_time,
                                        tBTM_BLE_ENERGY_USED  energy_used,
                                        tBTM_STATUS status)
{
    tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS: BTA_FAILURE;
    tBTA_DM_CONTRL_STATE ctrl_state = 0;

    if (BTA_SUCCESS == st)
       ctrl_state = bta_dm_pm_obtain_controller_state();

    if (bta_dm_cb.p_energy_info_cback)
        bta_dm_cb.p_energy_info_cback(tx_time, rx_time, idle_time, energy_used, ctrl_state, st);
}

/*******************************************************************************
**
** Function         bta_dm_ble_get_energy_info
**
** Description      This function obtains the energy info
**
** Parameters:
**
*******************************************************************************/
void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data)
{
    tBTM_STATUS btm_status = 0;

    bta_dm_cb.p_energy_info_cback = p_data->ble_energy_info.p_energy_info_cback;
    btm_status = BTM_BleGetEnergyInfo(bta_ble_energy_info_cmpl);
    if (BTM_CMD_STARTED != btm_status)
        bta_ble_energy_info_cmpl(0, 0, 0, 0, btm_status);
}

/*******************************************************************************
**
** Function         bta_dm_cfg_filter_cond
@@ -5684,6 +5718,51 @@ void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data)
}
#endif

/*******************************************************************************
**
** Function         bta_ble_enable_scan_cmpl
**
** Description      ADV payload filtering enable / disable complete callback
**
**
** Returns          None
**
*******************************************************************************/
static void bta_ble_energy_info_cmpl(tBTM_BLE_TX_TIME_MS tx_time,
                                        tBTM_BLE_RX_TIME_MS rx_time,
                                        tBTM_BLE_IDLE_TIME_MS idle_time,
                                        tBTM_BLE_ENERGY_USED  energy_used,
                                        tBTM_STATUS status)
{
    tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS: BTA_FAILURE;
    tBTA_DM_CONTRL_STATE ctrl_state = 0;

    if (BTA_SUCCESS == st)
       ctrl_state = bta_dm_pm_obtain_controller_state();

    if (bta_dm_cb.p_energy_info_cback)
        bta_dm_cb.p_energy_info_cback(tx_time, rx_time, idle_time, energy_used, ctrl_state, st);
}

/*******************************************************************************
**
** Function         bta_dm_ble_get_energy_info
**
** Description      This function obtains the energy info
**
** Parameters:
**
*******************************************************************************/
void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data)
{
    tBTM_STATUS btm_status = 0;

    bta_dm_cb.p_energy_info_cback = p_data->ble_energy_info.p_energy_info_cback;
    btm_status = BTM_BleGetEnergyInfo(bta_ble_energy_info_cmpl);
    if (BTM_CMD_STARTED != btm_status)
        bta_ble_energy_info_cmpl(0, 0, 0, 0, btm_status);
}

#if ((defined BTA_GATT_INCLUDED) &&  (BTA_GATT_INCLUDED == TRUE))
#ifndef BTA_DM_GATT_CLOSE_DELAY_TOUT
#define BTA_DM_GATT_CLOSE_DELAY_TOUT    1000
+67 −55
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include "btm_int.h"
#include <string.h>
#include "utl.h"
#include "vendor_ble.h"

/*****************************************************************************
**  Constants
@@ -1260,8 +1261,6 @@ void bta_dmexecutecallback (tBTA_DM_EXEC_CBACK* p_callback, void * p_param)
    }
}

#if BLE_INCLUDED == TRUE

/*******************************************************************************
**
** Function         BTA_DmAddBleKey
@@ -1984,7 +1983,6 @@ void BTA_DmBleEnableRemotePrivacy(BD_ADDR bd_addr, BOOLEAN privacy_enable)
void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable)
{
#if BLE_INCLUDED == TRUE
#if BLE_VND_INCLUDED == TRUE && BLE_PRIVACY_SPT == TRUE
    tBTA_DM_API_LOCAL_PRIVACY *p_msg;

    if ((p_msg = (tBTA_DM_API_LOCAL_PRIVACY *) GKI_getbuf(sizeof(tBTA_DM_API_ENABLE_PRIVACY))) != NULL)
@@ -1996,12 +1994,10 @@ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable)

        bta_sys_sendmsg(p_msg);
    }
#endif
#else
    UNUSED (privacy_enable);
#endif
}
#endif

#if BLE_INCLUDED == TRUE
/*******************************************************************************
@@ -2018,7 +2014,7 @@ void BTA_DmBleConfigLocalPrivacy(BOOLEAN privacy_enable)
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
void BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
                                tBTA_BLE_MULTI_ADV_CBACK *p_cback,
                                void *p_ref)
{
@@ -2041,10 +2037,7 @@ tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
        p_msg->p_ref        = p_ref;

        bta_sys_sendmsg(p_msg);

        return BTA_SUCCESS;
    }
    return BTA_FAILURE;
}

/*******************************************************************************
@@ -2060,29 +2053,22 @@ tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params)
void BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_params)
{
    tBTA_DM_API_BLE_MULTI_ADV_PARAM    *p_msg;
    UINT16      len = sizeof(tBTA_BLE_ADV_PARAMS) + sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM);

    APPL_TRACE_API ("BTA_BleUpdateAdvInstParam");
    if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL)
    {
     if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_PARAM *) GKI_getbuf(len)) != NULL)
     {
          memset(p_msg, 0, sizeof(tBTA_DM_API_BLE_MULTI_ADV_PARAM));

          p_msg->hdr.event     = BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT;
          p_msg->inst_id        = inst_id;
          p_msg->p_params =  (void *)(p_msg + 1);
          memcpy(p_msg->p_params, p_params, sizeof(tBTA_BLE_ADV_PARAMS));

          bta_sys_sendmsg(p_msg);

             return BTA_SUCCESS;
        }
    }
    return BTA_FAILURE;
}

/*******************************************************************************
@@ -2102,7 +2088,7 @@ tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id, tBTA_BLE_ADV_PARAMS *p_par
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
void BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
                            tBTA_BLE_AD_MASK data_mask,
                            tBTA_BLE_ADV_DATA *p_data)
{
@@ -2111,12 +2097,9 @@ tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,

    APPL_TRACE_API ("BTA_BleCfgAdvInstData");

    if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL)
    {
    if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DATA *) GKI_getbuf(len)) != NULL)
    {
          memset(p_msg, 0, len);

          p_msg->hdr.event     = BTA_DM_API_BLE_MULTI_ADV_DATA_EVT;
          p_msg->inst_id      = inst_id;
          p_msg->is_scan_rsp  = is_scan_rsp;
@@ -2124,11 +2107,7 @@ tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
          p_msg->p_data        = p_data;

          bta_sys_sendmsg(p_msg);

            return BTA_SUCCESS;
        }
    }
    return BTA_FAILURE;
}

/*******************************************************************************
@@ -2142,14 +2121,11 @@ tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
tBTA_STATUS BTA_BleDisableAdvInstance (UINT8  inst_id)
void BTA_BleDisableAdvInstance (UINT8  inst_id)
{
    tBTA_DM_API_BLE_MULTI_ADV_DISABLE    *p_msg;

    APPL_TRACE_API ("BTA_BleDisableAdvInstance: %d", inst_id);

    if (inst_id <= BTM_BLE_MULTI_ADV_MAX && inst_id != BTA_BLE_MULTI_ADV_ILLEGAL)
    {
    if ((p_msg = (tBTA_DM_API_BLE_MULTI_ADV_DISABLE *)
          GKI_getbuf(sizeof(tBTA_DM_API_BLE_MULTI_ADV_DISABLE))) != NULL)
    {
@@ -2157,11 +2133,8 @@ tBTA_STATUS BTA_BleDisableAdvInstance (UINT8 inst_id)
         p_msg->hdr.event    = BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT;
         p_msg->inst_id      = inst_id;
         bta_sys_sendmsg(p_msg);
            return BTA_SUCCESS;
    }
}
    return BTA_FAILURE;
}

/*******************************************************************************
**
@@ -2543,4 +2516,43 @@ BTA_API extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration,
        bta_sys_sendmsg(p_msg);
    }
}

/*******************************************************************************
**
** Function         BTA_VendorInit
**
** Description      This function initializes vendor specific
**
** Returns          void
**
*******************************************************************************/
void BTA_VendorInit (void)
{
    APPL_TRACE_API("BTA_VendorInit");
}

/*******************************************************************************
**
** Function         BTA_VendorCleanup
**
** Description      This function frees up Broadcom specific VS specific dynamic memory
**
** Returns          void
**
*******************************************************************************/
void BTA_VendorCleanup (void)
{
    tBTM_BLE_VSC_CB cmn_ble_vsc_cb;

#if (BLE_INCLUDED == TRUE && BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
    btm_ble_adv_filter_cleanup();
    btm_ble_vendor_cleanup();
#endif

   BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);

   if(cmn_ble_vsc_cb.adv_inst_max > 0)
      btm_ble_multi_adv_cleanup();
}

#endif
+3 −10
Original line number Diff line number Diff line
@@ -100,11 +100,9 @@ enum
    BTA_DM_API_BLE_SCAN_PARAM_EVT,
    BTA_DM_API_BLE_OBSERVE_EVT,
    BTA_DM_API_UPDATE_CONN_PARAM_EVT,

#if BLE_PRIVACY_SPT == TRUE
    BTA_DM_API_LOCAL_PRIVACY_EVT,
#endif

    BTA_DM_API_BLE_ADV_PARAM_EVT,
    BTA_DM_API_BLE_SET_ADV_CONFIG_EVT,
    BTA_DM_API_BLE_SET_SCAN_RSP_EVT,
@@ -564,7 +562,7 @@ typedef struct
typedef struct
{
    BT_HDR                      hdr;
    void                        *p_cback;
    tBTA_BLE_MULTI_ADV_CBACK    *p_cback;
    void                        *p_ref;
    tBTA_BLE_ADV_PARAMS         *p_params;
}tBTA_DM_API_BLE_MULTI_ADV_ENB;
@@ -922,13 +920,12 @@ typedef struct
    tBTA_DM_SEC_CBACK           *p_sec_cback;
#if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE))
    tBTA_BLE_SCAN_SETUP_CBACK   *p_setup_cback;
#endif
    tBTA_DM_BLE_PF_CFG_CBACK     *p_scan_filt_cfg_cback;
    tBTA_DM_BLE_PF_STATUS_CBACK  *p_scan_filt_status_cback;
    tBTA_DM_BLE_PF_PARAM_CBACK   *p_scan_filt_param_cback;
#if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE))
    tBTA_BLE_ENERGY_INFO_CBACK   *p_energy_info_cback;
    tBTA_BLE_MULTI_ADV_CBACK     *p_multi_adv_cback;
#endif
    tBTA_BLE_ENERGY_INFO_CBACK   *p_energy_info_cback;
    TIMER_LIST_ENT              signal_strength_timer;
    tBTA_SIG_STRENGTH_MASK      signal_strength_mask;
    UINT16                      state;
@@ -1186,9 +1183,7 @@ extern void bta_dm_ble_set_scan_params (tBTA_DM_MSG *p_data);
extern void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data);
extern void bta_dm_ble_observe (tBTA_DM_MSG *p_data);
extern void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data);
#if BLE_PRIVACY_SPT == TRUE
extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data);
#endif
extern void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data);
extern void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data);
extern void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data);
@@ -1245,9 +1240,7 @@ extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data);
extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data);
extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(BD_ADDR peer_addr);

#if BLE_PRIVACY_SPT == TRUE
extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data);
#endif

extern void bta_dm_pm_active(BD_ADDR peer_addr);

+1 −1
Original line number Diff line number Diff line
@@ -118,8 +118,8 @@ const tBTA_DM_ACTION bta_dm_action[] =
    bta_dm_ble_disable_batch_scan, /* BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT */
    bta_dm_ble_read_scan_reports,  /* BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT */
    bta_dm_ble_track_advertiser,   /* BTA_DM_API_BLE_TRACK_ADVERTISER_EVT */
    bta_dm_ble_get_energy_info,    /* BTA_DM_API_BLE_ENERGY_INFO_EVT */
#endif
    bta_dm_ble_get_energy_info,    /* BTA_DM_API_BLE_ENERGY_INFO_EVT */

#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
    bta_dm_update_eir_uuid,     /*  BTA_DM_API_UPDATE_EIR_UUID_EVT      */
+26 −5
Original line number Diff line number Diff line
@@ -944,7 +944,6 @@ typedef union
/* Security callback */
typedef void (tBTA_DM_SEC_CBACK)(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *p_data);

#define BTA_BLE_MULTI_ADV_MAX BTM_BLE_MULTI_ADV_MAX
#define BTA_BLE_MULTI_ADV_ILLEGAL 0

/* multi adv callback event */
@@ -2373,7 +2372,7 @@ BTA_API extern void BTA_DmBleBroadcast (BOOLEAN start);
** Returns          None
**
*******************************************************************************/
BTA_API extern tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
BTA_API extern void BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_params,
                                tBTA_BLE_MULTI_ADV_CBACK *p_cback,void *p_ref);

/*******************************************************************************
@@ -2388,7 +2387,7 @@ BTA_API extern tBTA_STATUS BTA_BleEnableAdvInstance (tBTA_BLE_ADV_PARAMS *p_para
** Returns          None
**
*******************************************************************************/
BTA_API extern tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id,
BTA_API extern void BTA_BleUpdateAdvInstParam (UINT8 inst_id,
                                tBTA_BLE_ADV_PARAMS *p_params);

/*******************************************************************************
@@ -2403,7 +2402,7 @@ BTA_API extern tBTA_STATUS BTA_BleUpdateAdvInstParam (UINT8 inst_id,
** Returns          None
**
*******************************************************************************/
BTA_API extern tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
BTA_API extern void BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
                                tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data);

/*******************************************************************************
@@ -2417,7 +2416,7 @@ BTA_API extern tBTA_STATUS BTA_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan
** Returns          None
**
*******************************************************************************/
BTA_API extern tBTA_STATUS BTA_BleDisableAdvInstance(UINT8 inst_id);
BTA_API extern void BTA_BleDisableAdvInstance(UINT8 inst_id);

/*******************************************************************************
**
@@ -2606,6 +2605,28 @@ BTA_API extern void BTA_DmBleTrackAdvertiser(tBTA_DM_BLE_REF_VALUE ref_value,
*******************************************************************************/
BTA_API extern void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK *p_cmpl_cback);

/*******************************************************************************
**
** Function         BTA_BrcmInit
**
** Description      This function initializes Broadcom specific VS handler in BTA
**
** Returns          void
**
*******************************************************************************/
BTA_API extern void BTA_VendorInit  (void);

/*******************************************************************************
**
** Function         BTA_BrcmCleanup
**
** Description      This function frees up Broadcom specific VS specific dynamic memory
**
** Returns          void
**
*******************************************************************************/
BTA_API extern void BTA_VendorCleanup (void);

#endif

#ifdef __cplusplus
Loading