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

Commit 95a8a0f0 authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Remove BTA layer components for LE advertising

Advertising is so simple, it doesn't need the BTA layer.
Values returned by BTM_VendorSpecificCommand shouldn't be handled as
success or failure, it's just to inform wether we sent the callback.

Bug: 30622771
Change-Id: I104c4fbf84d3818b76fe8c527fbde4e6c4336c3a
parent 1453168d
Loading
Loading
Loading
Loading
+0 −147
Original line number Diff line number Diff line
@@ -4734,50 +4734,6 @@ void bta_dm_ble_set_adv_params (uint16_t adv_int_min, uint16_t adv_int_max,
    BTM_BleSetAdvParams(adv_int_min, adv_int_max, p_dir_bda, BTA_DM_BLE_ADV_CHNL_MAP);
}

/*******************************************************************************
**
** Function         bta_dm_ble_set_adv_config
**
** Description      This function set the customized ADV data configuration
**
** Parameters:
**
*******************************************************************************/
void bta_dm_ble_set_adv_config (tBTA_BLE_AD_MASK data_mask,
                                tBTA_BLE_ADV_DATA *adv_cfg,
                                tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback)
{
    tBTA_STATUS status = BTA_FAILURE;

    if (BTM_BleWriteAdvData(data_mask, (tBTM_BLE_ADV_DATA *)adv_cfg) == BTM_SUCCESS)
        status = BTA_SUCCESS;

    if (p_adv_data_cback)
        (*p_adv_data_cback)(status);
}

/*******************************************************************************
**
** Function         bta_dm_ble_set_scan_rsp
**
** Description      This function set the customized ADV scan resp. configuration
**
** Parameters:
**
*******************************************************************************/
void bta_dm_ble_set_scan_rsp (tBTA_BLE_AD_MASK data_mask,
                              tBTA_BLE_ADV_DATA *adv_cfg,
                              tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback)
{
    tBTA_STATUS status = BTA_FAILURE;

    if(BTM_BleWriteScanRsp(data_mask, (tBTM_BLE_ADV_DATA *)adv_cfg) == BTM_SUCCESS)
        status = BTA_SUCCESS;

    if (p_adv_data_cback)
        (*p_adv_data_cback)(status);
}

/*******************************************************************************
**
** Function         bta_dm_ble_set_data_length
@@ -4810,109 +4766,6 @@ void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data)
    BTM_BleBroadcast(p_data->ble_observe.start);
}


void bta_dm_ble_multi_adv_register(tBTA_BLE_MULTI_ADV_CBACK *p_cback) {
    bta_dm_cb.p_multi_adv_cback = p_cback;

    BTM_BleAdvRegister((tBTM_BLE_MULTI_ADV_CBACK *)p_cback);
}

/*******************************************************************************
**
** Function         bta_dm_ble_multi_adv_enb
**
** Description      This function enables a single advertising instance
**
** Parameters:
**
*******************************************************************************/
void bta_dm_ble_multi_adv_enb(uint8_t inst_id, tBTA_BLE_ADV_PARAMS *p_params)
{
    tBTM_STATUS btm_status = 0;

    if (BTM_BleMaxMultiAdvInstanceCount() > 0) {
        btm_status = BTM_BleEnableAdvInstance(inst_id,
                                              (tBTM_BLE_ADV_PARAMS *)p_params);
    }

    if (BTM_CMD_STARTED != btm_status) {
        bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_ENB_EVT, inst_id,
                                    BTA_FAILURE);
    }
}
/*******************************************************************************
**
** Function         bta_dm_ble_multi_adv_param_upd
**
** Description      This function updates multiple advertising instance parameters
**
** Parameters:
**
*******************************************************************************/
void bta_dm_ble_multi_adv_upd_param(uint8_t inst_id, tBTA_BLE_ADV_PARAMS *p_params)
{
    tBTM_STATUS btm_status = 0;

    if (BTM_BleMaxMultiAdvInstanceCount() > 0 && inst_id > 0
        && inst_id < BTM_BleMaxMultiAdvInstanceCount()) {
        btm_status = BTM_BleUpdateAdvInstParam(inst_id,
                         (tBTM_BLE_ADV_PARAMS*)p_params);
    }

    if (BTM_CMD_STARTED != btm_status) {
       bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_PARAM_EVT, inst_id, BTA_FAILURE);
    }
}
/*******************************************************************************
**
** Function         bta_dm_ble_multi_adv_data
**
** Description      This function write multiple advertising instance adv data
**                  or scan response data
**
** Parameters:
**
*******************************************************************************/
void bta_dm_ble_multi_adv_data(uint8_t inst_id, bool is_scan_rsp,
                               tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA data)
{
    tBTM_STATUS btm_status = 0;

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

    if (BTM_CMD_STARTED != btm_status) {
       bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DATA_EVT,
                                   inst_id, BTA_FAILURE);
    }
}
/*******************************************************************************
**
** Function         btm_dm_ble_multi_adv_disable
**
** Description      This function disable a single adv instance
**
** Parameters:
**
*******************************************************************************/
void btm_dm_ble_multi_adv_disable(uint8_t inst_id)
{
    tBTM_STATUS btm_status = 0;

    if (BTM_BleMaxMultiAdvInstanceCount() > 0 && inst_id > 0
        && inst_id < BTM_BleMaxMultiAdvInstanceCount()) {
        btm_status = BTM_BleDisableAdvInstance(inst_id);
    }

    if (BTM_CMD_STARTED != btm_status) {
       bta_dm_cb.p_multi_adv_cback(BTA_BLE_MULTI_ADV_DISABLE_EVT,
                                   inst_id, BTA_FAILURE);
    }
}

