mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
fix(ble/bluedroid): optimize bluedroid host and fix GAP, memory, status and BTM API issues
- return HCI_ERR_MEMORY_FULL on cmd buffer alloc failure - remove legacy adv/scan semaphores and mutex - Use the same legacy gap callback instead of each independent legacy gap event callback
This commit is contained in:
@@ -49,6 +49,7 @@
|
||||
#include "stack/hcidefs.h"
|
||||
//#include "bt_utils.h"
|
||||
#include "osi/list.h"
|
||||
#include "bta_dm_gap.h"
|
||||
|
||||
static void btm_read_remote_features (UINT16 handle);
|
||||
static void btm_read_remote_ext_features (UINT16 handle, UINT8 page_number);
|
||||
@@ -2275,10 +2276,11 @@ void btm_acl_pkt_types_changed(UINT8 status, UINT16 handle, UINT16 pkt_types)
|
||||
** Returns BTM_CMD_STARTED if successfully initiated or error code
|
||||
**
|
||||
*******************************************************************************/
|
||||
tBTM_STATUS BTM_ReadChannelMap(BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb)
|
||||
tBTM_STATUS BTM_ReadChannelMap(BD_ADDR remote_bda)
|
||||
{
|
||||
tACL_CONN *p;
|
||||
tBTM_BLE_CH_MAP_RESULTS result;
|
||||
UINT8 status;
|
||||
|
||||
BTM_TRACE_DEBUG("BTM_ReadChannelMap: RemBdAddr: %02x%02x%02x%02x%02x%02x\n",
|
||||
remote_bda[0], remote_bda[1], remote_bda[2],
|
||||
@@ -2286,29 +2288,33 @@ tBTM_STATUS BTM_ReadChannelMap(BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb)
|
||||
|
||||
memset(result.channel_map, 0, sizeof(result.channel_map)); // Clear channel map data
|
||||
/* If someone already waiting for the channel map, do not allow another */
|
||||
if (btm_cb.devcb.p_ble_ch_map_cmpl_cb) {
|
||||
if (btm_cb.devcb.is_ch_map_cb) {
|
||||
result.status = BTM_BUSY;
|
||||
(*p_cb)(&result);
|
||||
return BTM_BUSY;
|
||||
status = BTM_BUSY;
|
||||
goto _ch_map_err;
|
||||
}
|
||||
p = btm_bda_to_acl(remote_bda, BT_TRANSPORT_LE);
|
||||
if (p != NULL) {
|
||||
btm_cb.devcb.p_ble_ch_map_cmpl_cb = p_cb;
|
||||
|
||||
if (!btsnd_hcic_ble_read_chnl_map(p->hci_handle)) {
|
||||
btm_cb.devcb.p_ble_ch_map_cmpl_cb = NULL;
|
||||
btm_cb.devcb.is_ch_map_cb = false;
|
||||
result.status = BTM_NO_RESOURCES;
|
||||
(*p_cb)(&result);
|
||||
return BTM_NO_RESOURCES;
|
||||
status = BTM_NO_RESOURCES;
|
||||
goto _ch_map_err;
|
||||
} else {
|
||||
btm_cb.devcb.is_ch_map_cb = true;
|
||||
return BTM_CMD_STARTED;
|
||||
}
|
||||
}
|
||||
|
||||
status = BTM_UNKNOWN_ADDR;
|
||||
/* If here, no BD Addr found */
|
||||
result.status = BTM_UNKNOWN_ADDR;
|
||||
(*p_cb)(&result);
|
||||
return BTM_UNKNOWN_ADDR;
|
||||
|
||||
_ch_map_err:
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
// `ch_map_read` is same as `results`
|
||||
memcpy(&cb_params.ch_map_results, &result, sizeof(tBTM_BLE_CH_MAP_RESULTS));
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_READ_CHANNEL_MAP_EVT, &cb_params);
|
||||
return status;
|
||||
}
|
||||
|
||||
void BTM_BleGetWhiteListSize(uint16_t *length)
|
||||
@@ -2349,17 +2355,15 @@ void BTM_BleGetPeriodicAdvListSize(uint8_t *size)
|
||||
*******************************************************************************/
|
||||
void btm_read_channel_map_complete(UINT8 *p)
|
||||
{
|
||||
tBTM_CMPL_CB *p_cb = btm_cb.devcb.p_ble_ch_map_cmpl_cb;
|
||||
tBTM_BLE_CH_MAP_RESULTS results;
|
||||
UINT16 handle;
|
||||
tACL_CONN *p_acl_cb = NULL;
|
||||
|
||||
BTM_TRACE_DEBUG("btm_read_channel_map_complete\n");
|
||||
|
||||
/* Reset the callback pointer to prevent duplicate calls */
|
||||
btm_cb.devcb.p_ble_ch_map_cmpl_cb = NULL;
|
||||
|
||||
if (p_cb) {
|
||||
if (btm_cb.devcb.is_ch_map_cb) {
|
||||
/* Reset the callback pointer to prevent duplicate calls */
|
||||
btm_cb.devcb.is_ch_map_cb = false;
|
||||
/* Extract HCI status from the response */
|
||||
STREAM_TO_UINT8(results.hci_status, p);
|
||||
|
||||
@@ -2386,7 +2390,10 @@ void btm_read_channel_map_complete(UINT8 *p)
|
||||
}
|
||||
|
||||
/* Invoke the registered callback with the results */
|
||||
(*p_cb)(&results);
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
// `ch_map_read` is same as `results`
|
||||
memcpy(&cb_params.ch_map_results, &results, sizeof(tBTM_BLE_CH_MAP_RESULTS));
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_READ_CHANNEL_MAP_EVT, &cb_params);
|
||||
}
|
||||
}
|
||||
#endif // #if BLE_INCLUDED == TRUE
|
||||
|
||||
@@ -904,7 +904,7 @@ tBTM_STATUS BTM_SetBleDataLength(BD_ADDR bd_addr, UINT16 tx_pdu_length)
|
||||
} else if (tx_pdu_length < BTM_BLE_DATA_SIZE_MIN) {
|
||||
tx_pdu_length = BTM_BLE_DATA_SIZE_MIN;
|
||||
}
|
||||
|
||||
p_acl->data_len_updating = true;
|
||||
/* always set the TxTime to be max, as controller does not care for now */
|
||||
btsnd_hcic_ble_set_data_length(p_acl->hci_handle, tx_pdu_length,
|
||||
BTM_BLE_DATA_TX_TIME_MAX);
|
||||
|
||||
@@ -23,7 +23,7 @@ tBTM_BLE_5_HCI_CBACK ble_5_hci_cb;
|
||||
extern BOOLEAN BTM_GetLocalResolvablePrivateAddr(BD_ADDR bda);
|
||||
extern void BTM_UpdateAddrInfor(uint8_t addr_type, BD_ADDR bda);
|
||||
extern void BTM_BleSetStaticAddr(BD_ADDR rand_addr);
|
||||
extern uint32_t BTM_BleUpdateOwnType(uint8_t *own_bda_type, tBTM_START_ADV_CMPL_CBACK *cb);
|
||||
extern uint32_t BTM_BleUpdateOwnType(uint8_t *own_bda_type);
|
||||
#if (BLE_50_EXTEND_ADV_EN == TRUE)
|
||||
static tBTM_STATUS btm_ble_ext_adv_params_validate(tBTM_BLE_GAP_EXT_ADV_PARAMS *params);
|
||||
static tBTM_STATUS btm_ble_ext_adv_set_data_validate(UINT8 instance, UINT16 len, UINT8 *data);
|
||||
@@ -56,156 +56,6 @@ static tBTM_BLE_SYNC_RETRY_CB sync_retry_cb = {0};
|
||||
|
||||
extern void btm_ble_inter_set(bool extble_inter);
|
||||
|
||||
#if !UC_BT_STACK_NO_LOG
|
||||
static const char *btm_ble_hci_status_to_str(tHCI_STATUS status)
|
||||
{
|
||||
switch(status) {
|
||||
case HCI_SUCCESS:
|
||||
return "HCI_SUCCESS";
|
||||
case HCI_ERR_ILLEGAL_COMMAND:
|
||||
return "HCI_ERR_ILLEGAL_COMMAND";
|
||||
case HCI_ERR_NO_CONNECTION:
|
||||
return "HCI_ERR_NO_CONNECTION";
|
||||
case HCI_ERR_HW_FAILURE:
|
||||
return "HCI_ERR_HW_FAILURE";
|
||||
case HCI_ERR_PAGE_TIMEOUT:
|
||||
return "HCI_ERR_PAGE_TIMEOUT";
|
||||
case HCI_ERR_AUTH_FAILURE:
|
||||
return "HCI_ERR_AUTH_FAILURE";
|
||||
case HCI_ERR_KEY_MISSING:
|
||||
return "HCI_ERR_KEY_MISSING";
|
||||
case HCI_ERR_MEMORY_FULL:
|
||||
return "HCI_ERR_MEMORY_FULL";
|
||||
case HCI_ERR_CONNECTION_TOUT:
|
||||
return "HCI_ERR_CONNECTION_TOUT";
|
||||
case HCI_ERR_MAX_NUM_OF_CONNECTIONS:
|
||||
return "HCI_ERR_MAX_NUM_OF_CONNECTIONS";
|
||||
case HCI_ERR_MAX_NUM_OF_SCOS:
|
||||
return "HCI_ERR_MAX_NUM_OF_SCOS";
|
||||
case HCI_ERR_CONNECTION_EXISTS:
|
||||
return "HCI_ERR_CONNECTION_EXISTS";
|
||||
case HCI_ERR_COMMAND_DISALLOWED:
|
||||
return "HCI_ERR_COMMAND_DISALLOWED";
|
||||
case HCI_ERR_HOST_REJECT_RESOURCES:
|
||||
return "HCI_ERR_HOST_REJECT_RESOURCES";
|
||||
case HCI_ERR_HOST_REJECT_SECURITY:
|
||||
return "HCI_ERR_HOST_REJECT_SECURITY";
|
||||
case HCI_ERR_HOST_REJECT_DEVICE:
|
||||
return "HCI_ERR_HOST_REJECT_DEVICE";
|
||||
case HCI_ERR_HOST_TIMEOUT:
|
||||
return "HCI_ERR_HOST_TIMEOUT";
|
||||
case HCI_ERR_UNSUPPORTED_VALUE:
|
||||
return "HCI_ERR_UNSUPPORTED_VALUE";
|
||||
case HCI_ERR_ILLEGAL_PARAMETER_FMT:
|
||||
return "HCI_ERR_ILLEGAL_PARAMETER_FMT";
|
||||
case HCI_ERR_PEER_USER:
|
||||
return "HCI_ERR_PEER_USER";
|
||||
case HCI_ERR_PEER_LOW_RESOURCES:
|
||||
return "HCI_ERR_PEER_LOW_RESOURCES";
|
||||
case HCI_ERR_PEER_POWER_OFF:
|
||||
return "HCI_ERR_PEER_POWER_OFF";
|
||||
case HCI_ERR_CONN_CAUSE_LOCAL_HOST:
|
||||
return "HCI_ERR_CONN_CAUSE_LOCAL_HOST";
|
||||
case HCI_ERR_REPEATED_ATTEMPTS:
|
||||
return "HCI_ERR_REPEATED_ATTEMPTS";
|
||||
case HCI_ERR_PAIRING_NOT_ALLOWED:
|
||||
return "HCI_ERR_PAIRING_NOT_ALLOWED";
|
||||
case HCI_ERR_UNKNOWN_LMP_PDU:
|
||||
return "HCI_ERR_UNKNOWN_LMP_PDU";
|
||||
case HCI_ERR_UNSUPPORTED_REM_FEATURE:
|
||||
return "HCI_ERR_UNSUPPORTED_REM_FEATURE";
|
||||
case HCI_ERR_SCO_OFFSET_REJECTED:
|
||||
return "HCI_ERR_SCO_OFFSET_REJECTED";
|
||||
case HCI_ERR_SCO_INTERVAL_REJECTED:
|
||||
return "HCI_ERR_SCO_INTERVAL_REJECTED";
|
||||
case HCI_ERR_SCO_AIR_MODE:
|
||||
return "HCI_ERR_SCO_AIR_MODE";
|
||||
case HCI_ERR_INVALID_LMP_PARAM:
|
||||
return "HCI_ERR_INVALID_LMP_PARAM";
|
||||
case HCI_ERR_UNSPECIFIED:
|
||||
return "HCI_ERR_UNSPECIFIED";
|
||||
case HCI_ERR_UNSUPPORTED_LMP_PARAMETERS:
|
||||
return "HCI_ERR_UNSUPPORTED_LMP_PARAMETERS";
|
||||
case HCI_ERR_ROLE_CHANGE_NOT_ALLOWED:
|
||||
return "HCI_ERR_ROLE_CHANGE_NOT_ALLOWED";
|
||||
case HCI_ERR_LMP_RESPONSE_TIMEOUT:
|
||||
return "HCI_ERR_LMP_RESPONSE_TIMEOUT";
|
||||
case HCI_ERR_LMP_ERR_TRANS_COLLISION:
|
||||
return "HCI_ERR_LMP_ERR_TRANS_COLLISION";
|
||||
case HCI_ERR_LMP_PDU_NOT_ALLOWED:
|
||||
return "HCI_ERR_LMP_PDU_NOT_ALLOWED";
|
||||
case HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE:
|
||||
return "HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE";
|
||||
case HCI_ERR_UNIT_KEY_USED:
|
||||
return "HCI_ERR_UNIT_KEY_USED";
|
||||
case HCI_ERR_QOS_NOT_SUPPORTED:
|
||||
return "HCI_ERR_QOS_NOT_SUPPORTED";
|
||||
case HCI_ERR_INSTANT_PASSED:
|
||||
return "HCI_ERR_INSTANT_PASSED";
|
||||
case HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED:
|
||||
return "HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED";
|
||||
case HCI_ERR_DIFF_TRANSACTION_COLLISION:
|
||||
return "HCI_ERR_DIFF_TRANSACTION_COLLISION";
|
||||
case HCI_ERR_UNDEFINED_0x2B:
|
||||
return "HCI_ERR_UNDEFINED_0x2B";
|
||||
case HCI_ERR_QOS_UNACCEPTABLE_PARAM:
|
||||
return "HCI_ERR_QOS_UNACCEPTABLE_PARAM";
|
||||
case HCI_ERR_QOS_REJECTED:
|
||||
return "HCI_ERR_QOS_REJECTED";
|
||||
case HCI_ERR_CHAN_CLASSIF_NOT_SUPPORTED:
|
||||
return "HCI_ERR_CHAN_CLASSIF_NOT_SUPPORTED";
|
||||
case HCI_ERR_INSUFFCIENT_SECURITY:
|
||||
return "HCI_ERR_INSUFFCIENT_SECURITY";
|
||||
case HCI_ERR_PARAM_OUT_OF_RANGE:
|
||||
return "HCI_ERR_PARAM_OUT_OF_RANGE";
|
||||
case HCI_ERR_UNDEFINED_0x31:
|
||||
return "HCI_ERR_UNDEFINED_0x31";
|
||||
case HCI_ERR_ROLE_SWITCH_PENDING:
|
||||
return "HCI_ERR_ROLE_SWITCH_PENDING";
|
||||
case HCI_ERR_UNDEFINED_0x33:
|
||||
return "HCI_ERR_UNDEFINED_0x33";
|
||||
case HCI_ERR_RESERVED_SLOT_VIOLATION:
|
||||
return "HCI_ERR_RESERVED_SLOT_VIOLATION";
|
||||
case HCI_ERR_ROLE_SWITCH_FAILED:
|
||||
return "HCI_ERR_ROLE_SWITCH_FAILED";
|
||||
case HCI_ERR_INQ_RSP_DATA_TOO_LARGE:
|
||||
return "HCI_ERR_INQ_RSP_DATA_TOO_LARGE";
|
||||
case HCI_ERR_SIMPLE_PAIRING_NOT_SUPPORTED:
|
||||
return "HCI_ERR_SIMPLE_PAIRING_NOT_SUPPORTED";
|
||||
case HCI_ERR_HOST_BUSY_PAIRING:
|
||||
return "HCI_ERR_HOST_BUSY_PAIRING";
|
||||
case HCI_ERR_REJ_NO_SUITABLE_CHANNEL:
|
||||
return "HCI_ERR_REJ_NO_SUITABLE_CHANNEL";
|
||||
case HCI_ERR_CONTROLLER_BUSY:
|
||||
return "HCI_ERR_CONTROLLER_BUSY";
|
||||
case HCI_ERR_UNACCEPT_CONN_INTERVAL:
|
||||
return "HCI_ERR_UNACCEPT_CONN_INTERVAL";
|
||||
case HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT:
|
||||
return "HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT";
|
||||
case HCI_ERR_CONN_TOUT_DUE_TO_MIC_FAILURE:
|
||||
return "HCI_ERR_CONN_TOUT_DUE_TO_MIC_FAILURE";
|
||||
case HCI_ERR_CONN_FAILED_ESTABLISHMENT:
|
||||
return "HCI_ERR_CONN_FAILED_ESTABLISHMENT";
|
||||
case HCI_ERR_MAC_CONNECTION_FAILED:
|
||||
return "HCI_ERR_MAC_CONNECTION_FAILED";
|
||||
case HCI_ERR_LT_ADDR_ALREADY_IN_USE:
|
||||
return "HCI_ERR_LT_ADDR_ALREADY_IN_USE";
|
||||
case HCI_ERR_LT_ADDR_NOT_ALLOCATED:
|
||||
return "HCI_ERR_LT_ADDR_NOT_ALLOCATED";
|
||||
case HCI_ERR_CLB_NOT_ENABLED:
|
||||
return "HCI_ERR_CLB_NOT_ENABLED";
|
||||
case HCI_ERR_MAX_ERR:
|
||||
return "HCI_ERR_MAX_ERR";
|
||||
case HCI_ERR_ESP_VENDOR_FAIL:
|
||||
return "HCI_ERR_ESP_VENDOR_FAIL";
|
||||
case HCI_HINT_TO_RECREATE_AMP_PHYS_LINK:
|
||||
return "HCI_HINT_TO_RECREATE_AMP_PHYS_LINK";
|
||||
default:
|
||||
return "Invalid HCI status code.";
|
||||
}
|
||||
}
|
||||
#endif /* !UC_BT_STACK_NO_LOG */
|
||||
|
||||
void btm_ble_extendadvcb_init(void)
|
||||
{
|
||||
memset(&extend_adv_cb, 0, sizeof(tBTM_BLE_EXTENDED_CB));
|
||||
@@ -245,9 +95,7 @@ tBTM_STATUS BTM_BleReadPhy(BD_ADDR bd_addr, UINT8 *tx_phy, UINT8 *rx_phy)
|
||||
cb_params.read_phy.status = BTM_ILLEGAL_VALUE;
|
||||
memcpy(cb_params.read_phy.addr, bd_addr, BD_ADDR_LEN);
|
||||
|
||||
if (ble_5_hci_cb) {
|
||||
ble_5_hci_cb(BTM_BLE_5_GAP_READ_PHY_COMPLETE_EVT, &cb_params);
|
||||
}
|
||||
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_READ_PHY_COMPLETE_EVT, &cb_params);
|
||||
BTM_TRACE_ERROR("%s, invalid parameters", __func__);
|
||||
return BTM_ILLEGAL_VALUE;
|
||||
}
|
||||
@@ -265,8 +113,8 @@ tBTM_STATUS BTM_BleSetPreferDefaultPhy(UINT8 tx_phy_mask, UINT8 rx_phy_mask)
|
||||
tBTM_BLE_5_GAP_CB_PARAMS cb_params = {0};
|
||||
|
||||
if ((err = btsnd_hcic_ble_set_prefered_default_phy(all_phys, tx_phy_mask, rx_phy_mask)) != HCI_SUCCESS) {
|
||||
BTM_TRACE_ERROR("%s, fail to send the hci command, the error code = %s(0x%x)",
|
||||
__func__, btm_ble_hci_status_to_str(err), err);
|
||||
BTM_TRACE_ERROR("%s, fail to send the hci command, the error code = 0x%x",
|
||||
__func__, err);
|
||||
status = BTM_HCI_ERROR | err;
|
||||
}
|
||||
|
||||
@@ -286,9 +134,7 @@ tBTM_STATUS BTM_BleSetPreferPhy(BD_ADDR bd_addr, UINT8 all_phys, UINT8 tx_phy_ma
|
||||
|
||||
if (!p_lcb) {
|
||||
cb_params.status = BTM_ILLEGAL_VALUE;
|
||||
if (ble_5_hci_cb) {
|
||||
ble_5_hci_cb(BTM_BLE_5_GAP_SET_PREFERED_PHY_COMPLETE_EVT, &cb_params);
|
||||
}
|
||||
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_SET_PREFERED_PHY_COMPLETE_EVT, &cb_params);
|
||||
BTM_TRACE_ERROR("%s, invalid parameters", __func__);
|
||||
return BTM_ILLEGAL_VALUE;
|
||||
}
|
||||
@@ -347,8 +193,8 @@ tBTM_STATUS BTM_BleSetExtendedAdvRandaddr(UINT8 instance, BD_ADDR rand_addr)
|
||||
|
||||
// set random address
|
||||
if((err = btsnd_hcic_ble_set_extend_rand_address(instance, rand_addr)) != HCI_SUCCESS) {
|
||||
BTM_TRACE_ERROR("%s, fail to send the hci command, the error code = %s(0x%x)",
|
||||
__func__, btm_ble_hci_status_to_str(err), err);
|
||||
BTM_TRACE_ERROR("%s, fail to send the hci command, the error code = 0x%x",
|
||||
__func__, err);
|
||||
status = BTM_HCI_ERROR | err;
|
||||
} else {
|
||||
// set random address success, update address info
|
||||
@@ -1120,7 +966,7 @@ tBTM_STATUS BTM_BleSetExtendedScanParams(tBTM_BLE_EXT_SCAN_PARAMS *params)
|
||||
phy_count++;
|
||||
}
|
||||
|
||||
if (BTM_BleUpdateOwnType(¶ms->own_addr_type, NULL) != 0 ) {
|
||||
if (BTM_BleUpdateOwnType(¶ms->own_addr_type) != 0 ) {
|
||||
status = BTM_ILLEGAL_VALUE;
|
||||
BTM_TRACE_ERROR("LE UpdateOwnType err");
|
||||
goto end;
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#if (defined BLE_INCLUDED && BLE_INCLUDED == TRUE)
|
||||
#include "btm_ble_int.h"
|
||||
#include "stack/smp_api.h"
|
||||
#include "bta_dm_gap.h"
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -50,6 +51,7 @@ static void btm_gen_resolve_paddr_cmpl(tSMP_ENC *p)
|
||||
{
|
||||
tBTM_LE_RANDOM_CB *p_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb;
|
||||
BTM_TRACE_EVENT ("btm_gen_resolve_paddr_cmpl");
|
||||
tBTM_STATUS status = BTM_SUCCESS;
|
||||
|
||||
if (p) {
|
||||
/* set hash to be LSB of rpAddress */
|
||||
@@ -62,10 +64,7 @@ static void btm_gen_resolve_paddr_cmpl(tSMP_ENC *p)
|
||||
|
||||
p_cb->exist_addr_bit |= BTM_BLE_GAP_ADDR_BIT_RESOLVABLE;
|
||||
memcpy(p_cb->resolvale_addr, p_cb->private_addr, BD_ADDR_LEN);
|
||||
if (p_cb->set_local_privacy_cback){
|
||||
(*p_cb->set_local_privacy_cback)(BTM_SET_PRIVACY_SUCCESS);
|
||||
p_cb->set_local_privacy_cback = NULL;
|
||||
}
|
||||
status = BTM_SET_PRIVACY_SUCCESS;
|
||||
|
||||
/* start a periodical timer to refresh random addr */
|
||||
btu_stop_timer_oneshot(&p_cb->raddr_timer_ent);
|
||||
@@ -79,11 +78,12 @@ static void btm_gen_resolve_paddr_cmpl(tSMP_ENC *p)
|
||||
} else {
|
||||
/* random address set failure */
|
||||
BTM_TRACE_DEBUG("set random address failed");
|
||||
if (p_cb->set_local_privacy_cback){
|
||||
(*p_cb->set_local_privacy_cback)(BTM_SET_PRIVACY_FAIL);
|
||||
p_cb->set_local_privacy_cback = NULL;
|
||||
}
|
||||
status = BTM_SET_PRIVACY_FAIL;
|
||||
}
|
||||
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = status;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_SET_PRIVACY_EVT, &cb_params);
|
||||
}
|
||||
/*******************************************************************************
|
||||
**
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "l2c_int.h"
|
||||
#include "stack/hcimsgs.h"
|
||||
//#include "bt_utils.h"
|
||||
#include "bta_dm_gap.h"
|
||||
|
||||
#ifndef BTM_BLE_SCAN_PARAM_TOUT
|
||||
#define BTM_BLE_SCAN_PARAM_TOUT 50 /* 50 seconds */
|
||||
@@ -278,8 +279,10 @@ void btm_enq_wl_dev_operation(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE ad
|
||||
** the white list.
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb)
|
||||
BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type)
|
||||
{
|
||||
BOOLEAN result = TRUE;
|
||||
UINT8 status;
|
||||
#if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
if (addr_type > BLE_ADDR_RANDOM && addr_type != BLE_ADDR_ANONYMOUS)
|
||||
#else
|
||||
@@ -287,10 +290,9 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_
|
||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
{
|
||||
BTM_TRACE_ERROR("%s address type is error, unable to add device", __func__);
|
||||
if (update_wl_cb){
|
||||
update_wl_cb(HCI_ERR_ILLEGAL_PARAMETER_FMT,to_add);
|
||||
}
|
||||
return FALSE;
|
||||
status = HCI_ERR_ILLEGAL_PARAMETER_FMT;
|
||||
result = FALSE;
|
||||
goto _wl_end;
|
||||
}
|
||||
|
||||
BD_ADDR invalid_rand_addr_a, invalid_rand_addr_b;
|
||||
@@ -319,10 +321,9 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_
|
||||
// do nothing
|
||||
} else {
|
||||
BTC_TRACE_ERROR(" controller not support resolvable address");
|
||||
if (update_wl_cb){
|
||||
update_wl_cb(HCI_ERR_ILLEGAL_PARAMETER_FMT,to_add);
|
||||
}
|
||||
return FALSE;
|
||||
status = HCI_ERR_ILLEGAL_PARAMETER_FMT;
|
||||
result = FALSE;
|
||||
goto _wl_end;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -331,10 +332,9 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_
|
||||
|
||||
if (to_add && p_cb->white_list_avail_size == 0) {
|
||||
BTM_TRACE_ERROR("%s Whitelist full, unable to add device", __func__);
|
||||
if (update_wl_cb){
|
||||
update_wl_cb(HCI_ERR_MEMORY_FULL,to_add);
|
||||
}
|
||||
return FALSE;
|
||||
status = HCI_ERR_MEMORY_FULL;
|
||||
result = FALSE;
|
||||
goto _wl_end;
|
||||
}
|
||||
|
||||
#if (BLE_GATT_BGCONN == TRUE)
|
||||
@@ -342,27 +342,21 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_
|
||||
/* added the bd_addr to the connection hash map queue */
|
||||
if(!background_connection_add((bt_bdaddr_t *)bd_addr)) {
|
||||
/* if the bd_addr already exist in whitelist, just callback return TRUE */
|
||||
if (update_wl_cb){
|
||||
update_wl_cb(HCI_SUCCESS,to_add);
|
||||
}
|
||||
return TRUE;
|
||||
status = HCI_SUCCESS;
|
||||
result = TRUE;
|
||||
goto _wl_end;
|
||||
}
|
||||
} else {
|
||||
/* remove the bd_addr to the connection hash map queue */
|
||||
if(!background_connection_remove((bt_bdaddr_t *)bd_addr)){
|
||||
/* if the bd_addr don't exist in whitelist, just callback return TRUE */
|
||||
if (update_wl_cb){
|
||||
update_wl_cb(HCI_SUCCESS,to_add);
|
||||
}
|
||||
return TRUE;
|
||||
status = HCI_SUCCESS;
|
||||
result = TRUE;
|
||||
goto _wl_end;
|
||||
}
|
||||
}
|
||||
#endif // (BLE_GATT_BGCONN == TRUE)
|
||||
|
||||
if (update_wl_cb){
|
||||
//save add whitelist complete callback
|
||||
p_cb->update_wl_cb = update_wl_cb;
|
||||
}
|
||||
/* stop the auto connect */
|
||||
btm_suspend_wl_activity(p_cb->wl_state);
|
||||
/* save the bd_addr to the btm_cb env */
|
||||
@@ -370,6 +364,13 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_
|
||||
/* save the ba_addr to the controller white list */
|
||||
btm_wl_update_to_controller();
|
||||
return TRUE;
|
||||
|
||||
_wl_end:
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.white_list_update.status = status;
|
||||
cb_params.white_list_update.operation = to_add ? BTM_WHITELIST_ADD : BTM_WHITELIST_REMOVE;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_WHITE_LIST_UPDATE_EVT, &cb_params);
|
||||
return result;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -379,20 +380,14 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_
|
||||
** Description This function clears the white list.
|
||||
**
|
||||
*******************************************************************************/
|
||||
void btm_ble_clear_white_list (tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb)
|
||||
void btm_ble_clear_white_list (void)
|
||||
{
|
||||
tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb;
|
||||
|
||||
BTM_TRACE_EVENT ("btm_ble_clear_white_list");
|
||||
btsnd_hcic_ble_clear_white_list();
|
||||
|
||||
#if (BLE_GATT_BGCONN == TRUE)
|
||||
background_connections_clear();
|
||||
#endif // (BLE_GATT_BGCONN == TRUE)
|
||||
|
||||
if (update_wl_cb) {
|
||||
p_cb->update_wl_cb = update_wl_cb;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -417,9 +412,10 @@ void btm_ble_clear_white_list_complete(UINT8 *p_data, UINT16 evt_len)
|
||||
BTM_TRACE_ERROR ("%s failed, status 0x%x\n", __func__, status);
|
||||
}
|
||||
|
||||
if (p_cb->update_wl_cb) {
|
||||
(*p_cb->update_wl_cb)(status, BTM_WHITELIST_CLEAR);
|
||||
}
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.white_list_update.status = status;
|
||||
cb_params.white_list_update.operation = BTM_WHITELIST_CLEAR;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_WHITE_LIST_UPDATE_EVT, &cb_params);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -462,7 +458,6 @@ void btm_ble_periodic_adv_list_init(UINT8 periodic_adv_size)
|
||||
void btm_ble_add_2_white_list_complete(UINT8 status)
|
||||
{
|
||||
BTM_TRACE_EVENT("%s status=%d", __func__, status);
|
||||
tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb;
|
||||
if (status == HCI_SUCCESS) {
|
||||
// --btm_cb.ble_ctr_cb.white_list_avail_size;
|
||||
/*
|
||||
@@ -475,10 +470,10 @@ void btm_ble_add_2_white_list_complete(UINT8 status)
|
||||
*/
|
||||
}
|
||||
// add whitelist complete callback
|
||||
if (p_cb->update_wl_cb)
|
||||
{
|
||||
(*p_cb->update_wl_cb)(status, BTM_WHITELIST_ADD);
|
||||
}
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.white_list_update.status = status;
|
||||
cb_params.white_list_update.operation = BTM_WHITELIST_ADD;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_WHITE_LIST_UPDATE_EVT, &cb_params);
|
||||
|
||||
}
|
||||
|
||||
@@ -491,16 +486,16 @@ void btm_ble_add_2_white_list_complete(UINT8 status)
|
||||
*******************************************************************************/
|
||||
void btm_ble_remove_from_white_list_complete(UINT8 *p, UINT16 evt_len)
|
||||
{
|
||||
tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb;
|
||||
UNUSED(evt_len);
|
||||
BTM_TRACE_EVENT ("%s status=%d", __func__, *p);
|
||||
if (*p == HCI_SUCCESS) {
|
||||
// ++btm_cb.ble_ctr_cb.white_list_avail_size;
|
||||
}
|
||||
if (p_cb->update_wl_cb)
|
||||
{
|
||||
(*p_cb->update_wl_cb)(*p, BTM_WHITELIST_REMOVE);
|
||||
}
|
||||
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.white_list_update.status = *p;
|
||||
cb_params.white_list_update.operation = BTM_WHITELIST_REMOVE;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_WHITE_LIST_UPDATE_EVT, &cb_params);
|
||||
}
|
||||
|
||||
#if (BLE_GATT_BGCONN == TRUE)
|
||||
@@ -619,11 +614,11 @@ BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cb
|
||||
|
||||
/* Process advertising packets only from devices in the white list */
|
||||
/* use passive scan by default */
|
||||
if (!btsnd_hcic_ble_set_scan_params(BTM_BLE_SCAN_MODE_PASS,
|
||||
scan_int,
|
||||
scan_win,
|
||||
p_cb->addr_mgnt_cb.own_addr_type,
|
||||
SP_ADV_WL)) {
|
||||
if (btsnd_hcic_ble_set_scan_params(BTM_BLE_SCAN_MODE_PASS,
|
||||
scan_int,
|
||||
scan_win,
|
||||
p_cb->addr_mgnt_cb.own_addr_type,
|
||||
SP_ADV_WL) != HCI_SUCCESS) {
|
||||
return FALSE;
|
||||
}
|
||||
#if (BLE_TOPOLOGY_CHECK == TRUE)
|
||||
@@ -636,7 +631,7 @@ BOOLEAN btm_ble_start_select_conn(BOOLEAN start, tBTM_BLE_SEL_CBACK *p_select_cb
|
||||
#if BLE_PRIVACY_SPT == TRUE
|
||||
btm_ble_enable_resolving_list_for_platform(BTM_BLE_RL_SCAN);
|
||||
#endif
|
||||
if (!btsnd_hcic_ble_set_scan_enable(TRUE, TRUE)) { /* duplicate filtering enabled */
|
||||
if (btsnd_hcic_ble_set_scan_enable(TRUE, TRUE) != HCI_SUCCESS) { /* duplicate filtering enabled */
|
||||
return FALSE;
|
||||
}
|
||||
/* mark up inquiry status flag */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,6 +32,7 @@
|
||||
#include "btm_int.h"
|
||||
#include "device/controller.h"
|
||||
#include "stack/hcidefs.h"
|
||||
#include "bta_dm_gap.h"
|
||||
|
||||
#define HCI_VENDOR_BLE_RPA_VSC (0x0155 | HCI_GRP_VENDOR_SPECIFIC)
|
||||
|
||||
@@ -294,14 +295,10 @@ void btm_ble_add_resolving_list_entry_complete(UINT8 *p, UINT16 evt_len)
|
||||
{
|
||||
UINT8 status;
|
||||
STREAM_TO_UINT8(status, p);
|
||||
if (btm_cb.devcb.p_add_dev_to_resolving_list_cmpl_cb) {
|
||||
tBTM_ADD_DEV_TO_RESOLVING_LIST_CMPL_CBACK *p_cb = btm_cb.devcb.p_add_dev_to_resolving_list_cmpl_cb;
|
||||
if (p_cb) {
|
||||
(*p_cb)(status);
|
||||
}
|
||||
} else {
|
||||
BTM_TRACE_DEBUG("no resolving list callback");
|
||||
}
|
||||
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = status;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_ADD_DEV_TO_RPA_LIST_EVT, &cb_params);
|
||||
|
||||
BTM_TRACE_DEBUG("%s status = %d", __func__, status);
|
||||
|
||||
@@ -441,19 +438,17 @@ void btm_ble_set_addr_resolution_enable_complete(UINT8 *p, UINT16 evt_len)
|
||||
|
||||
tBTM_LE_RANDOM_CB *random_cb = &btm_cb.ble_ctr_cb.addr_mgnt_cb;
|
||||
|
||||
if (!(random_cb && random_cb->set_local_privacy_cback)) {
|
||||
if (random_cb->cb_is_triggered) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (status == HCI_SUCCESS) {
|
||||
random_cb->set_local_privacy_cback(BTM_SUCCESS);
|
||||
return;
|
||||
} else if (status == HCI_ERR_COMMAND_DISALLOWED) {
|
||||
BTM_TRACE_ERROR("a non-connected activity is ongoing, such as advertising and scanning");
|
||||
} else {
|
||||
BTM_TRACE_ERROR("set local privacy failed");
|
||||
if (status != HCI_SUCCESS) {
|
||||
BTM_TRACE_ERROR("set local privacy failed with status: 0x%x", status);
|
||||
}
|
||||
random_cb->set_local_privacy_cback(BTM_ILLEGAL_VALUE);
|
||||
random_cb->cb_is_triggered = true;
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = (status == HCI_SUCCESS)? BTM_SUCCESS : BTM_ILLEGAL_VALUE;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_SET_PRIVACY_EVT, &cb_params);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -478,11 +473,9 @@ void btm_ble_set_rpa_timeout_complete(UINT8 *p, UINT16 evt_len)
|
||||
|
||||
BTM_TRACE_DEBUG("%s status = %d", __func__, status);
|
||||
|
||||
tBTM_SET_RPA_TIMEOUT_CMPL_CBACK *p_cb = btm_cb.devcb.p_ble_set_rpa_timeout_cmpl_cb;
|
||||
|
||||
if (p_cb) {
|
||||
(*p_cb)(status);
|
||||
}
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = status;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_RPA_TIMEOUT_EVT, &cb_params);
|
||||
|
||||
}
|
||||
|
||||
@@ -507,11 +500,9 @@ void btm_ble_set_privacy_mode_complete(UINT8 *p, UINT16 evt_len)
|
||||
|
||||
BTM_TRACE_DEBUG("%s status = 0x%x", __func__, status);
|
||||
|
||||
tBTM_SET_PRIVACY_MODE_CMPL_CBACK *p_cb = btm_cb.devcb.p_set_privacy_mode_cmpl_cb;
|
||||
|
||||
if (p_cb) {
|
||||
(*p_cb)(status);
|
||||
}
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = status;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_SET_PRIVACY_MODE_COMPLETE_EVT, &cb_params);
|
||||
}
|
||||
|
||||
#if (0)
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#if BLE_INCLUDED == TRUE
|
||||
#include "gatt_int.h"
|
||||
#endif /* BLE_INCLUDED */
|
||||
#include "bta_dm_gap.h"
|
||||
|
||||
//extern thread_t *bt_workqueue_thread;
|
||||
|
||||
@@ -769,7 +770,6 @@ void btm_vsc_complete (UINT8 *p, UINT16 opcode, UINT16 evt_len,
|
||||
tBTM_CMPL_CB *p_vsc_cplt_cback)
|
||||
{
|
||||
#if (BLE_INCLUDED == TRUE)
|
||||
tBTM_BLE_CB *ble_cb = &btm_cb.ble_ctr_cb;
|
||||
switch(opcode) {
|
||||
case HCI_VENDOR_BLE_UPDATE_DUPLICATE_EXCEPTIONAL_LIST: {
|
||||
#if ((BLE_42_SCAN_EN == TRUE) || (BLE_50_EXTEND_SCAN_EN == TRUE))
|
||||
@@ -777,34 +777,38 @@ void btm_vsc_complete (UINT8 *p, UINT16 opcode, UINT16 evt_len,
|
||||
STREAM_TO_UINT8(status, p);
|
||||
STREAM_TO_UINT8(subcode, p);
|
||||
STREAM_TO_UINT32(length, p);
|
||||
if(ble_cb && ble_cb->update_exceptional_list_cmp_cb) {
|
||||
(*ble_cb->update_exceptional_list_cmp_cb)(status, subcode, length, p);
|
||||
}
|
||||
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.exception_list_up.status = status;
|
||||
cb_params.exception_list_up.subcode = subcode;
|
||||
cb_params.exception_list_up.length = length;
|
||||
cb_params.exception_list_up.device_info = p;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_EXCEPTION_LIST_UPDATE_EVT, &cb_params);
|
||||
#endif // ((BLE_42_SCAN_EN == TRUE) || (BLE_50_EXTEND_SCAN_EN == TRUE))
|
||||
break;
|
||||
break;
|
||||
}
|
||||
case HCI_VENDOR_BLE_CLEAR_ADV: {
|
||||
uint8_t status;
|
||||
STREAM_TO_UINT8(status, p);
|
||||
if (ble_cb && ble_cb->inq_var.p_clear_adv_cb) {
|
||||
ble_cb->inq_var.p_clear_adv_cb(status);
|
||||
}
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = status;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_CLEAR_ADV_COMPLETE_EVT, &cb_params);
|
||||
break;
|
||||
}
|
||||
case HCI_VENDOR_BLE_SET_CSA_SUPPORT: {
|
||||
uint8_t status;
|
||||
STREAM_TO_UINT8(status, p);
|
||||
if (ble_cb && ble_cb->set_csa_support_cmpl_cb) {
|
||||
ble_cb->set_csa_support_cmpl_cb(status);
|
||||
}
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = status;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_SET_CSA_SUPPORT_COMPLETE_EVT, &cb_params);
|
||||
break;
|
||||
}
|
||||
case HCI_VENDOR_BLE_SET_EVT_MASK: {
|
||||
uint8_t status;
|
||||
STREAM_TO_UINT8(status, p);
|
||||
if (ble_cb && ble_cb->set_vendor_evt_mask_cmpl_cb) {
|
||||
ble_cb->set_vendor_evt_mask_cmpl_cb(status);
|
||||
}
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.status = status;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_SET_VENDOR_EVT_MASK_COMPLETE_EVT, &cb_params);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -1286,20 +1290,12 @@ void btm_set_afh_channels_complete (UINT8 *p)
|
||||
** Returns status of the operation
|
||||
**
|
||||
*******************************************************************************/
|
||||
tBTM_STATUS BTM_BleSetChannels (BLE_CHANNELS channels, tBTM_CMPL_CB *p_ble_channels_cmpl_cback)
|
||||
tBTM_STATUS BTM_BleSetChannels (BLE_CHANNELS channels)
|
||||
{
|
||||
if (!controller_get_interface()->get_is_ready()) {
|
||||
return (BTM_DEV_RESET);
|
||||
}
|
||||
|
||||
/* Check if set afh already in progress */
|
||||
if (btm_cb.devcb.p_ble_channels_cmpl_cb) {
|
||||
return (BTM_NO_RESOURCES);
|
||||
}
|
||||
|
||||
/* Save callback */
|
||||
btm_cb.devcb.p_ble_channels_cmpl_cb = p_ble_channels_cmpl_cback;
|
||||
|
||||
if (!btsnd_hcic_ble_set_channels (channels)) {
|
||||
return (BTM_NO_RESOURCES);
|
||||
}
|
||||
@@ -1321,30 +1317,24 @@ tBTM_STATUS BTM_BleSetChannels (BLE_CHANNELS channels, tBTM_CMPL_CB *p_ble_chann
|
||||
*******************************************************************************/
|
||||
void btm_ble_set_channels_complete (UINT8 *p)
|
||||
{
|
||||
tBTM_CMPL_CB *p_cb = btm_cb.devcb.p_ble_channels_cmpl_cb;
|
||||
tBTM_BLE_SET_CHANNELS_RESULTS results;
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
|
||||
btu_free_timer (&btm_cb.devcb.ble_channels_timer);
|
||||
|
||||
/* If there is a callback address for setting AFH channels, call it */
|
||||
btm_cb.devcb.p_ble_channels_cmpl_cb = NULL;
|
||||
STREAM_TO_UINT8 (cb_params.set_channels.hci_status, p);
|
||||
|
||||
if (p_cb) {
|
||||
STREAM_TO_UINT8 (results.hci_status, p);
|
||||
|
||||
switch (results.hci_status){
|
||||
case HCI_SUCCESS:
|
||||
results.status = BTM_SUCCESS;
|
||||
break;
|
||||
case HCI_ERR_UNSUPPORTED_VALUE:
|
||||
case HCI_ERR_ILLEGAL_PARAMETER_FMT:
|
||||
results.status = BTM_ILLEGAL_VALUE;
|
||||
break;
|
||||
default:
|
||||
results.status = BTM_ERR_PROCESSING;
|
||||
break;
|
||||
}
|
||||
(*p_cb)(&results);
|
||||
switch (cb_params.set_channels.hci_status){
|
||||
case HCI_SUCCESS:
|
||||
cb_params.set_channels.status = BTM_SUCCESS;
|
||||
break;
|
||||
case HCI_ERR_UNSUPPORTED_VALUE:
|
||||
case HCI_ERR_ILLEGAL_PARAMETER_FMT:
|
||||
cb_params.set_channels.status = BTM_ILLEGAL_VALUE;
|
||||
break;
|
||||
default:
|
||||
cb_params.set_channels.status = BTM_ERR_PROCESSING;
|
||||
break;
|
||||
}
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_SET_CHANNELS_COMPLETE_EVT, &cb_params);
|
||||
}
|
||||
#endif /// BLE_INCLUDED == TRUE
|
||||
|
||||
@@ -88,7 +88,6 @@ void btm_init (void)
|
||||
btm_dev_init(); /* Device Manager Structures & HCI_Reset */
|
||||
#if BLE_INCLUDED == TRUE
|
||||
btm_ble_lock_init();
|
||||
btm_ble_sem_init();
|
||||
#if ((SMP_INCLUDED == TRUE) || (BLE_PRIVACY_SPT == TRUE))
|
||||
btm_cb.addr_res_en = TRUE;
|
||||
#endif // ((SMP_INCLUDED == TRUE) || (BLE_PRIVACY_SPT == TRUE))
|
||||
@@ -131,7 +130,6 @@ void btm_free(void)
|
||||
#endif
|
||||
#if BLE_INCLUDED == TRUE
|
||||
btm_ble_lock_free();
|
||||
btm_ble_sem_free();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -157,9 +157,6 @@ typedef struct {
|
||||
UINT16 adv_interval_max;
|
||||
tBTM_BLE_AFP afp; /* advertising filter policy */
|
||||
tBTM_BLE_SFP sfp; /* scanning filter policy */
|
||||
tBTM_START_ADV_CMPL_CBACK *p_adv_cb;
|
||||
tBTM_START_STOP_ADV_CMPL_CBACK *p_stop_adv_cb;
|
||||
tBTM_CLEAR_ADV_CMPL_CBACK *p_clear_adv_cb;
|
||||
tBLE_ADDR_TYPE adv_addr_type;
|
||||
UINT8 evt_type;
|
||||
UINT8 adv_mode;
|
||||
@@ -206,7 +203,7 @@ typedef struct {
|
||||
tBTM_BLE_ADDR_CBACK *p_generate_cback;
|
||||
void *p;
|
||||
TIMER_LIST_ENT raddr_timer_ent;
|
||||
tBTM_SET_LOCAL_PRIVACY_CBACK *set_local_privacy_cback;
|
||||
bool cb_is_triggered;
|
||||
} tBTM_LE_RANDOM_CB;
|
||||
|
||||
#define BTM_BLE_MAX_BG_CONN_DEV_NUM 10
|
||||
@@ -358,7 +355,6 @@ typedef struct {
|
||||
/* periodic list information */
|
||||
UINT8 periodic_adv_list_size;
|
||||
#endif //#if (BLE_50_EXTEND_SYNC_EN == TRUE)
|
||||
tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb;
|
||||
tBTM_BLE_WL_STATE wl_state;
|
||||
|
||||
fixed_queue_t *conn_pending_q;
|
||||
@@ -386,13 +382,6 @@ typedef struct {
|
||||
tBTM_BLE_STATE_MASK cur_states; /* bit mask of tBTM_BLE_STATE */
|
||||
UINT8 link_count[2]; /* total link count master and slave*/
|
||||
#endif // (BLE_TOPOLOGY_CHECK == TRUE)
|
||||
#if ((BLE_42_SCAN_EN == TRUE) || (BLE_50_EXTEND_SCAN_EN == TRUE))
|
||||
tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK *update_exceptional_list_cmp_cb;
|
||||
#endif // ((BLE_42_SCAN_EN == TRUE) || (BLE_50_EXTEND_SCAN_EN == TRUE))
|
||||
#if (BLE_VENDOR_HCI_EN == TRUE)
|
||||
tBTM_SET_CSA_SUPPORT_CMPL_CBACK *set_csa_support_cmpl_cb;
|
||||
tBTM_SET_VENDOR_EVT_MASK_CBACK *set_vendor_evt_mask_cmpl_cb;
|
||||
#endif // (BLE_VENDOR_HCI_EN == TRUE)
|
||||
} tBTM_BLE_CB;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -464,10 +453,10 @@ void btm_ble_update_sec_key_size(BD_ADDR bd_addr, UINT8 enc_key_size);
|
||||
UINT8 btm_ble_read_sec_key_size(BD_ADDR bd_addr);
|
||||
|
||||
/* white list function */
|
||||
BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb);
|
||||
BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type);
|
||||
void btm_update_scanner_filter_policy(tBTM_BLE_SFP scan_policy);
|
||||
void btm_update_adv_filter_policy(tBTM_BLE_AFP adv_policy);
|
||||
void btm_ble_clear_white_list (tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb);
|
||||
void btm_ble_clear_white_list (void);
|
||||
void btm_read_white_list_size_complete(UINT8 *p, UINT16 evt_len);
|
||||
void btm_ble_add_2_white_list_complete(UINT8 status);
|
||||
void btm_ble_remove_from_white_list_complete(UINT8 *p, UINT16 evt_len);
|
||||
|
||||
@@ -158,12 +158,10 @@ UINT8 conn_addr_type; /* local device address type for this co
|
||||
BD_ADDR active_remote_addr; /* remote address used on this connection */
|
||||
UINT8 active_remote_addr_type; /* local device address type for this connection */
|
||||
BD_FEATURES peer_le_features; /* Peer LE Used features mask for the device */
|
||||
tBTM_SET_PKT_DATA_LENGTH_CBACK *p_set_pkt_data_cback;
|
||||
tBTM_LE_SET_PKT_DATA_LENGTH_PARAMS data_length_params;
|
||||
BOOLEAN data_len_updating;
|
||||
// data len update cmd cache
|
||||
BOOLEAN data_len_waiting;
|
||||
tBTM_SET_PKT_DATA_LENGTH_CBACK *p_set_data_len_cback_waiting;
|
||||
UINT16 tx_len_waiting;
|
||||
#endif
|
||||
tBTM_PM_MCB *p_pm_mode_db; /* Pointer to PM mode control block per ACL link */
|
||||
@@ -241,7 +239,7 @@ tBTM_CMPL_CB *p_write_iscan_tx_pwr_lvl_cmpl_cb; /* Callback function t
|
||||
#endif // (CLASSIC_BT_INCLUDED == TRUE)
|
||||
|
||||
#if BLE_INCLUDED == TRUE
|
||||
tBTM_CMPL_CB *p_ble_ch_map_cmpl_cb; /* Callback function to be called when */
|
||||
BOOLEAN is_ch_map_cb;
|
||||
#endif // #if BLE_INCLUDED == TRUE
|
||||
/* read channel map function completes */
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
@@ -292,15 +290,6 @@ DEV_CLASS dev_class; /* Local device class
|
||||
#if BLE_INCLUDED == TRUE
|
||||
|
||||
TIMER_LIST_ENT ble_channels_timer;
|
||||
tBTM_CMPL_CB *p_ble_channels_cmpl_cb; /* Callback function to be called When
|
||||
ble set host channels is completed */
|
||||
|
||||
tBTM_SET_RPA_TIMEOUT_CMPL_CBACK *p_ble_set_rpa_timeout_cmpl_cb; /* Callback function to be called When
|
||||
ble set rpa timeout is completed */
|
||||
|
||||
tBTM_ADD_DEV_TO_RESOLVING_LIST_CMPL_CBACK *p_add_dev_to_resolving_list_cmpl_cb;
|
||||
|
||||
tBTM_SET_PRIVACY_MODE_CMPL_CBACK *p_set_privacy_mode_cmpl_cb;
|
||||
|
||||
tBTM_CMPL_CB *p_le_test_cmd_cmpl_cb; /* Callback function to be called when
|
||||
LE test mode command has been sent successfully */
|
||||
@@ -1053,14 +1042,6 @@ typedef struct {
|
||||
#endif
|
||||
} tBTM_CB;
|
||||
|
||||
typedef struct{
|
||||
//connection parameters update callback
|
||||
tBTM_UPDATE_CONN_PARAM_CBACK *update_conn_param_cb;
|
||||
// setting packet data length callback
|
||||
tBTM_SET_PKT_DATA_LENGTH_CBACK *set_pkt_data_length_cb;
|
||||
}tBTM_CallbackFunc;
|
||||
|
||||
extern tBTM_CallbackFunc conn_callback_func;
|
||||
/* security action for L2CAP COC channels */
|
||||
#define BTM_SEC_OK 1
|
||||
#define BTM_SEC_ENCRYPT 2 /* encrypt the link with current key */
|
||||
@@ -1365,10 +1346,6 @@ void btm_sec_clr_temp_auth_service (BD_ADDR bda);
|
||||
|
||||
void btm_ble_lock_init(void);
|
||||
|
||||
void btm_ble_sem_init(void);
|
||||
|
||||
void btm_ble_sem_free(void);
|
||||
|
||||
void btm_ble_lock_free(void);
|
||||
|
||||
void btm_sec_handle_remote_legacy_auth_cmp(UINT16 handle);
|
||||
|
||||
@@ -254,20 +254,6 @@ static void btu_ble_cs_subevt_result_evt(UINT8 *p, UINT8 evt_len);
|
||||
static void btu_ble_cs_subevt_result_continue_evt(UINT8 *p, UINT8 evt_len);
|
||||
#endif // (BT_BLE_FEAT_CHANNEL_SOUNDING == TRUE)
|
||||
|
||||
#if (BLE_42_ADV_EN == TRUE)
|
||||
extern osi_sem_t adv_enable_sem;
|
||||
extern osi_sem_t adv_data_sem;
|
||||
extern osi_sem_t adv_param_sem;
|
||||
extern uint8_t adv_enable_status;
|
||||
extern uint8_t adv_data_status;
|
||||
extern uint8_t adv_param_status;
|
||||
#endif // #if (BLE_42_ADV_EN == TRUE)
|
||||
#if (BLE_42_SCAN_EN == TRUE)
|
||||
extern osi_sem_t scan_enable_sem;
|
||||
extern osi_sem_t scan_param_sem;
|
||||
extern uint8_t scan_enable_status;
|
||||
extern uint8_t scan_param_status;
|
||||
#endif // #if (BLE_42_SCAN_EN == TRUE)
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -726,7 +712,7 @@ void btu_hcif_send_cmd (UNUSED_ATTR UINT8 controller_id, BT_HDR *p_buf)
|
||||
#endif
|
||||
}
|
||||
|
||||
#if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
#if ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
UINT8 btu_hcif_send_cmd_sync (UINT8 controller_id, BT_HDR *p_buf)
|
||||
{
|
||||
if (!p_buf) {
|
||||
@@ -777,8 +763,7 @@ UINT8 btu_hcif_send_cmd_sync (UINT8 controller_id, BT_HDR *p_buf)
|
||||
#endif
|
||||
return btsnd_hcic_ble_get_status();
|
||||
}
|
||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
|
||||
#endif // ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -1523,52 +1508,14 @@ static void btu_hcif_command_complete_evt_on_task(BT_HDR *event)
|
||||
|
||||
static void btu_hcif_command_complete_evt(BT_HDR *response, void *context)
|
||||
{
|
||||
#if (BLE_INCLUDED == TRUE)
|
||||
command_opcode_t opcode;
|
||||
uint8_t *stream = response->data + response->offset + 3;
|
||||
STREAM_TO_UINT16(opcode, stream);
|
||||
switch (opcode) {
|
||||
#if (BLE_42_ADV_EN == TRUE)
|
||||
case HCI_BLE_WRITE_ADV_DATA:
|
||||
adv_data_status = *stream;
|
||||
osi_sem_give(&adv_data_sem);
|
||||
break;
|
||||
case HCI_BLE_WRITE_SCAN_RSP_DATA:
|
||||
adv_data_status = *stream;
|
||||
osi_sem_give(&adv_data_sem);
|
||||
break;
|
||||
case HCI_BLE_WRITE_ADV_ENABLE: {
|
||||
adv_enable_status = *stream;
|
||||
osi_sem_give(&adv_enable_sem);
|
||||
break;
|
||||
}
|
||||
case HCI_BLE_WRITE_ADV_PARAMS:
|
||||
adv_param_status = *stream;
|
||||
osi_sem_give(&adv_param_sem);
|
||||
break;
|
||||
#endif // #if (BLE_42_ADV_EN == TRUE)
|
||||
#if (BLE_42_SCAN_EN == TRUE)
|
||||
case HCI_BLE_WRITE_SCAN_PARAMS:
|
||||
scan_param_status = *stream;
|
||||
osi_sem_give(&scan_param_sem);
|
||||
break;
|
||||
case HCI_BLE_WRITE_SCAN_ENABLE:
|
||||
scan_enable_status = *stream;
|
||||
osi_sem_give(&scan_enable_sem);
|
||||
break;
|
||||
#endif // #if (BLE_42_SCAN_EN == TRUE)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
BT_HDR *event = osi_calloc(sizeof(BT_HDR) + sizeof(command_complete_hack_t));
|
||||
command_complete_hack_t *hack = (command_complete_hack_t *)&event->data[0];
|
||||
#if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
#if ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
UINT8 status = 0;
|
||||
stream = response->data + response->offset + 3 + 2; // 2 to skip the event headers, 1 to skip the command credits, 2 to opcode.
|
||||
uint8_t *stream = response->data + response->offset + 3 + 2; // 2 to skip the event headers, 1 to skip the command credits, 2 to opcode.
|
||||
STREAM_TO_UINT8(status, stream);
|
||||
btsnd_hci_ble_set_status(status);
|
||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
#endif // #if ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
HCI_TRACE_DEBUG("btu_hcif_command_complete_evt\n");
|
||||
|
||||
hack->callback = btu_hcif_command_complete_evt_on_task;
|
||||
|
||||
@@ -2542,7 +2542,7 @@ BOOLEAN gatt_add_bg_dev_list(tGATT_REG *p_reg, BD_ADDR bd_addr, BOOLEAN is_init
|
||||
|
||||
if (i == 0) {
|
||||
// To check, we do not support background connection, code will not be called here
|
||||
ret = BTM_BleUpdateAdvWhitelist(TRUE, bd_addr, 0, NULL);
|
||||
ret = BTM_BleUpdateAdvWhitelist(TRUE, bd_addr, 0);
|
||||
} else {
|
||||
ret = TRUE;
|
||||
}
|
||||
@@ -2683,7 +2683,7 @@ BOOLEAN gatt_remove_bg_dev_from_list(tGATT_REG *p_reg, BD_ADDR bd_addr, BOOLEAN
|
||||
|
||||
if (p_dev->listen_gif[0] == 0) {
|
||||
// To check, we do not support background connection, code will not be called here
|
||||
ret = BTM_BleUpdateAdvWhitelist(FALSE, p_dev->remote_bda, 0, NULL);
|
||||
ret = BTM_BleUpdateAdvWhitelist(FALSE, p_dev->remote_bda, 0);
|
||||
} else {
|
||||
ret = TRUE;
|
||||
}
|
||||
@@ -2745,7 +2745,7 @@ void gatt_deregister_bgdev_list(tGATT_IF gatt_if)
|
||||
|
||||
if (p_dev_list->listen_gif[0] == 0) {
|
||||
// To check, we do not support background connection, code will not be called here
|
||||
BTM_BleUpdateAdvWhitelist(FALSE, p_dev_list->remote_bda, 0, NULL);
|
||||
BTM_BleUpdateAdvWhitelist(FALSE, p_dev_list->remote_bda, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
#if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
#if ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
static BlE_SYNC ble_sync_info;
|
||||
|
||||
void btsnd_hcic_ble_sync_sem_init(void)
|
||||
@@ -63,7 +63,7 @@ void btsnd_hci_ble_set_status(UINT8 hci_status)
|
||||
ble_sync_info.status = hci_status;
|
||||
return;
|
||||
}
|
||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
#endif // ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
|
||||
#if (defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)
|
||||
|
||||
@@ -111,7 +111,7 @@ BOOLEAN btsnd_hcic_ble_set_random_addr (BD_ADDR random_bda)
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max,
|
||||
UINT8 btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max,
|
||||
UINT8 adv_type, UINT8 addr_type_own,
|
||||
UINT8 addr_type_dir, BD_ADDR direct_bda,
|
||||
UINT8 channel_map, UINT8 adv_filter_policy)
|
||||
@@ -119,7 +119,7 @@ BOOLEAN btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max,
|
||||
BT_HDR *p;
|
||||
UINT8 *pp;
|
||||
if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_ADV_PARAMS)) == NULL) {
|
||||
return (FALSE);
|
||||
return HCI_ERR_MEMORY_FULL;
|
||||
}
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
@@ -139,9 +139,9 @@ BOOLEAN btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max,
|
||||
UINT8_TO_STREAM (pp, channel_map);
|
||||
UINT8_TO_STREAM (pp, adv_filter_policy);
|
||||
|
||||
btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
return (TRUE);
|
||||
return btu_hcif_send_cmd_sync (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
}
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_read_adv_chnl_tx_power (void)
|
||||
{
|
||||
BT_HDR *p;
|
||||
@@ -164,7 +164,7 @@ BOOLEAN btsnd_hcic_ble_read_adv_chnl_tx_power (void)
|
||||
|
||||
}
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data)
|
||||
UINT8 btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data)
|
||||
{
|
||||
BT_HDR *p;
|
||||
UINT8 *pp;
|
||||
@@ -174,7 +174,7 @@ BOOLEAN btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data)
|
||||
}
|
||||
|
||||
if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA + 1)) == NULL) {
|
||||
return (FALSE);
|
||||
return HCI_ERR_MEMORY_FULL;
|
||||
}
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
@@ -197,17 +197,16 @@ BOOLEAN btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data)
|
||||
|
||||
ARRAY_TO_STREAM (pp, p_data, data_len);
|
||||
}
|
||||
btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
|
||||
return (TRUE);
|
||||
return btu_hcif_send_cmd_sync (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
}
|
||||
BOOLEAN btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp)
|
||||
|
||||
UINT8 btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp)
|
||||
{
|
||||
BT_HDR *p;
|
||||
UINT8 *pp;
|
||||
|
||||
if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP + 1)) == NULL) {
|
||||
return (FALSE);
|
||||
return HCI_ERR_MEMORY_FULL;
|
||||
}
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
@@ -232,18 +231,16 @@ BOOLEAN btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp)
|
||||
ARRAY_TO_STREAM (pp, p_scan_rsp, data_len);
|
||||
}
|
||||
|
||||
btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
|
||||
return (TRUE);
|
||||
return btu_hcif_send_cmd_sync (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
}
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable)
|
||||
UINT8 btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable)
|
||||
{
|
||||
BT_HDR *p;
|
||||
UINT8 *pp;
|
||||
|
||||
if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_ADV_ENABLE)) == NULL) {
|
||||
return (FALSE);
|
||||
return HCI_ERR_MEMORY_FULL;
|
||||
}
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
@@ -256,10 +253,10 @@ BOOLEAN btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable)
|
||||
|
||||
UINT8_TO_STREAM (pp, adv_enable);
|
||||
|
||||
btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
return (TRUE);
|
||||
return btu_hcif_send_cmd_sync (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
}
|
||||
BOOLEAN btsnd_hcic_ble_set_scan_params (UINT8 scan_type,
|
||||
|
||||
UINT8 btsnd_hcic_ble_set_scan_params (UINT8 scan_type,
|
||||
UINT16 scan_int, UINT16 scan_win,
|
||||
UINT8 addr_type_own, UINT8 scan_filter_policy)
|
||||
{
|
||||
@@ -267,7 +264,7 @@ BOOLEAN btsnd_hcic_ble_set_scan_params (UINT8 scan_type,
|
||||
UINT8 *pp;
|
||||
|
||||
if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_PARAM)) == NULL) {
|
||||
return (FALSE);
|
||||
return HCI_ERR_MEMORY_FULL;
|
||||
}
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
@@ -284,17 +281,16 @@ BOOLEAN btsnd_hcic_ble_set_scan_params (UINT8 scan_type,
|
||||
UINT8_TO_STREAM (pp, addr_type_own);
|
||||
UINT8_TO_STREAM (pp, scan_filter_policy);
|
||||
|
||||
btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
return (TRUE);
|
||||
return btu_hcif_send_cmd_sync (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
}
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_scan_enable (UINT8 scan_enable, UINT8 duplicate)
|
||||
UINT8 btsnd_hcic_ble_set_scan_enable (UINT8 scan_enable, UINT8 duplicate)
|
||||
{
|
||||
BT_HDR *p;
|
||||
UINT8 *pp;
|
||||
|
||||
if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_BLE_WRITE_SCAN_ENABLE)) == NULL) {
|
||||
return (FALSE);
|
||||
return HCI_ERR_MEMORY_FULL;
|
||||
}
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
@@ -308,8 +304,7 @@ BOOLEAN btsnd_hcic_ble_set_scan_enable (UINT8 scan_enable, UINT8 duplicate)
|
||||
UINT8_TO_STREAM (pp, scan_enable);
|
||||
UINT8_TO_STREAM (pp, duplicate);
|
||||
|
||||
btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
return (TRUE);
|
||||
return btu_hcif_send_cmd_sync (LOCAL_BR_EDR_CONTROLLER_ID, p);
|
||||
}
|
||||
|
||||
/* link layer connection management commands */
|
||||
@@ -1103,6 +1098,16 @@ BOOLEAN btsnd_hcic_ble_set_channels (BLE_CHANNELS channels)
|
||||
p->offset = 0; \
|
||||
} while(0)
|
||||
|
||||
/* For UINT8-returning functions that call btu_hcif_send_cmd_sync (return HCI status) */
|
||||
#define HCIC_BLE_CMD_CREATED_U8(p, pp, size) do{\
|
||||
if ((p = HCI_GET_CMD_BUF(size)) == NULL) { \
|
||||
return HCI_ERR_MEMORY_FULL; \
|
||||
} \
|
||||
pp = p->data; \
|
||||
p->len = HCIC_PREAMBLE_SIZE + size;\
|
||||
p->offset = 0; \
|
||||
} while(0)
|
||||
|
||||
#if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_read_phy(UINT16 conn_handle)
|
||||
@@ -1129,7 +1134,7 @@ UINT8 btsnd_hcic_ble_set_prefered_default_phy(UINT8 all_phys,
|
||||
UINT8 *pp;
|
||||
|
||||
HCI_TRACE_EVENT("%s, all_phys = %d, tx_phys = %d, rx_phys = %d", __func__, all_phys, tx_phys, rx_phys);
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_BLE_SET_DEF_PHY);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_BLE_SET_DEF_PHY);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_DEFAULT_PHY);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_BLE_SET_DEF_PHY);
|
||||
@@ -1217,7 +1222,7 @@ UINT8 btsnd_hcic_ble_set_extend_rand_address(UINT8 adv_handle, BD_ADDR rand_addr
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s, adv_handle = %d", __func__, adv_handle);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_EXT_RAND_ADDR);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_EXT_RAND_ADDR);
|
||||
|
||||
UINT16_TO_STREAM (pp, HCI_BLE_SET_ADV_RAND_ADDR);
|
||||
UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_EXT_RAND_ADDR);
|
||||
@@ -1249,7 +1254,7 @@ UINT8 btsnd_hcic_ble_set_ext_adv_params_v2(UINT8 adv_handle, UINT16 properties,
|
||||
primary_adv_phy, secondary_adv_max_skip, secondary_adv_phy, adv_sid, scan_req_ntf_enable,
|
||||
primary_adv_phy_options, secondary_adv_phy_options);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_EXT_ADV_SET_PARAMS + 2);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_EXT_ADV_SET_PARAMS + 2);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_EXT_ADV_PARAM_V2);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_EXT_ADV_SET_PARAMS + 2);
|
||||
@@ -1295,7 +1300,7 @@ UINT8 btsnd_hcic_ble_set_ext_adv_params(UINT8 adv_handle, UINT16 properties, UIN
|
||||
channel_map, own_addr_type, peer_addr_type, adv_filter_policy, adv_tx_power,
|
||||
primary_adv_phy, secondary_adv_max_skip, secondary_adv_phy, adv_sid, scan_req_ntf_enable);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_EXT_ADV_SET_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_EXT_ADV_SET_PARAMS);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_EXT_ADV_PARAM);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_EXT_ADV_SET_PARAMS);
|
||||
@@ -1333,7 +1338,7 @@ UINT8 btsnd_hcic_ble_set_ext_adv_data(UINT8 adv_handle,
|
||||
data_len = HCIC_PARAM_SIZE_EXT_ADV_WRITE_DATA;
|
||||
}
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, data_len + 4);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, data_len + 4);
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_EXT_ADV_DATA);
|
||||
UINT8_TO_STREAM(pp, data_len + 4);
|
||||
UINT8_TO_STREAM(pp, adv_handle);
|
||||
@@ -1365,7 +1370,7 @@ UINT8 btsnd_hcic_ble_set_ext_adv_scan_rsp_data(UINT8 adv_handle,
|
||||
data_len = HCIC_PARAM_SIZE_EXT_ADV_WRITE_DATA;
|
||||
}
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, data_len + 4);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, data_len + 4);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_EXT_SCAN_RSP_DATA);
|
||||
UINT8_TO_STREAM(pp, data_len + 4);
|
||||
@@ -1388,7 +1393,7 @@ UINT8 btsnd_hcic_ble_ext_adv_enable(UINT8 enable, UINT8 num_of_sets, UINT8 *adv_
|
||||
BT_HDR *p;
|
||||
UINT8 *pp;
|
||||
UINT8 ext_adv_size = num_of_sets*4 + 2;
|
||||
HCIC_BLE_CMD_CREATED(p, pp, ext_adv_size);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, ext_adv_size);
|
||||
|
||||
HCI_TRACE_EVENT("%s, enable = %d, num_of_sets = %d", __func__, enable, num_of_sets);
|
||||
|
||||
@@ -1417,7 +1422,7 @@ UINT8 btsnd_hcic_ble_read_max_adv_len(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_READ_MAX_ADV_SIZE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_READ_MAX_ADV_SIZE);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_RD_MAX_ADV_DATA_LEN);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_READ_MAX_ADV_SIZE);
|
||||
@@ -1431,7 +1436,7 @@ UINT8 btsnd_hcic_ble_read_num_support_adv_set(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_NUM_SUPPORT_ADV_SET);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_NUM_SUPPORT_ADV_SET);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_RD_NUM_OF_ADV_SETS);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_NUM_SUPPORT_ADV_SET);
|
||||
@@ -1445,7 +1450,7 @@ UINT8 btsnd_hcic_ble_remove_adv_set(UINT8 adv_handle)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s, adv_handle = %d", __func__, adv_handle);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_REMOVE_ADV_SET);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_REMOVE_ADV_SET);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_REMOVE_ADV_SET);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_REMOVE_ADV_SET);
|
||||
@@ -1460,7 +1465,7 @@ UINT8 btsnd_hcic_ble_clear_adv_set(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_CLEAR_ADV_SET);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_CLEAR_ADV_SET);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_CLEAR_ADV_SETS);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_CLEAR_ADV_SET);
|
||||
@@ -1481,7 +1486,7 @@ UINT8 btsnd_hcic_ble_set_periodic_adv_params_v2(UINT8 adv_handle, UINT16 interva
|
||||
HCI_TRACE_EVENT("%s, adv_handle = %d, interval_min = %d, interval_max = %d, propertics = %d num_subevents = %d subevent_interval = %d rsp_slot_delay %d rsp_slot_spacing %d num_rsp_slots %d",
|
||||
__func__, adv_handle, interval_min, interval_max, propertics, num_subevents, subevent_interval, rsp_slot_delay, rsp_slot_spacing, num_rsp_slots);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_PERIODIC_ADV_PARAMS_V2);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_PERIODIC_ADV_PARAMS_V2);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_PERIOD_ADV_PARAMS_V2);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_SET_PERIODIC_ADV_PARAMS_V2);
|
||||
@@ -1511,7 +1516,7 @@ UINT8 btsnd_hcic_ble_set_periodic_adv_params(UINT8 adv_handle,
|
||||
HCI_TRACE_EVENT("%s, adv_handle = %d, interval_min = %d, interval_max = %d, propertics = %d",
|
||||
__func__, adv_handle, interval_min, interval_max, propertics);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_PERIODIC_ADV_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_PERIODIC_ADV_PARAMS);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_PERIOD_ADV_PARAMS);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_SET_PERIODIC_ADV_PARAMS);
|
||||
@@ -1542,7 +1547,7 @@ UINT8 btsnd_hcic_ble_set_periodic_adv_data(UINT8 adv_handle,
|
||||
len = HCIC_PARAM_SIZE_WRITE_PERIODIC_ADV_DATA;
|
||||
}
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, len + 3);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, len + 3);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_PERIOD_ADV_DATA);
|
||||
UINT8_TO_STREAM(pp, len + 3);
|
||||
@@ -1566,7 +1571,7 @@ UINT8 btsnd_hcic_ble_periodic_adv_enable(UINT8 enable, UINT8 adv_handle)
|
||||
HCI_TRACE_EVENT("%s, enable = %d, adv_handle = %d",
|
||||
__func__, enable, adv_handle);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_ENABLE);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_PERIOD_ADV_ENABLE);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_PERIODIC_ADV_ENABLE);
|
||||
@@ -1589,7 +1594,7 @@ UINT8 btsnd_hcic_ble_set_ext_scan_params(UINT8 own_addr_type, UINT8 filter_polic
|
||||
__func__, own_addr_type, filter_policy, phy_mask, phy_count);
|
||||
UINT8 params_size = HCIC_PARAM_SIZE_SET_EXT_SCAN_PARAMS + phy_count*5;
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, params_size);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, params_size);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_EXT_SCAN_PARAMS);
|
||||
UINT8_TO_STREAM(pp, params_size);
|
||||
@@ -1615,7 +1620,7 @@ UINT8 btsnd_hcic_ble_ext_scan_enable(UINT8 enable, UINT8 filter_dups,
|
||||
HCI_TRACE_EVENT("%s, enable = %d, filter_dups = %d, duration = %d, period = %d",
|
||||
__func__, enable, filter_dups, duration, period);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_EXT_SCAN_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_EXT_SCAN_ENABLE);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_SET_EXT_SCAN_ENABLE);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_EXT_SCAN_ENABLE);
|
||||
@@ -1809,7 +1814,7 @@ UINT8 btsnd_hcic_ble_periodic_adv_create_sync_cancel(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_CREATE_SYNC_CANCEL);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_CREATE_SYNC_CANCEL);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_PERIOD_ADV_CREATE_SYNC_CANCEL);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_PERIODIC_ADV_CREATE_SYNC_CANCEL);
|
||||
@@ -1823,7 +1828,7 @@ UINT8 btsnd_hcic_ble_periodic_adv_term_sync(UINT16 sync_handle)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s, sync_handle = %d", __func__, sync_handle);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_TERM_SYNC);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_TERM_SYNC);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_PERIOD_ADV_TERM_SYNC);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_PERIODIC_ADV_TERM_SYNC);
|
||||
@@ -1841,7 +1846,7 @@ UINT8 btsnd_hcic_ble_add_dev_to_periodic_adv_list(UINT8 adv_addr_type, BD_ADDR a
|
||||
HCI_TRACE_EVENT("%s, adv_addr_type = %d, adv_sid = %d", __func__, adv_addr_type, adv_sid);
|
||||
esp_log_buffer_hex_internal("addr", adv_addr, sizeof(BD_ADDR), ESP_LOG_WARN);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ADD_DEV_TO_PERIODIC_ADV_LIST);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ADD_DEV_TO_PERIODIC_ADV_LIST);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_ADV_DEV_TO_PERIOD_ADV_LIST);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_ADD_DEV_TO_PERIODIC_ADV_LIST);
|
||||
@@ -1860,7 +1865,7 @@ UINT8 btsnd_hcic_ble_rm_dev_from_periodic_adv_list(UINT8 adv_addr_type, BD_ADDR
|
||||
HCI_TRACE_EVENT("%s, adv_addr_type = %d, adv_sid = %d", __func__, adv_addr_type, adv_sid);
|
||||
esp_log_buffer_hex_internal("addr", adv_addr, sizeof(BD_ADDR), ESP_LOG_WARN);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_RM_DEV_FROM_PERIODIC_ADV_LIST);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_RM_DEV_FROM_PERIODIC_ADV_LIST);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_REMOVE_DEV_FROM_PERIOD_ADV_LIST);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_RM_DEV_FROM_PERIODIC_ADV_LIST);
|
||||
@@ -1878,7 +1883,7 @@ UINT8 btsnd_hcic_ble_clear_periodic_adv_list(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_CLEAR_PERIODIC_ADV_LIST);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_CLEAR_PERIODIC_ADV_LIST);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_CLEAR_PERIOD_ADV_LIST);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_CLEAR_PERIODIC_ADV_LIST);
|
||||
@@ -1892,7 +1897,7 @@ UINT8 btsnd_hcic_ble_read_periodic_adv_list_size(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_READ_PERIODIC_ADV_LIST);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_READ_PERIODIC_ADV_LIST);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_RD_PERIOD_ADV_LIST_SIZE);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_READ_PERIODIC_ADV_LIST);
|
||||
@@ -1907,7 +1912,7 @@ UINT8 btsnd_hcic_ble_read_trans_power(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_READ_TRANS_POWER);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_READ_TRANS_POWER);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_RD_TRANSMIT_POWER);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_READ_TRANS_POWER);
|
||||
@@ -1921,7 +1926,7 @@ UINT8 btsnd_hcic_ble_read_rf_path_compensation(void)
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s", __func__);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_READ_RF_PATH_COMPENSATION);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_READ_RF_PATH_COMPENSATION);
|
||||
|
||||
UINT16_TO_STREAM(pp, HCI_BLE_RD_RF_PATH_COMPENSATION);
|
||||
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_READ_RF_PATH_COMPENSATION);
|
||||
@@ -1935,7 +1940,7 @@ UINT8 btsnd_hcic_ble_write_rf_path_compensation(UINT16 rf_tx_path, UINT16 rf_rx_
|
||||
UINT8 *pp;
|
||||
HCI_TRACE_EVENT("%s, rf_tx_path = %d, rf_rx_path = %d", __func__, rf_tx_path, rf_rx_path);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_WRITE_RF_PATH_COMPENSATION);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_WRITE_RF_PATH_COMPENSATION);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -1958,7 +1963,7 @@ UINT8 btsnd_hcic_ble_set_periodic_adv_recv_enable(UINT16 sync_handle, UINT8 enab
|
||||
BT_HDR *p;
|
||||
UINT8 *pp;
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_RECV_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_PERIODIC_ADV_RECV_ENABLE);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2044,7 +2049,7 @@ UINT8 btsnd_hcic_ble_set_default_periodic_adv_sync_trans_params(UINT8 mode, UINT
|
||||
|
||||
HCI_TRACE_DEBUG("%s mode %x, skip %x, sync timeout %x", __func__, mode, skip, sync_timeout);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_DEFAULT_PAST_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_DEFAULT_PAST_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2298,7 +2303,7 @@ UINT8 btsnd_hcic_ble_big_sync_terminate(uint8_t big_handle)
|
||||
|
||||
HCI_TRACE_DEBUG("%s big_handle %d", __func__, big_handle);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_BIG_SYNC_TERMINATE_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_BIG_SYNC_TERMINATE_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2320,7 +2325,7 @@ UINT8 btsnd_hcic_ble_iso_set_data_path(uint16_t conn_handle, uint8_t data_path_d
|
||||
HCI_TRACE_DEBUG("hci set data path: conn_handle %d data_path_dir %d data_path_id %d coding_fmt %d company_id 0x%x vs_codec_id %d controller_delay %ld codec_len %d",
|
||||
conn_handle, data_path_dir, data_path_id, coding_fmt, company_id, vs_codec_id, controller_delay, codec_len);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_SET_DATA_PATH_PARAMS + codec_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_SET_DATA_PATH_PARAMS + codec_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2349,7 +2354,7 @@ UINT8 btsnd_hcic_ble_iso_remove_data_path(uint16_t conn_handle, uint8_t data_pat
|
||||
|
||||
HCI_TRACE_DEBUG("hci remove data path: conn_handle %d data_path_dir %d", conn_handle, data_path_dir);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_REMOVE_DATA_PATH_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_REMOVE_DATA_PATH_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2369,7 +2374,7 @@ UINT8 btsnd_hcic_ble_iso_read_tx_sync(uint16_t iso_hdl)
|
||||
|
||||
HCI_TRACE_DEBUG("hci read iso tx sync: iso_hdl %d", iso_hdl);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_READ_TX_SYNC_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_READ_TX_SYNC_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2390,7 +2395,7 @@ UINT8 btsnd_hcic_ble_iso_set_cig_params(uint8_t cig_id, uint32_t sdu_int_c_to_p,
|
||||
HCI_TRACE_DEBUG("hci set cig params: cig_id %d sdu_int_c_to_p %d sdu_int_p_to_c %d worse_case_SCA %d packing %d framing %d mtl_c_to_p %d mtl_p_to_c %d cis_cnt %d",
|
||||
cig_id, sdu_int_c_to_p, sdu_int_p_to_c, worse_case_SCA, packing, framing, mtl_c_to_p, mtl_p_to_c, cis_cnt);
|
||||
UINT8 cis_param_len = cis_cnt * 9;
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_SET_CIG_PARAMS + cis_param_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_SET_CIG_PARAMS + cis_param_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2431,7 +2436,7 @@ UINT8 btsnd_hcic_ble_iso_set_cig_params_test(uint8_t cig_id, uint32_t sdu_int_c_
|
||||
HCI_TRACE_DEBUG("hci set cig params test: cig_id %d sdu_int_c_to_p %d sdu_int_p_to_c %d ft_c_to_p %d ft_p_to_c %d iso_interval %d worse_case_SCA %d packing %d framing %d cis_cnt %d",
|
||||
cig_id, sdu_int_c_to_p, sdu_int_p_to_c, ft_c_to_p, ft_p_to_c, iso_interval, worse_case_SCA, packing, framing, cis_cnt);
|
||||
UINT8 cis_param_len = cis_cnt * 14;
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_SET_CIG_TEST_PARAMS + cis_param_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_SET_CIG_TEST_PARAMS + cis_param_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2505,7 +2510,7 @@ UINT8 btsnd_hcic_ble_iso_remove_cig(uint8_t cig_id)
|
||||
|
||||
HCI_TRACE_DEBUG("hci remove cig: cig_id %d", cig_id);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_REMOVE_CIG_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_REMOVE_CIG_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2547,7 +2552,7 @@ UINT8 btsnd_hcic_ble_iso_reject_cis_req(uint16_t cis_handle, uint8_t reason)
|
||||
|
||||
HCI_TRACE_DEBUG("hci reject cis req: cis_handle %d reason %d", cis_handle, reason);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_REJECT_CIS_REQ_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_REJECT_CIS_REQ_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2568,7 +2573,7 @@ UINT8 btsnd_hcic_ble_iso_read_iso_link_quality(uint16_t iso_handle)
|
||||
|
||||
HCI_TRACE_DEBUG("hci read iso link quality: cis_handle %d", iso_handle);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_READ_LINK_QUALITY_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ISO_READ_LINK_QUALITY_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2592,7 +2597,7 @@ UINT8 btsnd_hcic_ble_set_connless_cte_trans_params(uint8_t adv_hdl, uint8_t cte_
|
||||
|
||||
HCI_TRACE_DEBUG("hci set connless cte trans: adv_hdl %d cte_len %d cte_type %d cte_cnt %d", adv_hdl, cte_len, cte_type, cte_cnt);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_CONNLESS_CTE_TRANS_PARAMS + switching_pattern_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_CONNLESS_CTE_TRANS_PARAMS + switching_pattern_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2619,7 +2624,7 @@ UINT8 btsnd_hcic_ble_set_connless_cte_enable(uint8_t adv_hdl, uint8_t cte_en)
|
||||
|
||||
HCI_TRACE_DEBUG("hci set connect cte enable: adv_hdl %d cte_en %d", adv_hdl, cte_en);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_CONNLESS_CTE_TRANS_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_CONNLESS_CTE_TRANS_ENABLE);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2640,7 +2645,7 @@ UINT8 btsnd_hcic_ble_set_connless_iq_sampling_enable(uint16_t sync_hdl, uint8_t
|
||||
|
||||
HCI_TRACE_DEBUG("hci enable IQ sampling: sync_hdl %d sampling_en %d slot_dur %d", sync_hdl, sampling_en, slot_dur);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_CONNLESS_IQ_SAMPLING_ENABLE + switching_pattern_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_CONNLESS_IQ_SAMPLING_ENABLE + switching_pattern_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2670,7 +2675,7 @@ UINT8 btsnd_hcic_ble_set_conn_cte_receive_params(uint16_t conn_hdl, uint8_t samp
|
||||
|
||||
HCI_TRACE_DEBUG("hci set connection cte receive params: conn_hdl %d sampling_en %d slot_dur %d", conn_hdl, sampling_en, slot_dur);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_CONN_CTE_RECEIVE_PARAMS + switching_pattern_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_CONN_CTE_RECEIVE_PARAMS + switching_pattern_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2696,7 +2701,7 @@ UINT8 btsnd_hcic_ble_set_conn_cte_trans_params(uint16_t conn_hdl, uint8_t cte_ty
|
||||
|
||||
HCI_TRACE_DEBUG("hci set connection cte trans params: conn_hdl %d cte_type %d len %d", conn_hdl, cte_type, switching_pattern_len);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_CONN_CTE_TRANS_PARAMS + switching_pattern_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_CONN_CTE_TRANS_PARAMS + switching_pattern_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2721,7 +2726,7 @@ UINT8 btsnd_hcic_ble_conn_cte_req_enable(uint16_t conn_hdl, uint8_t enable, uint
|
||||
|
||||
HCI_TRACE_DEBUG("hci set connect cte request enable: conn_hdl %d enable %d cte_req_int %d req_cte_len %d req_cte_type %d", conn_hdl, enable, cte_req_int, req_cte_len, req_cte_type);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_CONN_CTE_REQ_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_CONN_CTE_REQ_ENABLE);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2744,7 +2749,7 @@ UINT8 btsnd_hcic_ble_conn_cte_rsp_enable(uint16_t conn_hdl, uint8_t enable)
|
||||
|
||||
HCI_TRACE_DEBUG("hci set connect cte response enable: conn_hdl %d enable %d", conn_hdl, enable);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_CONN_CTE_RSP_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_CONN_CTE_RSP_ENABLE);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2765,7 +2770,7 @@ UINT8 btsnd_hcic_ble_read_antenna_info(void)
|
||||
|
||||
HCI_TRACE_DEBUG("hci read antenna information");
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_READ_ANT_INFO);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_READ_ANT_INFO);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2784,7 +2789,7 @@ UINT8 btsnd_hcic_ble_enh_read_trans_power_level(uint16_t conn_handle, uint8_t ph
|
||||
|
||||
HCI_TRACE_DEBUG("hci enh read trans power level, conn_handle %d phy %d", conn_handle, phy);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ENH_READ_TRANS_PWR_LEVEL);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_ENH_READ_TRANS_PWR_LEVEL);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2828,7 +2833,7 @@ UINT8 btsnd_hcic_ble_set_path_loss_rpt_params(uint16_t conn_handle, uint8_t high
|
||||
conn_handle, high_threshold, high_hysteresis, low_threshold,
|
||||
low_hysteresis, min_time_spent);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_PATH_LOSS_REPORTING_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_PATH_LOSS_REPORTING_PARAMS);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2851,7 +2856,7 @@ UINT8 btsnd_hcic_ble_set_path_loss_rpt_enable(uint16_t conn_handle, uint8_t enab
|
||||
UINT8 *pp;
|
||||
|
||||
HCI_TRACE_DEBUG("hci set path loss rpt en, conn_handle %d enable %d", conn_handle, enable);
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_PATH_LOSS_REPORTING_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_PATH_LOSS_REPORTING_ENABLE);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2870,7 +2875,7 @@ UINT8 btsnd_hcic_ble_set_trans_pwr_rpt_enable(uint16_t conn_handle, uint8_t loca
|
||||
UINT8 *pp;
|
||||
|
||||
HCI_TRACE_DEBUG("hci set trans power rpt en, conn_handle %d local_enable %d remote_enable %d", conn_handle, local_enable, remote_enable);
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_TRANS_PWR_REPORTING_ENABLE);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_TRANS_PWR_REPORTING_ENABLE);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2895,7 +2900,7 @@ UINT8 btsnd_hcic_ble_set_default_subrate(UINT16 subrate_min, UINT16 subrate_max,
|
||||
HCI_TRACE_DEBUG("hci set default subrate, subrate_min %d subrate_max %d max_latency %d continuation_number %d supervision_timeout %d",
|
||||
subrate_min, subrate_max, max_latency, continuation_number, supervision_timeout);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_DEFAULT_SUBRATE_PARAMS_LEN);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_DEFAULT_SUBRATE_PARAMS_LEN);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -2947,9 +2952,9 @@ UINT8 btsnd_hcic_ble_set_host_feature(uint16_t bit_num, uint8_t bit_val)
|
||||
|
||||
HCI_TRACE_DEBUG("hci set host feature: bit_num %d bit_val %d", bit_num, bit_val);
|
||||
#if (BLE_FEAT_ISO_60_EN == TRUE)
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS_V2);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS_V2);
|
||||
#else
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS);
|
||||
#endif // #if (BLE_FEAT_ISO_60_EN == TRUE)
|
||||
pp = (UINT8 *)(p + 1);
|
||||
#if (BLE_FEAT_ISO_60_EN == TRUE)
|
||||
@@ -2996,7 +3001,7 @@ UINT8 btsnd_hcic_ble_set_periodic_adv_subevt_data(UINT8 adv_handle, UINT8 num_su
|
||||
param_len += (4 + subevent_params[i].subevent_data_len);
|
||||
}
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, param_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, param_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -3027,7 +3032,7 @@ UINT8 btsnd_hcic_ble_set_periodic_adv_rsp_data(UINT16 sync_handle, UINT16 req_ev
|
||||
HCI_TRACE_DEBUG("hci set PA rsp data, sync_handle %d req_evt %d req_subevt %d rsp_subevt %d rsp_slot %d rsp_data_len %d",
|
||||
sync_handle, req_evt, req_subevt, rsp_subevt, rsp_slot, rsp_data_len);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_PA_RESPONSE_DATA_PARAMS_LEN + rsp_data_len);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_PA_RESPONSE_DATA_PARAMS_LEN + rsp_data_len);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -3060,7 +3065,7 @@ UINT8 btsnd_hcic_ble_set_periodic_sync_subevt(UINT16 sync_handle, UINT16 periodi
|
||||
HCI_TRACE_DEBUG("subevt[%d] = %d", i, subevt[i]);
|
||||
}
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_PA_SYNC_SUBEVT_PARAMS_LEN + num_subevents_to_sync);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_PA_SYNC_SUBEVT_PARAMS_LEN + num_subevents_to_sync);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -3138,7 +3143,7 @@ UINT8 btsnd_hcic_ble_cs_write_cached_remote_supported_capabilities(UINT16 conn_h
|
||||
NADM_random_capability, cs_sync_phys_supported, subfeatures_supported, T_IP1_times_supported, T_IP2_times_supported, T_FCS_times_supported,
|
||||
T_PM_times_supported, T_SW_times_supported, TX_SNR_capability);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_WRITE_CACHE_REMOTE_SUPP_CAPS_PARAMS_LEN);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_WRITE_CACHE_REMOTE_SUPP_CAPS_PARAMS_LEN);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -3196,7 +3201,7 @@ UINT8 btsnd_hcic_ble_cs_set_default_settings(UINT16 conn_handle, UINT8 role_enab
|
||||
|
||||
HCI_TRACE_DEBUG("cs set default settings, conn_handle %d role_enable %d cs_sync_ant_selection %d max_tx_power %d", conn_handle, role_enable, cs_sync_ant_selection, max_tx_power);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_DEFAULT_SETTINGS_PARAMS_LEN);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_DEFAULT_SETTINGS_PARAMS_LEN);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -3237,7 +3242,7 @@ UINT8 btsnd_hcic_ble_cs_write_cached_remote_fae_table(UINT16 conn_handle, UINT8
|
||||
HCI_TRACE_DEBUG("cs write cached remote fae table, conn_handle %d", conn_handle);
|
||||
esp_log_buffer_hex_internal("remote_fae_table", remote_fae_table, 72, ESP_LOG_DEBUG);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_WRITE_CACHED_REMOTE_FAE_TAB_PARAMS_LEN);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_WRITE_CACHED_REMOTE_FAE_TAB_PARAMS_LEN);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -3325,7 +3330,7 @@ UINT8 btsnd_hcic_ble_cs_set_channel_classification(UINT8 *channel_class)
|
||||
HCI_TRACE_DEBUG("cs set channel class");
|
||||
esp_log_buffer_hex_internal("channel", channel_class, 10, ESP_LOG_DEBUG);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_CHANNEL_CLASS_PARAMS_LEN);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_CHANNEL_CLASS_PARAMS_LEN);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
@@ -3353,7 +3358,7 @@ UINT8 btsnd_hcic_ble_cs_set_procedure_params(UINT16 conn_handle, UINT8 config_id
|
||||
conn_handle, config_id, max_procedure_len, min_procedure_interval, max_procedure_interval, max_procedure_count, min_subevent_len, max_subevent_len,
|
||||
tone_ant_config_selection, phy, tx_power_delta, preferred_peer_antenna, SNR_control_initiator, SNR_control_reflector);
|
||||
|
||||
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_PROCEDURE_PARAMS_LEN);
|
||||
HCIC_BLE_CMD_CREATED_U8(p, pp, HCIC_PARAM_SIZE_SET_PROCEDURE_PARAMS_LEN);
|
||||
|
||||
pp = (UINT8 *)(p + 1);
|
||||
|
||||
|
||||
@@ -171,23 +171,13 @@ typedef void (tBTM_VSC_CMPL_CB) (tBTM_VSC_CMPL *p1);
|
||||
** Parameters are the BD Address of remote and the Dev Class of remote.
|
||||
** If the app returns none zero, the connection or inquiry result will be dropped.
|
||||
*/
|
||||
typedef UINT8 (tBTM_FILTER_CB) (BD_ADDR bd_addr, DEV_CLASS dc);
|
||||
|
||||
typedef void (tBTM_UPDATE_CONN_PARAM_CBACK) (UINT8 status, BD_ADDR bd_addr, tBTM_LE_UPDATE_CONN_PRAMS *update_conn_params);
|
||||
|
||||
typedef void (tBTM_SET_PKT_DATA_LENGTH_CBACK) (UINT8 status, tBTM_LE_SET_PKT_DATA_LENGTH_PARAMS *data_length_params);
|
||||
// typedef UINT8 (tBTM_FILTER_CB) (BD_ADDR bd_addr, DEV_CLASS dc);
|
||||
|
||||
typedef void (tBTM_DTM_CMD_CMPL_CBACK) (void *p1);
|
||||
|
||||
typedef void (tBTM_SET_RAND_ADDR_CBACK) (UINT8 status);
|
||||
|
||||
typedef void (tBTM_UPDATE_WHITELIST_CBACK) (UINT8 status, tBTM_WL_OPERATION wl_opration);
|
||||
|
||||
typedef void (tBTM_SET_LOCAL_PRIVACY_CBACK) (UINT8 status);
|
||||
|
||||
typedef void (tBTM_SET_RPA_TIMEOUT_CMPL_CBACK) (UINT8 status);
|
||||
|
||||
typedef void (tBTM_ADD_DEV_TO_RESOLVING_LIST_CMPL_CBACK) (UINT8 status);
|
||||
// typedef void (tBTM_UPDATE_WHITELIST_CBACK) (UINT8 status, tBTM_WL_OPERATION wl_opration);
|
||||
|
||||
typedef void (tBTM_BLE_VENDOR_HCI_EVT_CBACK) (UINT8 subevt_code, UINT8 param_len, UINT8 *params);
|
||||
/*******************************
|
||||
@@ -3167,7 +3157,7 @@ tBTM_STATUS BTM_WriteBredrTxPwrLvl(tBTM_TX_PWR_LVL_TYPE type, INT8 tx_power, tBT
|
||||
** Returns BTM_CMD_STARTED if successfully initiated or error code
|
||||
**
|
||||
*******************************************************************************/
|
||||
tBTM_STATUS BTM_ReadChannelMap(BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb);
|
||||
tBTM_STATUS BTM_ReadChannelMap(BD_ADDR remote_bda);
|
||||
|
||||
void BTM_BleGetWhiteListSize(uint16_t *length);
|
||||
|
||||
@@ -4480,7 +4470,7 @@ tBTM_STATUS BTM_SetAfhChannels (AFH_CHANNELS channels, tBTM_CMPL_CB *p_afh_chann
|
||||
** Returns status of the operation
|
||||
**
|
||||
*******************************************************************************/
|
||||
tBTM_STATUS BTM_BleSetChannels (BLE_CHANNELS channels, tBTM_CMPL_CB *p_ble_channels_cmpl_cback);
|
||||
tBTM_STATUS BTM_BleSetChannels (BLE_CHANNELS channels);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
|
||||
@@ -867,17 +867,8 @@ typedef void (tBTM_BLE_VERIFY_CBACK)(void *p_ref_data, BOOLEAN match);
|
||||
typedef void (tBTM_BLE_RANDOM_SET_CBACK) (BD_ADDR random_bda);
|
||||
|
||||
typedef void (tBTM_BLE_SCAN_REQ_CBACK)(BD_ADDR remote_bda, tBLE_ADDR_TYPE addr_type, UINT8 adv_evt);
|
||||
typedef void (*tBLE_SCAN_PARAM_SETUP_CBACK)(tGATT_IF client_if, tBTM_STATUS status);
|
||||
|
||||
typedef void (tBTM_START_ADV_CMPL_CBACK) (UINT8 status);
|
||||
typedef void (tBTM_START_STOP_ADV_CMPL_CBACK) (UINT8 status);
|
||||
|
||||
typedef void (tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK) (tBTM_STATUS status, uint8_t subcode, uint32_t length, uint8_t *device_info);
|
||||
typedef void (tBTM_CLEAR_ADV_CMPL_CBACK) (UINT8 status);
|
||||
typedef void (tBTM_SET_PRIVACY_MODE_CMPL_CBACK) (tBTM_STATUS status);
|
||||
typedef void (tBTM_SET_CSA_SUPPORT_CMPL_CBACK) (tBTM_STATUS status);
|
||||
typedef void (tBTM_SET_VENDOR_EVT_MASK_CBACK) (tBTM_STATUS status);
|
||||
|
||||
#if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
#define BTM_BLE_5_GAP_READ_PHY_COMPLETE_EVT 1
|
||||
#define BTM_BLE_5_GAP_SET_PREFERED_DEFAULT_PHY_COMPLETE_EVT 2
|
||||
@@ -1939,19 +1930,6 @@ extern "C" {
|
||||
#endif
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_BleRegiseterConnParamCallback
|
||||
**
|
||||
** Description register connection parameters update callback func
|
||||
**
|
||||
** Parameters: update_conn_param_cb
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTM_BleRegiseterConnParamCallback(tBTM_UPDATE_CONN_PARAM_CBACK *update_conn_param_cb);
|
||||
void BTM_BleRegiseterPktLengthChangeCallback(tBTM_SET_PKT_DATA_LENGTH_CBACK *ptk_len_chane_cb);
|
||||
void BTM_BleRegisterVendorHciEventCallback(tBTM_BLE_VENDOR_HCI_EVT_CBACK *vendor_hci_evt_cb);
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -1996,7 +1974,7 @@ BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key,
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_BleSetAdvParamsAll
|
||||
** Function BTM_BleStartAdvWithParams
|
||||
**
|
||||
** Description This function is called to set all of the advertising parameters.
|
||||
**
|
||||
@@ -2005,9 +1983,9 @@ BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key,
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
tBTM_STATUS BTM_BleSetAdvParamsAll(UINT16 adv_int_min, UINT16 adv_int_max, UINT8 adv_type,
|
||||
tBTM_STATUS BTM_BleStartAdvWithParams(UINT16 adv_int_min, UINT16 adv_int_max, UINT8 adv_type,
|
||||
tBLE_ADDR_TYPE own_bda_type, tBLE_BD_ADDR *p_dir_bda,
|
||||
tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP afp, tBTM_START_ADV_CMPL_CBACK *adv_cb);
|
||||
tBTM_BLE_ADV_CHNL_MAP chnl_map, tBTM_BLE_AFP afp);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2078,8 +2056,7 @@ void BTM_BleClearRandAddress(void);
|
||||
**
|
||||
*******************************************************************************/
|
||||
tBTM_STATUS BTM_BleSetScanFilterParams(tGATT_IF client_if, UINT32 scan_interval, UINT32 scan_window,
|
||||
tBLE_SCAN_MODE scan_mode, UINT8 addr_type_own, UINT8 scan_duplicate_filter, tBTM_BLE_SFP scan_filter_policy,
|
||||
tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback);
|
||||
tBLE_SCAN_MODE scan_mode, UINT8 addr_type_own, UINT8 scan_duplicate_filter, tBTM_BLE_SFP scan_filter_policy);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -2111,22 +2088,6 @@ tBTM_STATUS BTM_BleWriteScanRsp(tBTM_BLE_AD_MASK data_mask,
|
||||
//extern
|
||||
tBTM_STATUS BTM_BleWriteScanRspRaw(UINT8 *p_raw_scan_rsp, UINT32 raw_scan_rsp_len);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_BleObserve
|
||||
**
|
||||
** Description This procedure keep the device listening for advertising
|
||||
** events from a broadcast device.
|
||||
**
|
||||
** Parameters start: start or stop observe.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
//extern
|
||||
tBTM_STATUS BTM_BleObserve(BOOLEAN start, UINT32 duration,
|
||||
tBTM_INQ_RESULTS_CB *p_results_cb, tBTM_CMPL_CB *p_cmpl_cb);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_BleScan
|
||||
@@ -2571,17 +2532,17 @@ BOOLEAN BTM_ReadConnectedTransportAddress(BD_ADDR remote_bda,
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_BleBroadcast
|
||||
** Function BTM_BleAdvStop
|
||||
**
|
||||
** Description This function is to start or stop broadcasting.
|
||||
** Description This function is to stop broadcasting.
|
||||
**
|
||||
** Parameters start: start or stop broadcasting.
|
||||
** Parameters void
|
||||
**
|
||||
** Returns status.
|
||||
**
|
||||
*******************************************************************************/
|
||||
//extern
|
||||
tBTM_STATUS BTM_BleBroadcast(BOOLEAN start, tBTM_START_STOP_ADV_CMPL_CBACK *p_stop_adv_cback);
|
||||
tBTM_STATUS BTM_BleAdvStop(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2596,7 +2557,7 @@ tBTM_STATUS BTM_BleBroadcast(BOOLEAN start, tBTM_START_STOP_ADV_CMPL_CBACK *p_st
|
||||
**
|
||||
*******************************************************************************/
|
||||
//extern
|
||||
BOOLEAN BTM_BleConfigPrivacy(BOOLEAN enable, tBTM_SET_LOCAL_PRIVACY_CBACK *set_local_privacy_cabck);
|
||||
BOOLEAN BTM_BleConfigPrivacy(BOOLEAN enable);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2712,7 +2673,7 @@ void BTM_BleTurnOnPrivacyOnRemote(BD_ADDR bd_addr,
|
||||
**
|
||||
*******************************************************************************/
|
||||
//extern
|
||||
BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda, tBLE_ADDR_TYPE addr_type, tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb);
|
||||
BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda, tBLE_ADDR_TYPE addr_type);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2723,7 +2684,7 @@ BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda, tBLE_AD
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTM_BleClearWhitelist(tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb);
|
||||
void BTM_BleClearWhitelist(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2915,13 +2876,13 @@ tBTM_STATUS BTM_SetBleDataLength(BD_ADDR bd_addr, UINT16 tx_pdu_length);
|
||||
** Parameters: subcode: add, remove or clean duplicate scan exceptional list.
|
||||
** type: device info type
|
||||
** device_info: device information
|
||||
** update_exceptional_list_cmp_cb: complete callback
|
||||
**
|
||||
**
|
||||
** Returns status
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
tBTM_STATUS BTM_UpdateBleDuplicateExceptionalList(uint8_t subcode, uint32_t type, BD_ADDR device_info, tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK update_exceptional_list_cmp_cb);
|
||||
tBTM_STATUS BTM_UpdateBleDuplicateExceptionalList(uint8_t subcode, uint32_t type, BD_ADDR device_info);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2956,7 +2917,7 @@ BOOLEAN BTM_Ble_Authorization(BD_ADDR bd_addr, BOOLEAN authorize);
|
||||
** Parameter p_clear_adv_cback - Command complete callback
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN BTM_BleClearAdv(tBTM_CLEAR_ADV_CMPL_CBACK *p_clear_adv_cback);
|
||||
BOOLEAN BTM_BleClearAdv(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2968,7 +2929,7 @@ BOOLEAN BTM_BleClearAdv(tBTM_CLEAR_ADV_CMPL_CBACK *p_clear_adv_cback);
|
||||
** Parameter rpa_timeout - The timeout value for RPA, typically in seconds.
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN BTM_BleSetRpaTimeout(uint16_t rpa_timeout, tBTM_SET_RPA_TIMEOUT_CMPL_CBACK *p_set_rpa_timeout_cback);
|
||||
BOOLEAN BTM_BleSetRpaTimeout(uint16_t rpa_timeout);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -2981,15 +2942,14 @@ BOOLEAN BTM_BleSetRpaTimeout(uint16_t rpa_timeout, tBTM_SET_RPA_TIMEOUT_CMPL_CBA
|
||||
** Parameters addr - The address of the device to be added to the resolving list.
|
||||
** addr_type - The address type of the device (public or random).
|
||||
** irk - The Identity Resolving Key (IRK) of the device.
|
||||
** p_add_dev_to_resolving_list_callback - Callback function to be called when the operation is completed.
|
||||
**
|
||||
**
|
||||
** Returns TRUE if the operation was successful, otherwise FALSE.
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN BTM_BleAddDevToResolvingList(BD_ADDR addr,
|
||||
uint8_t addr_type,
|
||||
uint8_t irk[],
|
||||
tBTM_ADD_DEV_TO_RESOLVING_LIST_CMPL_CBACK *p_add_dev_to_resolving_list_callback);
|
||||
uint8_t irk[]);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -3007,8 +2967,7 @@ BOOLEAN BTM_BleAddDevToResolvingList(BD_ADDR addr,
|
||||
*******************************************************************************/
|
||||
BOOLEAN BTM_BleSetPrivacyMode(UINT8 addr_type,
|
||||
BD_ADDR bd_addr,
|
||||
UINT8 privacy_mode,
|
||||
tBTM_SET_PRIVACY_MODE_CMPL_CBACK *p_callback);
|
||||
UINT8 privacy_mode);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -3022,7 +2981,7 @@ BOOLEAN BTM_BleSetPrivacyMode(UINT8 addr_type,
|
||||
** Returns TRUE if the operation was successful, otherwise FALSE.
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN BTM_BleSetCsaSupport (UINT8 csa_select, tBTM_SET_CSA_SUPPORT_CMPL_CBACK *p_callback);
|
||||
BOOLEAN BTM_BleSetCsaSupport (UINT8 csa_select);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@@ -3036,7 +2995,7 @@ BOOLEAN BTM_BleSetCsaSupport (UINT8 csa_select, tBTM_SET_CSA_SUPPORT_CMPL_CBACK
|
||||
** Returns TRUE if the operation was successful, otherwise FALSE.
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN BTM_BleSetVendorEventMask(UINT32 evt_mask, tBTM_SET_VENDOR_EVT_MASK_CBACK *p_callback);
|
||||
BOOLEAN BTM_BleSetVendorEventMask(UINT32 evt_mask);
|
||||
/*
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -280,9 +280,7 @@ void btu_check_bt_sleep (void);
|
||||
*/
|
||||
void btu_hcif_process_event (UINT8 controller_id, BT_HDR *p_buf);
|
||||
void btu_hcif_send_cmd (UINT8 controller_id, BT_HDR *p_msg);
|
||||
#if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
UINT8 btu_hcif_send_cmd_sync (UINT8 controller_id, BT_HDR *p_buf);
|
||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
void btu_hcif_send_host_rdy_for_data(void);
|
||||
void btu_hcif_cmd_timeout (UINT8 controller_id);
|
||||
|
||||
|
||||
@@ -799,7 +799,9 @@ void btsnd_hcic_vendor_spec_cmd (BT_HDR *buffer, UINT16 opcode,
|
||||
#define HCIC_PARAM_SIZE_READ_TRANS_POWER 0
|
||||
#define HCIC_PARAM_SIZE_READ_RF_PATH_COMPENSATION 0
|
||||
#define HCIC_PARAM_SIZE_WRITE_RF_PATH_COMPENSATION 4
|
||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
|
||||
#if ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
BlE_SYNC *btsnd_hcic_ble_get_sync_info(void);
|
||||
void btsnd_hcic_ble_sync_sem_init(void);
|
||||
void btsnd_hcic_ble_sync_sem_deinit(void);
|
||||
@@ -807,7 +809,7 @@ void btsnd_hcic_ble_sync_sem_deinit(void);
|
||||
uint8_t btsnd_hcic_ble_get_status(void);
|
||||
|
||||
void btsnd_hci_ble_set_status(UINT8 hci_status);
|
||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||
#endif // ((BLE_50_FEATURE_SUPPORT == TRUE) || (BLE_42_FEATURE_SUPPORT == TRUE))
|
||||
|
||||
/* ULP HCI command */
|
||||
BOOLEAN btsnd_hcic_ble_set_evt_mask (BT_EVENT_MASK event_mask);
|
||||
@@ -820,25 +822,24 @@ BOOLEAN btsnd_hcic_ble_set_local_used_feat (UINT8 feat_set[8]);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_random_addr (BD_ADDR random_addr);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max,
|
||||
UINT8 btsnd_hcic_ble_write_adv_params (UINT16 adv_int_min, UINT16 adv_int_max,
|
||||
UINT8 adv_type, UINT8 addr_type_own,
|
||||
UINT8 addr_type_dir, BD_ADDR direct_bda,
|
||||
UINT8 channel_map, UINT8 adv_filter_policy);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_read_adv_chnl_tx_power (void);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data);
|
||||
UINT8 btsnd_hcic_ble_set_adv_data (UINT8 data_len, UINT8 *p_data);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp);
|
||||
UINT8 btsnd_hcic_ble_set_scan_rsp_data (UINT8 data_len, UINT8 *p_scan_rsp);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable);
|
||||
UINT8 btsnd_hcic_ble_set_adv_enable (UINT8 adv_enable);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_scan_params (UINT8 scan_type,
|
||||
UINT8 btsnd_hcic_ble_set_scan_params (UINT8 scan_type,
|
||||
UINT16 scan_int, UINT16 scan_win,
|
||||
UINT8 addr_type, UINT8 scan_filter_policy);
|
||||
|
||||
BOOLEAN btsnd_hcic_ble_set_scan_enable (UINT8 scan_enable, UINT8 duplicate);
|
||||
|
||||
UINT8 btsnd_hcic_ble_set_scan_enable (UINT8 scan_enable, UINT8 duplicate);
|
||||
BOOLEAN btsnd_hcic_ble_create_ll_conn (UINT16 scan_int, UINT16 scan_win,
|
||||
UINT8 init_filter_policy, UINT8 addr_type_peer, BD_ADDR bda_peer, UINT8 addr_type_own,
|
||||
UINT16 conn_int_min, UINT16 conn_int_max, UINT16 conn_latency, UINT16 conn_timeout,
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "btm_int.h"
|
||||
#include "stack/hcimsgs.h"
|
||||
#include "device/controller.h"
|
||||
#include "bta_dm_gap.h"
|
||||
|
||||
#if (BLE_INCLUDED == TRUE)
|
||||
|
||||
@@ -171,14 +172,18 @@ BOOLEAN L2CA_UpdateBleConnParams (BD_ADDR rem_bda, UINT16 min_int, UINT16 max_in
|
||||
L2CAP_TRACE_ERROR("%s connection parameter update in progress, please try later", __func__);
|
||||
}
|
||||
|
||||
if ((need_cb == TRUE) && (conn_callback_func.update_conn_param_cb != NULL)) {
|
||||
tBTM_LE_UPDATE_CONN_PRAMS update_param;
|
||||
update_param.max_conn_int = max_int;
|
||||
update_param.min_conn_int = min_int;
|
||||
update_param.conn_int = p_lcb->current_used_conn_interval;
|
||||
update_param.slave_latency = p_lcb->current_used_conn_latency;
|
||||
update_param.supervision_tout = p_lcb->current_used_conn_timeout;
|
||||
(conn_callback_func.update_conn_param_cb)(status, p_lcb->remote_bd_addr, &update_param);
|
||||
if (need_cb) {
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.conn_params_update.status = status;
|
||||
memcpy(cb_params.conn_params_update.remote_bd_addr, p_lcb->remote_bd_addr, BD_ADDR_LEN);
|
||||
cb_params.conn_params_update.min_conn_int = min_int;
|
||||
cb_params.conn_params_update.max_conn_int = max_int;
|
||||
cb_params.conn_params_update.conn_int = p_lcb->current_used_conn_interval;
|
||||
cb_params.conn_params_update.slave_latency = p_lcb->current_used_conn_latency;
|
||||
cb_params.conn_params_update.supervision_tout = p_lcb->current_used_conn_timeout;
|
||||
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_CONNECTION_PARAMS_UPDATE_EVT, &cb_params);
|
||||
|
||||
return (status == HCI_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -647,9 +652,8 @@ void l2cble_process_conn_update_evt (UINT16 handle, UINT8 status, UINT16 conn_in
|
||||
p_lcb->conn_update_mask &= ~L2C_BLE_UPDATE_PARAM_FULL;
|
||||
btu_stop_timer(&p_lcb->upda_con_timer);
|
||||
|
||||
if (conn_callback_func.update_conn_param_cb != NULL) {
|
||||
l2c_send_update_conn_params_cb(p_lcb, status);
|
||||
}
|
||||
|
||||
l2c_send_update_conn_params_cb(p_lcb, status);
|
||||
|
||||
if (l2cble_start_conn_update(p_lcb) == TRUE) {
|
||||
UINT32 time = CalConnectParamTimeout(p_lcb);
|
||||
@@ -686,9 +690,8 @@ void l2cble_get_conn_param_format_err_from_contoller (UINT8 status, UINT16 handl
|
||||
|
||||
btu_stop_timer (&p_lcb->upda_con_timer);
|
||||
|
||||
if (conn_callback_func.update_conn_param_cb != NULL) {
|
||||
l2c_send_update_conn_params_cb(p_lcb, status);
|
||||
}
|
||||
l2c_send_update_conn_params_cb(p_lcb, status);
|
||||
|
||||
if ((p_lcb->conn_update_mask & L2C_BLE_UPDATE_PARAM_FULL) != 0){
|
||||
p_lcb->conn_update_mask &= ~L2C_BLE_UPDATE_PARAM_FULL;
|
||||
if (l2cble_start_conn_update(p_lcb) == TRUE) {
|
||||
@@ -1419,23 +1422,24 @@ void l2cble_process_data_length_change_event(UINT16 handle, UINT16 tx_data_len,
|
||||
|
||||
if(p_acl) {
|
||||
p_acl->data_length_params = data_length_params;
|
||||
if (p_acl->p_set_pkt_data_cback) {
|
||||
// Only when the corresponding API is called will the callback be registered
|
||||
(*p_acl->p_set_pkt_data_cback)(BTM_SUCCESS, &data_length_params);
|
||||
} else {
|
||||
// If the callback is not registered,using global callback
|
||||
(*conn_callback_func.set_pkt_data_length_cb)(BTM_SUCCESS, &data_length_params);
|
||||
}
|
||||
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.data_length_params.status = BTM_SUCCESS;
|
||||
cb_params.data_length_params.rx_len = data_length_params.rx_len;
|
||||
cb_params.data_length_params.tx_len = data_length_params.tx_len;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_DATA_LEN_SET_COMPLETE_EVT, &cb_params);
|
||||
|
||||
p_acl->data_len_updating = false;
|
||||
if(p_acl->data_len_waiting) {
|
||||
p_acl->data_len_waiting = false;
|
||||
p_acl->p_set_pkt_data_cback = p_acl->p_set_data_len_cback_waiting;
|
||||
p_acl->p_set_data_len_cback_waiting = NULL;
|
||||
// if value is same, trigger callback directly
|
||||
if(p_acl->tx_len_waiting == p_acl->data_length_params.tx_len) {
|
||||
if(p_acl->p_set_pkt_data_cback) {
|
||||
(*p_acl->p_set_pkt_data_cback)(BTM_SUCCESS, &p_acl->data_length_params);
|
||||
}
|
||||
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
cb_params.data_length_params.status = BTM_SUCCESS;
|
||||
cb_params.data_length_params.rx_len = data_length_params.rx_len;
|
||||
cb_params.data_length_params.tx_len = data_length_params.tx_len;
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_DATA_LEN_SET_COMPLETE_EVT, &cb_params);
|
||||
return;
|
||||
}
|
||||
p_acl->data_len_updating = true;
|
||||
@@ -1495,24 +1499,26 @@ void l2cble_set_fixed_channel_tx_data_length(BD_ADDR remote_bda, UINT16 fix_cid,
|
||||
*******************************************************************************/
|
||||
void l2c_send_update_conn_params_cb(tL2C_LCB *p_lcb, UINT8 status)
|
||||
{
|
||||
if(conn_callback_func.update_conn_param_cb != NULL){
|
||||
tBTM_LE_UPDATE_CONN_PRAMS update_param;
|
||||
//if myself update the connection parameters
|
||||
if (p_lcb->updating_param_flag){
|
||||
update_param.max_conn_int = p_lcb->updating_conn_max_interval;
|
||||
update_param.min_conn_int = p_lcb->updating_conn_min_interval;
|
||||
p_lcb->updating_param_flag = false;
|
||||
}else{
|
||||
// remote device update the connection parameters
|
||||
update_param.max_conn_int = update_param.min_conn_int = 0;
|
||||
}
|
||||
// current connection parameters
|
||||
update_param.conn_int = p_lcb->current_used_conn_interval;
|
||||
update_param.slave_latency = p_lcb->current_used_conn_latency;
|
||||
update_param.supervision_tout = p_lcb->current_used_conn_timeout;
|
||||
|
||||
(conn_callback_func.update_conn_param_cb)(status, p_lcb->remote_bd_addr, &update_param);
|
||||
tBTM_BLE_LEGACY_GAP_CB_PARAMS cb_params = {0};
|
||||
//if myself update the connection parameters
|
||||
if (p_lcb->updating_param_flag){
|
||||
cb_params.conn_params_update.max_conn_int = p_lcb->updating_conn_max_interval;
|
||||
cb_params.conn_params_update.min_conn_int = p_lcb->updating_conn_min_interval;
|
||||
p_lcb->updating_param_flag = false;
|
||||
}else{
|
||||
// remote device update the connection parameters
|
||||
cb_params.conn_params_update.max_conn_int = cb_params.conn_params_update.min_conn_int = 0;
|
||||
}
|
||||
// current connection parameters
|
||||
cb_params.conn_params_update.conn_int = p_lcb->current_used_conn_interval;
|
||||
cb_params.conn_params_update.slave_latency = p_lcb->current_used_conn_latency;
|
||||
cb_params.conn_params_update.supervision_tout = p_lcb->current_used_conn_timeout;
|
||||
|
||||
|
||||
cb_params.conn_params_update.status = status;
|
||||
memcpy(cb_params.conn_params_update.remote_bd_addr, p_lcb->remote_bd_addr, BD_ADDR_LEN);
|
||||
|
||||
BTM_LegacyBleCallbackTrigger(BTM_BLE_LEGACY_GAP_CONNECTION_PARAMS_UPDATE_EVT, &cb_params);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
||||
Reference in New Issue
Block a user