Skip to content

Commit

Permalink
Merge branch 'change/reduce_usage_of_iram_when_bt_in_single_mode' int…
Browse files Browse the repository at this point in the history
…o 'master'

change(bt/bluedroid): reset the app  redirected functions in controller based on the bluetooth mode

Closes BT-3546

See merge request espressif/esp-idf!28040
  • Loading branch information
wmy-espressif committed Feb 23, 2024
2 parents 859bd52 + 112ad70 commit e265484
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
21 changes: 20 additions & 1 deletion components/bt/controller/esp32/bt.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ do{\
} while(0)

#define OSI_FUNCS_TIME_BLOCKING 0xffffffff
#define OSI_VERSION 0x00010004
#define OSI_VERSION 0x00010005
#define OSI_MAGIC_VALUE 0xFADEBEAD

/* Types definition
Expand Down Expand Up @@ -176,6 +176,7 @@ struct osi_funcs_t {
void (*_interrupt_l3_restore)(void);
void *(* _customer_queue_create)(uint32_t queue_len, uint32_t item_size);
int (* _coex_version_get)(unsigned int *major, unsigned int *minor, unsigned int *patch);
void (* _patch_apply)(void);
uint32_t _magic;
};

Expand Down Expand Up @@ -243,6 +244,10 @@ extern uint32_t _nimble_data_end;
extern uint32_t _btdm_data_start;
extern uint32_t _btdm_data_end;

extern void config_bt_funcs_reset(void);
extern void config_ble_funcs_reset(void);
extern void config_btdm_funcs_reset(void);

/* Local Function Declare
*********************************************************************
*/
Expand Down Expand Up @@ -315,6 +320,7 @@ static void *customer_queue_create_hlevel_wrapper(uint32_t queue_len, uint32_t i
static void interrupt_l3_disable(void);
static void interrupt_l3_restore(void);
static void bt_controller_deinit_internal(void);
static void patch_apply(void);

/* Local variable definition
***************************************************************************
Expand Down Expand Up @@ -402,6 +408,7 @@ static const struct osi_funcs_t osi_funcs_ro = {
._customer_queue_create = NULL,
#endif /* CONFIG_BTDM_CTRL_HLI */
._coex_version_get = coex_version_get_wrapper,
._patch_apply = patch_apply,
._magic = OSI_MAGIC_VALUE,
};

Expand Down Expand Up @@ -1643,6 +1650,18 @@ static void bt_shutdown(void)
return;
}

static void patch_apply(void)
{
config_btdm_funcs_reset();

#ifndef CONFIG_BTDM_CTRL_MODE_BLE_ONLY
config_bt_funcs_reset();
#endif

#ifndef CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY
config_ble_funcs_reset();
#endif
}

esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
{
Expand Down
2 changes: 1 addition & 1 deletion components/bt/controller/lib_esp32

0 comments on commit e265484

Please sign in to comment.