/*******************************************************************************
**
** Function         bta_dm_ble_setup_storage
+0 −154
Original line number Diff line number Diff line
@@ -902,52 +902,6 @@ void BTA_DmSetBleAdvParams(uint16_t adv_int_min, uint16_t adv_int_max,
********************************************************************************/

#if (BLE_INCLUDED == TRUE)
/*******************************************************************************
**
** Function         BTA_DmBleSetAdvConfig
**
** Description      This function is called to override the BTA default ADV parameters.
**
** Parameters       data_mask: adv data mask.
**                  p_adv_cfg: Pointer to User defined ADV data structure. This
**                             memory space can not be freed until p_adv_data_cback
**                             is received.
**                  p_adv_data_cback: set adv data complete callback.
**
** Returns          None
**
*******************************************************************************/
void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg,
                            tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback)
{
  tBTA_BLE_ADV_DATA *adv_cfg = new tBTA_BLE_ADV_DATA;
  memcpy(adv_cfg, p_adv_cfg, sizeof(tBTA_BLE_ADV_DATA));

  do_in_bta_thread(FROM_HERE,
      base::Bind(&bta_dm_ble_set_adv_config, data_mask, base::Owned(adv_cfg), p_adv_data_cback));
}

/*******************************************************************************
**
** Function         BTA_DmBleSetScanRsp
**
** Description      This function is called to override the BTA scan response.
**
** Parameters       Pointer to User defined ADV data structure
**
** Returns          None
**
*******************************************************************************/
extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_adv_cfg,
                                 tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback)
{
  tBTA_BLE_ADV_DATA *adv_cfg = new tBTA_BLE_ADV_DATA;
  memcpy(adv_cfg, p_adv_cfg, sizeof(tBTA_BLE_ADV_DATA));

  do_in_bta_thread(FROM_HERE,
      base::Bind(&bta_dm_ble_set_scan_rsp, data_mask, base::Owned(adv_cfg), p_adv_data_cback));
}

/*******************************************************************************
**
** Function         BTA_DmBleSetStorageParams
@@ -1362,114 +1316,6 @@ void BTA_DmBleConfigLocalPrivacy(bool privacy_enable)
}

#if (BLE_INCLUDED == TRUE)

/*******************************************************************************
**
** Register an advertising instance, status will be returned in |p_cback|
** callback, with assigned id, if operation succeeds. Instance is freed when
** advertising is disabled by calling |BTA_BleDisableAdvInstance|, or when any
** of the operations fails.
*******************************************************************************/
void BTA_BleAdvRegisterInstance(tBTA_BLE_MULTI_ADV_CBACK *p_cback) {
    do_in_bta_thread(FROM_HERE,
        base::Bind(&bta_dm_ble_multi_adv_register, p_cback));
}

