11/*
2- * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
2+ * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
33 *
44 * SPDX-License-Identifier: Apache-2.0
55 */
@@ -131,6 +131,10 @@ extern void r_ble_lll_rfmgmt_set_sleep_cb(void *s_cb, void *w_cb, void *s_arg,
131131extern void r_ble_rtc_wake_up_state_clr (void );
132132extern int os_msys_init (void );
133133extern void os_msys_deinit (void );
134+ #if CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
135+ extern void r_ble_ll_scan_start_time_init_compensation (uint32_t init_compensation );
136+ extern void r_priv_sdk_config_insert_proc_time_set (uint16_t insert_proc_time );
137+ #endif // CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
134138#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
135139extern sleep_retention_entries_config_t * r_esp_ble_mac_retention_link_get (uint8_t * size , uint8_t extra );
136140extern void r_esp_ble_set_wakeup_overhead (uint32_t overhead );
@@ -495,11 +499,13 @@ static int esp_ecc_gen_dh_key(const uint8_t *peer_pub_key_x, const uint8_t *peer
495499 return rc ;
496500}
497501
498- static int esp_intr_alloc_wrapper (int source , int flags , intr_handler_t handler ,
499- void * arg , void * * ret_handle_in )
502+ static int esp_intr_alloc_wrapper (int source , int flags , intr_handler_t handler , void * arg , void * * ret_handle_in )
500503{
501- int rc = esp_intr_alloc (source , flags | ESP_INTR_FLAG_IRAM , handler ,
502- arg , (intr_handle_t * )ret_handle_in );
504+ #if CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
505+ int rc = esp_intr_alloc (source , flags , handler , arg , (intr_handle_t * )ret_handle_in );
506+ #else
507+ int rc = esp_intr_alloc (source , flags | ESP_INTR_FLAG_IRAM , handler , arg , (intr_handle_t * )ret_handle_in );
508+ #endif
503509 return rc ;
504510}
505511
@@ -1043,6 +1049,10 @@ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
10431049 coex_enable ();
10441050#endif // CONFIG_SW_COEXIST_ENABLE
10451051
1052+ #if CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
1053+ r_ble_ll_scan_start_time_init_compensation (500 );
1054+ r_priv_sdk_config_insert_proc_time_set (500 );
1055+ #endif // CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
10461056 if (r_ble_controller_enable (mode ) != 0 ) {
10471057 ret = ESP_FAIL ;
10481058 goto error ;
@@ -1203,9 +1213,17 @@ esp_err_t esp_ble_tx_power_set(esp_ble_power_type_t power_type, esp_power_level_
12031213
12041214 switch (power_type ) {
12051215 case ESP_BLE_PWR_TYPE_DEFAULT :
1216+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1217+ stat = ESP_OK ;
1218+ }
1219+ break ;
12061220 case ESP_BLE_PWR_TYPE_ADV :
1221+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_ADV , 0xFF , power_level ) == 0 ) {
1222+ stat = ESP_OK ;
1223+ }
1224+ break ;
12071225 case ESP_BLE_PWR_TYPE_SCAN :
1208- if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1226+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 , power_level ) == 0 ) {
12091227 stat = ESP_OK ;
12101228 }
12111229 break ;
@@ -1236,9 +1254,13 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
12361254 esp_err_t stat = ESP_FAIL ;
12371255 switch (power_type ) {
12381256 case ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT :
1257+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1258+ stat = ESP_OK ;
1259+ }
1260+ break ;
12391261 case ESP_BLE_ENHANCED_PWR_TYPE_SCAN :
12401262 case ESP_BLE_ENHANCED_PWR_TYPE_INIT :
1241- if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1263+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 , power_level ) == 0 ) {
12421264 stat = ESP_OK ;
12431265 }
12441266 break ;
@@ -1261,11 +1283,15 @@ esp_power_level_t esp_ble_tx_power_get(esp_ble_power_type_t power_type)
12611283 int tx_level = 0 ;
12621284
12631285 switch (power_type ) {
1264- case ESP_BLE_PWR_TYPE_ADV :
1265- case ESP_BLE_PWR_TYPE_SCAN :
12661286 case ESP_BLE_PWR_TYPE_DEFAULT :
12671287 tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 );
12681288 break ;
1289+ case ESP_BLE_PWR_TYPE_ADV :
1290+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_ADV , 0 );
1291+ break ;
1292+ case ESP_BLE_PWR_TYPE_SCAN :
1293+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 );
1294+ break ;
12691295 case ESP_BLE_PWR_TYPE_CONN_HDL0 :
12701296 case ESP_BLE_PWR_TYPE_CONN_HDL1 :
12711297 case ESP_BLE_PWR_TYPE_CONN_HDL2 :
@@ -1295,9 +1321,11 @@ esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t po
12951321
12961322 switch (power_type ) {
12971323 case ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT :
1324+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 );
1325+ break ;
12981326 case ESP_BLE_ENHANCED_PWR_TYPE_SCAN :
12991327 case ESP_BLE_ENHANCED_PWR_TYPE_INIT :
1300- tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 );
1328+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 );
13011329 break ;
13021330 case ESP_BLE_ENHANCED_PWR_TYPE_ADV :
13031331 case ESP_BLE_ENHANCED_PWR_TYPE_CONN :
0 commit comments