mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/fix_bluedroid_ble50_adv_data_length_issue_v4.3' into 'release/v4.3'
components/bt: Fix bluedroid ble50 adv data length issue(backport release/v4.3) See merge request espressif/esp-idf!16580
This commit is contained in:
commit
9b2f6a2a77
@ -66,6 +66,13 @@ config BT_CTRL_HW_CCA
|
||||
help
|
||||
It enables HW CCA feature in controller
|
||||
|
||||
config BT_CTRL_HW_CCA_VAL
|
||||
int "CCA threshold value"
|
||||
range 20 60
|
||||
default 20
|
||||
help
|
||||
It is the threshold value of HW CCA, if the value is 30, it means CCA threshold is -30 dBm.
|
||||
|
||||
config BT_CTRL_HW_CCA_EFF
|
||||
int
|
||||
default 1 if BT_CTRL_HW_CCA
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 07df01f3bfd650a257d5481e6b32f5ce9731735a
|
||||
Subproject commit a01066d87297c330196162fd84cdb108cfa9f67b
|
@ -209,7 +209,8 @@ static void parse_ble_read_adv_max_len_response(
|
||||
{
|
||||
|
||||
uint8_t *stream = read_command_complete_header(response, HCI_BLE_RD_MAX_ADV_DATA_LEN, 1 /* bytes after */);
|
||||
STREAM_TO_UINT8(*adv_max_len_ptr, stream);
|
||||
// Size: 2 Octets ; Value: 0x001F – 0x0672 ; Maximum supported advertising data length
|
||||
STREAM_TO_UINT16(*adv_max_len_ptr, stream);
|
||||
|
||||
osi_free(response);
|
||||
}
|
||||
|
@ -689,23 +689,16 @@ tBTM_STATUS BTM_BlePeriodicAdvCfgDataRaw(UINT8 instance, UINT16 len, UINT8 *data
|
||||
{
|
||||
tBTM_STATUS status = BTM_SUCCESS;
|
||||
tHCI_STATUS err = HCI_SUCCESS;
|
||||
uint16_t rem_len;
|
||||
uint16_t rem_len = len;
|
||||
UINT8 operation = 0;
|
||||
UINT16 data_offset = 0;
|
||||
tBTM_BLE_5_GAP_CB_PARAMS cb_params = {0};
|
||||
|
||||
if ((status = btm_ble_ext_adv_set_data_validate(instance, len, data)) != BTM_SUCCESS) {
|
||||
BTM_TRACE_ERROR("%s, invalid extend adv data.", __func__);
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (len > controller_get_interface()->ble_get_ext_adv_data_max_len()) {
|
||||
BTM_TRACE_ERROR("%s, The adv data len(%d) is longer then the controller adv max len(%d)",
|
||||
__func__, len, controller_get_interface()->ble_get_ext_adv_data_max_len());
|
||||
status = BTM_ILLEGAL_VALUE;
|
||||
}
|
||||
|
||||
rem_len = len;
|
||||
|
||||
do {
|
||||
UINT8 send_data_len = (rem_len > BTM_BLE_PERIODIC_ADV_DATA_LEN_MAX) ? BTM_BLE_PERIODIC_ADV_DATA_LEN_MAX : rem_len;
|
||||
|
||||
@ -729,8 +722,8 @@ tBTM_STATUS BTM_BlePeriodicAdvCfgDataRaw(UINT8 instance, UINT16 len, UINT8 *data
|
||||
data_offset += send_data_len;
|
||||
} while(rem_len);
|
||||
|
||||
end:
|
||||
cb_params.status = status;
|
||||
|
||||
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_PERIODIC_ADV_DATA_SET_COMPLETE_EVT, &cb_params);
|
||||
|
||||
return status;
|
||||
@ -1108,6 +1101,12 @@ static tBTM_STATUS btm_ble_ext_adv_set_data_validate(UINT8 instance, UINT16 len,
|
||||
BTM_TRACE_ERROR("%s, for the legacy adv, the adv data length can't exceed 31. line %d", __func__, __LINE__);
|
||||
return BTM_ILLEGAL_VALUE;
|
||||
}
|
||||
} else {
|
||||
if (len > controller_get_interface()->ble_get_ext_adv_data_max_len()) {
|
||||
BTM_TRACE_ERROR("%s, The adv data len(%d) is longer then the controller adv max len(%d)",
|
||||
__func__, len, controller_get_interface()->ble_get_ext_adv_data_max_len());
|
||||
return BTM_ILLEGAL_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
return BTM_SUCCESS;
|
||||
|
@ -26,7 +26,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#define ESP_BT_CTRL_CONFIG_MAGIC_VAL 0x5A5AA5A5
|
||||
#define ESP_BT_CTRL_CONFIG_VERSION 0x02104270
|
||||
#define ESP_BT_CTRL_CONFIG_VERSION 0x02112280
|
||||
|
||||
#define ESP_BT_HCI_TL_MAGIC_VALUE 0xfadebead
|
||||
#define ESP_BT_HCI_TL_VERSION 0x00010000
|
||||
@ -179,6 +179,7 @@ enum {
|
||||
.hw_target_code = BLE_HW_TARGET_CODE_ESP32C3_CHIP_ECO0, \
|
||||
.slave_ce_len_min = SLAVE_CE_LEN_MIN_DEFAULT, \
|
||||
.hw_recorrect_en = AGC_RECORRECT_EN, \
|
||||
.cca_thresh = CONFIG_BT_CTRL_HW_CCA_VAL, \
|
||||
};
|
||||
|
||||
#else
|
||||
@ -245,6 +246,7 @@ typedef struct {
|
||||
uint32_t hw_target_code; /*!< hardware target */
|
||||
uint8_t slave_ce_len_min;
|
||||
uint8_t hw_recorrect_en;
|
||||
uint8_t cca_thresh; /*!< cca threshold*/
|
||||
} esp_bt_controller_config_t;
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user