/*******************************************************************************
**
** Function         BTA_BleEnableAdvInstance
**
** Description      This function enable a Multi-ADV instance with the specififed
**                  adv parameters
**
** Parameters       inst_id: Adv instance to update the parameter.
**                  p_params: pointer to the adv parameter structure.
**
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
void BTA_BleEnableAdvInstance (uint8_t inst_id, tBTA_BLE_ADV_PARAMS *p_params)
{
    APPL_TRACE_API("%s", __func__);

    if (p_params != NULL) {
        tBTA_BLE_ADV_PARAMS *params = new tBTA_BLE_ADV_PARAMS;
        memcpy(params, p_params, sizeof(tBTA_BLE_ADV_PARAMS));
        do_in_bta_thread(FROM_HERE,
            base::Bind(&bta_dm_ble_multi_adv_enb, inst_id, base::Owned(params)));
    } else {
        do_in_bta_thread(FROM_HERE,
            base::Bind(&bta_dm_ble_multi_adv_enb, inst_id, nullptr));
    }
}

/*******************************************************************************
**
** Function         BTA_BleUpdateAdvInstParam
**
** Description      This function update a Multi-ADV instance with the specififed
**                  adv parameters.
**
** Parameters       inst_id: Adv instance to update the parameter.
**                  p_params: pointer to the adv parameter structure.
**
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
void BTA_BleUpdateAdvInstParam (uint8_t inst_id, tBTA_BLE_ADV_PARAMS *p_params)
{
    APPL_TRACE_API("%s", __func__);

    tBTA_BLE_ADV_PARAMS *params = new tBTA_BLE_ADV_PARAMS;
    memcpy(params, p_params, sizeof(tBTA_BLE_ADV_PARAMS));
    do_in_bta_thread(FROM_HERE,
        base::Bind(&bta_dm_ble_multi_adv_upd_param, inst_id, base::Owned(params)));
}

/*******************************************************************************
**
** Function         BTA_BleCfgAdvInstData
**
** Description      This function configure a Multi-ADV instance with the specififed
**                  adv data or scan response data.
**
** Parameter        inst_id: Adv instance to configure the adv data or scan response.
**                  is_scan_rsp: is the data scan response or adv data.
**                  data_mask: adv data type as bit mask.
**                  p_data: pointer to the ADV data structure tBTA_BLE_ADV_DATA. This
**                  memory space can not be freed until BTA_BLE_MULTI_ADV_DATA_EVT
**                  is sent to application.
**
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
void BTA_BleCfgAdvInstData (uint8_t inst_id, bool is_scan_rsp,
                            tBTA_BLE_AD_MASK data_mask,
                            tBTA_BLE_ADV_DATA *p_data)
{
  do_in_bta_thread(FROM_HERE,
      base::Bind(&bta_dm_ble_multi_adv_data, inst_id, is_scan_rsp, data_mask, *p_data));
}

/*******************************************************************************
**
** Function         BTA_BleDisableAdvInstance
**
** Description      This function disable a Multi-ADV instance.
**
** Parameter        inst_id: instance ID to disable.
**
** Returns          BTA_SUCCESS if command started sucessfully; otherwise failure.
**
*******************************************************************************/
void BTA_BleDisableAdvInstance(uint8_t inst_id)
{
    APPL_TRACE_API("%s: %d", __func__, inst_id);

    do_in_bta_thread(FROM_HERE,
        base::Bind(&btm_dm_ble_multi_adv_disable, inst_id));
}

