Skip to content

Commit 9d687da

Browse files
feat(ble): support creating connections during scanning process on ESP32-C5
1 parent 207d85a commit 9d687da

File tree

4 files changed

+23
-11
lines changed

4 files changed

+23
-11
lines changed

components/bt/controller/esp32c5/Kconfig.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,3 +805,10 @@ config BT_LE_CTRL_ADV_DATA_LENGTH_ZERO_AUX
805805
config BT_LE_RXBUF_OPT_ENABLED
806806
bool "Enable rxbuf optimization feature"
807807
default y
808+
809+
config BT_LE_CTRL_FAST_CONN_DATA_TX_EN
810+
bool "Enable fast sending of connection data"
811+
default y
812+
help
813+
If this option is enabled, The Controller will continue to
814+
Send an empty PDU after sending valid connection data within an interval.

components/bt/controller/esp32c5/bt.c

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
#define OSI_COEX_VERSION 0x00010006
6868
#define OSI_COEX_MAGIC_VALUE 0xFADEBEAD
6969

70-
#define EXT_FUNC_VERSION 0x20240422
70+
#define EXT_FUNC_VERSION 0x20250415
7171
#define EXT_FUNC_MAGIC_VALUE 0xA5A5A5A5
7272

7373
#define BT_ASSERT_PRINT ets_printf
@@ -98,14 +98,12 @@ struct ext_funcs_t {
9898
int (* _ecc_gen_key_pair)(uint8_t *public, uint8_t *priv);
9999
int (* _ecc_gen_dh_key)(const uint8_t *remote_pub_key_x, const uint8_t *remote_pub_key_y,
100100
const uint8_t *local_priv_key, uint8_t *dhkey);
101-
void (* _esp_reset_rpa_moudle)(void);
102101
uint32_t magic;
103102
};
104103

105104
#if CONFIG_BT_LE_CONTROLLER_LOG_ENABLED
106105
typedef void (*interface_func_t) (uint32_t len, const uint8_t *addr, uint32_t len_append, const uint8_t *addr_append, uint32_t flag);
107106
#endif // CONFIG_BT_LE_CONTROLLER_LOG_ENABLED
108-
109107
/* External functions or variables
110108
************************************************************************
111109
*/
@@ -182,7 +180,6 @@ static int esp_intr_alloc_wrapper(int source, int flags, intr_handler_t handler,
182180
static int esp_intr_free_wrapper(void **ret_handle);
183181
static void osi_assert_wrapper(const uint32_t ln, const char *fn, uint32_t param1, uint32_t param2);
184182
static uint32_t osi_random_wrapper(void);
185-
static void esp_reset_rpa_moudle(void);
186183
static int esp_ecc_gen_key_pair(uint8_t *pub, uint8_t *priv);
187184
static int esp_ecc_gen_dh_key(const uint8_t *peer_pub_key_x, const uint8_t *peer_pub_key_y,
188185
const uint8_t *our_priv_key, uint8_t *out_dhkey);
@@ -459,15 +456,9 @@ struct ext_funcs_t ext_funcs_ro = {
459456
._os_random = osi_random_wrapper,
460457
._ecc_gen_key_pair = esp_ecc_gen_key_pair,
461458
._ecc_gen_dh_key = esp_ecc_gen_dh_key,
462-
._esp_reset_rpa_moudle = esp_reset_rpa_moudle,
463459
.magic = EXT_FUNC_MAGIC_VALUE,
464460
};
465461

466-
static void IRAM_ATTR esp_reset_rpa_moudle(void)
467-
{
468-
469-
}
470-
471462
static void IRAM_ATTR osi_assert_wrapper(const uint32_t ln, const char *fn,
472463
uint32_t param1, uint32_t param2)
473464
{

components/bt/controller/esp32c5/esp_bt_cfg.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,12 @@ extern "C" {
192192
#define DEFAULT_BT_LE_CTRL_ADV_DATA_LENGTH_ZERO_AUX (0)
193193
#endif
194194

195+
#if defined(CONFIG_BT_LE_CTRL_FAST_CONN_DATA_TX_EN)
196+
#define DEFAULT_BT_LE_CTRL_FAST_CONN_DATA_TX_EN (CONFIG_BT_LE_CTRL_FAST_CONN_DATA_TX_EN)
197+
#else
198+
#define DEFAULT_BT_LE_CTRL_FAST_CONN_DATA_TX_EN (0)
199+
#endif
200+
195201
#ifdef CONFIG_BT_LE_HCI_INTERFACE_USE_UART
196202
#define HCI_UART_EN CONFIG_BT_LE_HCI_INTERFACE_USE_UART
197203
#else

components/bt/include/esp32c5/include/esp_bt.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
159159
*/
160160
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
161161

162-
#define CONFIG_VERSION 0x20250310
162+
#define CONFIG_VERSION 0x20250513
163163
#define CONFIG_MAGIC 0x5A5AA5A5
164164

165165
/**
@@ -226,6 +226,11 @@ typedef struct {
226226
- 1 - Enable */
227227
uint8_t vhci_enabled; /*!< VHCI mode is enabled */
228228
uint8_t ptr_check_enabled; /*!< Enable boundary check for internal memory. */
229+
uint8_t ble_adv_tx_options; /*!< The options for Extended advertising sending. */
230+
uint8_t skip_unnecessary_checks_en; /*!< The option to skip non-fatal state checks and perform extra handling for fatal checks. */
231+
uint8_t fast_conn_data_tx_en; /*!< The option for fast transmission of connection data
232+
- 0 - Disable
233+
- 1 - Enable (default) */
229234
uint32_t config_magic; /*!< Magic number for configuration validation */
230235
} esp_bt_controller_config_t;
231236

@@ -281,6 +286,9 @@ typedef struct {
281286
.ble_data_lenth_zero_aux = DEFAULT_BT_LE_CTRL_ADV_DATA_LENGTH_ZERO_AUX, \
282287
.vhci_enabled = DEFAULT_BT_LE_VHCI_ENABLED, \
283288
.ptr_check_enabled = DEFAULT_BT_LE_PTR_CHECK_ENABLED, \
289+
.ble_adv_tx_options = 0, \
290+
.skip_unnecessary_checks_en = 0, \
291+
.fast_conn_data_tx_en = DEFAULT_BT_LE_CTRL_FAST_CONN_DATA_TX_EN, \
284292
.config_magic = CONFIG_MAGIC, \
285293
}
286294

0 commit comments

Comments
 (0)