feat(ble): add priority level config on ESP32-C5

(cherry picked from commit 96bdca38a1)

Co-authored-by: zhaoweiliang <zhaoweiliang@espressif.com>
This commit is contained in:
Zhou Xiao
2025-10-23 15:12:43 +08:00
parent aa670c11d2
commit 6ca39fa25d
3 changed files with 66 additions and 2 deletions

View File

@@ -881,3 +881,65 @@ endmenu
config BT_LE_DTM_ENABLED
bool "Enable Direct Test Mode (DTM) feature"
default n
menu "Scheduling Priority Level Config"
choice BT_LE_ADV_SCHED_PRIO_LEVEL
prompt "The Adv scheduling priority level"
default BT_LE_ADV_SCHED_PRIO_LOW_LEVEL
help
The Adv scheduling priority level is used for arbitration when internal scheduling conflicts.
config BT_LE_ADV_SCHED_PRIO_LOW_LEVEL
bool "low priority level"
config BT_LE_ADV_SCHED_PRIO_MID_LEVEL
bool "medium priority level"
config BT_LE_ADV_SCHED_PRIO_HIGH_LEVEL
bool "high priority level"
endchoice
config BT_LE_DFT_ADV_SCHED_PRIO_LEVEL
int
default 0 if BT_LE_ADV_SCHED_PRIO_LOW_LEVEL
default 1 if BT_LE_ADV_SCHED_PRIO_MID_LEVEL
default 2 if BT_LE_ADV_SCHED_PRIO_HIGH_LEVEL
default 0
choice BT_LE_PERIODIC_ADV_SCHED_PRIO_LEVEL
prompt "The Periodic Adv scheduling priority level"
default BT_LE_PERIODIC_ADV_SCHED_PRIO_MID_LEVEL
help
The Periodic Adv scheduling priority level is used for arbitration when internal scheduling conflicts.
config BT_LE_PERIODIC_ADV_SCHED_PRIO_LOW_LEVEL
bool "low priority level"
config BT_LE_PERIODIC_ADV_SCHED_PRIO_MID_LEVEL
bool "medium priority level"
config BT_LE_PERIODIC_ADV_SCHED_PRIO_HIGH_LEVEL
bool "high priority level"
endchoice
config BT_LE_DFT_PERIODIC_ADV_SCHED_PRIO_LEVEL
int
default 0 if BT_LE_PERIODIC_ADV_SCHED_PRIO_LOW_LEVEL
default 1 if BT_LE_PERIODIC_ADV_SCHED_PRIO_MID_LEVEL
default 2 if BT_LE_PERIODIC_ADV_SCHED_PRIO_HIGH_LEVEL
default 1
choice BT_LE_SYNC_SCHED_PRIO_LEVEL
prompt "The Sync scheduling priority level"
default BT_LE_SYNC_SCHED_PRIO_MID_LEVEL
help
The SYNC scheduling priority level is used for arbitration when internal scheduling conflicts.
config BT_LE_SYNC_SCHED_PRIO_LOW_LEVEL
bool "low priority level"
config BT_LE_SYNC_SCHED_PRIO_MID_LEVEL
bool "medium priority level"
config BT_LE_SYNC_SCHED_PRIO_HIGH_LEVEL
bool "high priority level"
endchoice
config BT_LE_DFT_SYNC_SCHED_PRIO_LEVEL
int
default 0 if BT_LE_SYNC_SCHED_PRIO_LOW_LEVEL
default 1 if BT_LE_SYNC_SCHED_PRIO_MID_LEVEL
default 2 if BT_LE_SYNC_SCHED_PRIO_HIGH_LEVEL
default 1
endmenu

View File

@@ -297,7 +297,7 @@ extern "C" {
#define RUN_BQB_TEST (0)
#define RUN_QA_TEST (0)
#define NIMBLE_DISABLE_SCAN_BACKOFF (0)
#define BT_LL_CTRL_PRIO_LVL_CFG ((CONFIG_BT_LE_DFT_SYNC_SCHED_PRIO_LEVEL << 4) | (CONFIG_BT_LE_DFT_PERIODIC_ADV_SCHED_PRIO_LEVEL << 2) | CONFIG_BT_LE_DFT_ADV_SCHED_PRIO_LEVEL)
#ifdef __cplusplus
}
#endif

View File

@@ -159,7 +159,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
*/
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
#define CONFIG_VERSION 0x20250606
#define CONFIG_VERSION 0x20251022
#define CONFIG_MAGIC 0x5A5AA5A5
/**
@@ -234,6 +234,7 @@ typedef struct {
int8_t ch39_txpwr; /*!< BLE transmit power (in dBm) used for BLE advertising on channel 39. */
uint8_t adv_rsv_cnt; /*!< BLE adv state machine reserve count number */
uint8_t conn_rsv_cnt; /*!< BLE conn state machine reserve count number */
uint8_t priority_level_cfg; /*!< The option for priority level configuration */
uint32_t config_magic; /*!< Magic number for configuration validation */
} esp_bt_controller_config_t;
@@ -295,6 +296,7 @@ typedef struct {
.ch39_txpwr = BLE_LL_TX_PWR_DBM_N, \
.adv_rsv_cnt = BLE_LL_ADV_SM_RESERVE_CNT_N, \
.conn_rsv_cnt = BLE_LL_CONN_SM_RESERVE_CNT_N, \
.priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \
.config_magic = CONFIG_MAGIC, \
}