/*******************************************************************************
**
** Function         BTA_DmBleCfgFilterCondition
+0 −16
Original line number Diff line number Diff line
@@ -799,7 +799,6 @@ typedef struct
    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;
    tBTA_BLE_MULTI_ADV_CBACK     *p_multi_adv_cback;
    tBTA_BLE_ENERGY_INFO_CBACK   *p_energy_info_cback;
#endif
    uint16_t                      state;
@@ -1040,12 +1039,6 @@ extern void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data);
extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data);
extern void bta_dm_ble_set_adv_params(uint16_t adv_int_min, uint16_t adv_int_max,
                                      tBLE_BD_ADDR *p_dir_bda);
extern void bta_dm_ble_set_adv_config (tBTA_BLE_AD_MASK data_mask,
                                       tBTA_BLE_ADV_DATA *adv_cfg,
                                       tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback);
extern void bta_dm_ble_set_scan_rsp (tBTA_BLE_AD_MASK data_mask,
                                     tBTA_BLE_ADV_DATA *adv_cfg,
                                     tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback);

extern void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data);
extern void bta_dm_ble_set_data_length(tBTA_DM_MSG *p_data);
@@ -1055,15 +1048,6 @@ extern void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data);
extern void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data);
extern void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data);
#endif
extern void bta_dm_ble_multi_adv_register(tBTA_BLE_MULTI_ADV_CBACK *p_cback);
extern void btm_dm_ble_multi_adv_disable(uint8_t inst_id);
extern void bta_dm_ble_multi_adv_data(uint8_t inst_id, bool is_scan_rsp,
                                      tBTA_BLE_AD_MASK data_mask,
                                      tBTA_BLE_ADV_DATA data);
extern void bta_dm_ble_multi_adv_upd_param(uint8_t inst_id,
                                           tBTA_BLE_ADV_PARAMS *p_params);
extern void bta_dm_ble_multi_adv_enb(uint8_t inst_id,
                                     tBTA_BLE_ADV_PARAMS *p_params);

extern void bta_dm_ble_setup_storage(tBTA_DM_MSG *p_data);
extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG * p_data);
+0 −142
Original line number Diff line number Diff line
@@ -369,41 +369,9 @@ typedef struct

typedef void (tBTA_SET_ADV_DATA_CMPL_CBACK) (tBTA_STATUS status);

/* advertising channel map */
#define BTA_BLE_ADV_CHNL_37 BTM_BLE_ADV_CHNL_37
#define BTA_BLE_ADV_CHNL_38 BTM_BLE_ADV_CHNL_38
#define BTA_BLE_ADV_CHNL_39 BTM_BLE_ADV_CHNL_39
typedef tBTM_BLE_ADV_CHNL_MAP tBTA_BLE_ADV_CHNL_MAP; /* use as a bit mask */

/* advertising filter policy */
typedef tBTM_BLE_AFP   tBTA_BLE_AFP;

/* adv event type */
#define BTA_BLE_CONNECT_EVT         BTM_BLE_CONNECT_EVT     /* Connectable undirected advertising */
#define BTA_BLE_CONNECT_DIR_EVT     BTM_BLE_CONNECT_DIR_EVT /* Connectable directed advertising */
#define BTA_BLE_DISCOVER_EVT        BTM_BLE_DISCOVER_EVT    /* Scannable undirected advertising */
#define BTA_BLE_NON_CONNECT_EVT     BTM_BLE_NON_CONNECT_EVT /* Non connectable undirected advertising */
typedef uint8_t tBTA_BLE_ADV_EVT;

/* adv tx power level */
#define BTA_BLE_ADV_TX_POWER_MIN        0           /* minimum tx power */
#define BTA_BLE_ADV_TX_POWER_LOW        1           /* low tx power     */
#define BTA_BLE_ADV_TX_POWER_MID        2           /* middle tx power  */
#define BTA_BLE_ADV_TX_POWER_UPPER      3           /* upper tx power   */
#define BTA_BLE_ADV_TX_POWER_MAX        4           /* maximum tx power */
typedef uint8_t tBTA_BLE_ADV_TX_POWER;

/* advertising instance parameters */
typedef struct
{
    uint16_t                  adv_int_min;            /* minimum adv interval */
    uint16_t                  adv_int_max;            /* maximum adv interval */
    tBTA_BLE_ADV_EVT        adv_type;               /* adv event type */
    tBTA_BLE_ADV_CHNL_MAP   channel_map;            /* adv channel map */
    tBTA_BLE_AFP            adv_filter_policy;      /* advertising filter policy */
    tBTA_BLE_ADV_TX_POWER   tx_power;               /* adv tx power */
}tBTA_BLE_ADV_PARAMS;

/* These are the fields returned in each device adv packet.  It
** is returned in the results callback if registered.
*/
@@ -902,20 +870,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_ILLEGAL 0

/* multi adv callback event */
#define BTA_BLE_MULTI_ADV_ENB_EVT           1
#define BTA_BLE_MULTI_ADV_DISABLE_EVT       2
#define BTA_BLE_MULTI_ADV_PARAM_EVT         3
#define BTA_BLE_MULTI_ADV_DATA_EVT          4
#define BTA_BLE_MULTI_ADV_REG_EVT           5

typedef uint8_t tBTA_BLE_MULTI_ADV_EVT;

