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 */
@@ -133,6 +133,10 @@ extern void r_ble_lll_rfmgmt_set_sleep_cb(void *s_cb, void *w_cb, void *s_arg,
133133extern void r_ble_rtc_wake_up_state_clr (void );
134134extern int os_msys_init (void );
135135extern void os_msys_deinit (void );
136+ #if CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
137+ extern void r_ble_ll_scan_start_time_init_compensation (uint32_t init_compensation );
138+ extern void r_priv_sdk_config_insert_proc_time_set (uint16_t insert_proc_time );
139+ #endif // CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
136140#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
137141extern sleep_retention_entries_config_t * r_esp_ble_mac_retention_link_get (uint8_t * size , uint8_t extra );
138142extern void r_esp_ble_set_wakeup_overhead (uint32_t overhead );
@@ -497,11 +501,13 @@ static int esp_ecc_gen_dh_key(const uint8_t *peer_pub_key_x, const uint8_t *peer
497501 return rc ;
498502}
499503
500- static int esp_intr_alloc_wrapper (int source , int flags , intr_handler_t handler ,
501- void * arg , void * * ret_handle_in )
504+ static int esp_intr_alloc_wrapper (int source , int flags , intr_handler_t handler , void * arg , void * * ret_handle_in )
502505{
503- int rc = esp_intr_alloc (source , flags | ESP_INTR_FLAG_IRAM , handler ,
504- arg , (intr_handle_t * )ret_handle_in );
506+ #if CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
507+ int rc = esp_intr_alloc (source , flags , handler , arg , (intr_handle_t * )ret_handle_in );
508+ #else
509+ int rc = esp_intr_alloc (source , flags | ESP_INTR_FLAG_IRAM , handler , arg , (intr_handle_t * )ret_handle_in );
510+ #endif
505511 return rc ;
506512}
507513
@@ -1045,6 +1051,10 @@ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
10451051 coex_enable ();
10461052#endif // CONFIG_SW_COEXIST_ENABLE
10471053
1054+ #if CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
1055+ r_ble_ll_scan_start_time_init_compensation (500 );
1056+ r_priv_sdk_config_insert_proc_time_set (500 );
1057+ #endif // CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
10481058 if (r_ble_controller_enable (mode ) != 0 ) {
10491059 ret = ESP_FAIL ;
10501060 goto error ;
@@ -1205,9 +1215,17 @@ esp_err_t esp_ble_tx_power_set(esp_ble_power_type_t power_type, esp_power_level_
12051215
12061216 switch (power_type ) {
12071217 case ESP_BLE_PWR_TYPE_DEFAULT :
1218+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1219+ stat = ESP_OK ;
1220+ }
1221+ break ;
12081222 case ESP_BLE_PWR_TYPE_ADV :
1223+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_ADV , 0xFF , power_level ) == 0 ) {
1224+ stat = ESP_OK ;
1225+ }
1226+ break ;
12091227 case ESP_BLE_PWR_TYPE_SCAN :
1210- if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1228+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 , power_level ) == 0 ) {
12111229 stat = ESP_OK ;
12121230 }
12131231 break ;
@@ -1238,9 +1256,13 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
12381256 esp_err_t stat = ESP_FAIL ;
12391257 switch (power_type ) {
12401258 case ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT :
1259+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1260+ stat = ESP_OK ;
1261+ }
1262+ break ;
12411263 case ESP_BLE_ENHANCED_PWR_TYPE_SCAN :
12421264 case ESP_BLE_ENHANCED_PWR_TYPE_INIT :
1243- if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 , power_level ) == 0 ) {
1265+ if (r_ble_txpwr_set (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 , power_level ) == 0 ) {
12441266 stat = ESP_OK ;
12451267 }
12461268 break ;
@@ -1263,11 +1285,15 @@ esp_power_level_t esp_ble_tx_power_get(esp_ble_power_type_t power_type)
12631285 int tx_level = 0 ;
12641286
12651287 switch (power_type ) {
1266- case ESP_BLE_PWR_TYPE_ADV :
1267- case ESP_BLE_PWR_TYPE_SCAN :
12681288 case ESP_BLE_PWR_TYPE_DEFAULT :
12691289 tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 );
12701290 break ;
1291+ case ESP_BLE_PWR_TYPE_ADV :
1292+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_ADV , 0 );
1293+ break ;
1294+ case ESP_BLE_PWR_TYPE_SCAN :
1295+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 );
1296+ break ;
12711297 case ESP_BLE_PWR_TYPE_CONN_HDL0 :
12721298 case ESP_BLE_PWR_TYPE_CONN_HDL1 :
12731299 case ESP_BLE_PWR_TYPE_CONN_HDL2 :
@@ -1297,9 +1323,11 @@ esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t po
12971323
12981324 switch (power_type ) {
12991325 case ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT :
1326+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 );
1327+ break ;
13001328 case ESP_BLE_ENHANCED_PWR_TYPE_SCAN :
13011329 case ESP_BLE_ENHANCED_PWR_TYPE_INIT :
1302- tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_DEFAULT , 0 );
1330+ tx_level = r_ble_txpwr_get (ESP_BLE_ENHANCED_PWR_TYPE_SCAN , 0 );
13031331 break ;
13041332 case ESP_BLE_ENHANCED_PWR_TYPE_ADV :
13051333 case ESP_BLE_ENHANCED_PWR_TYPE_CONN :
0 commit comments