/* multi adv callback */
typedef void (tBTA_BLE_MULTI_ADV_CBACK)(tBTA_BLE_MULTI_ADV_EVT event,
                                        uint8_t inst_id, tBTA_STATUS status);
typedef uint32_t tBTA_DM_BLE_REF_VALUE;

#define BTA_DM_BLE_PF_ENABLE_EVT       BTM_BLE_PF_ENABLE
@@ -2003,36 +1957,6 @@ extern void BTA_DmBleConfigLocalPrivacy(bool privacy_enable);
extern void BTA_DmBleEnableRemotePrivacy(BD_ADDR bd_addr, bool privacy_enable);


/*******************************************************************************
**
** Function         BTA_DmBleSetAdvConfig
**
** Description      This function is called to override the BTA default ADV parameters.
**
** Parameters       Pointer to User defined ADV data structure
**
** Returns          None
**
*******************************************************************************/
extern void BTA_DmBleSetAdvConfig (tBTA_BLE_AD_MASK data_mask,
                                   tBTA_BLE_ADV_DATA *p_adv_cfg,
                                   tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback);

/*******************************************************************************
**
** Function         BTA_DmBleSetScanRsp
**
** Description      This function is called to override the BTA scan response.
**
** Parameters       Pointer to User defined ADV data structure
**
** Returns          None
**
*******************************************************************************/
extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask,
                                 tBTA_BLE_ADV_DATA *p_adv_cfg,
                                 tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback);

/*******************************************************************************
**
** Function         BTA_DmBleBroadcast
@@ -2046,72 +1970,6 @@ extern void BTA_DmBleSetScanRsp (tBTA_BLE_AD_MASK data_mask,
*******************************************************************************/
extern void BTA_DmBleBroadcast (bool start);

/*******************************************************************************
**
** Register an advertising instance, status will be returned in |p_cback|
** callback, with assigned id, if operation succeeds. Instance is freed when
** advertising is disabled by calling |BTA_BleDisableAdvInstance|, or when any
** of the operations fails.
*******************************************************************************/
extern void BTA_BleAdvRegisterInstance(tBTA_BLE_MULTI_ADV_CBACK *p_cback);

/*******************************************************************************
**
** Function         BTA_BleEnableAdvInstance
**
** Description      This function enables the Multi ADV instance feature
**
** Parameters       inst_id Instance ID
**                  p_params Pointer to ADV param user defined structure
**
** Returns          None
**
*******************************************************************************/
extern void BTA_BleEnableAdvInstance(uint8_t inst_id, tBTA_BLE_ADV_PARAMS *p_params);

/*******************************************************************************
**
** Function         BTA_BleUpdateAdvInstParam
**
** Description      This function updates the Multi ADV instance params
**
** Parameters       inst_id Instance ID
**                  p_params Pointer to ADV param user defined structure
**
** Returns          None
**
*******************************************************************************/
extern void BTA_BleUpdateAdvInstParam (uint8_t inst_id,
                                tBTA_BLE_ADV_PARAMS *p_params);

/*******************************************************************************
**
** Function         BTA_BleCfgAdvInstData
**
** Description      This function is called to configure the ADV instance data
**
** Parameters       inst_id - Instance ID
**                  is_scan_rsp - Boolean value Scan response
**                  Pointer to User defined ADV data structure
** Returns          None
**
*******************************************************************************/
extern void BTA_BleCfgAdvInstData (uint8_t inst_id, bool is_scan_rsp,
                                tBTA_BLE_AD_MASK data_mask, tBTA_BLE_ADV_DATA *p_data);

/*******************************************************************************
**
** Function         BTA_BleDisableAdvInstance
**
** Description      This function is called to disable the ADV instance
**
** Parameters       inst_id - Instance ID to be disabled
**
** Returns          None
**
*******************************************************************************/
extern void BTA_BleDisableAdvInstance(uint8_t inst_id);

/*******************************************************************************
**
** Function         BTA_DmBleUpdateConnectionParams
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ typedef struct
    uint8_t advertiser_id;
    tBTA_BLE_AD_MASK mask;
    tBTA_BLE_ADV_DATA data;
    tBTA_BLE_ADV_PARAMS param;
    tBTM_BLE_ADV_PARAMS param;
    alarm_t *multi_adv_timer;
    int timeout_s;
} btgatt_multi_adv_inst_cb;
Loading