Skip to content

Commit

Permalink
Merge branch 'feature/support_esp32c3_new_app_lib' into 'master'
Browse files Browse the repository at this point in the history
Update BLE lib for ESP32C3 and ESP32S3

Closes BLERD2QA23-11, BLEQABR23-60, BLERD2QA23-24, BT-3197, and BT-3215

See merge request espressif/esp-idf!22668
  • Loading branch information
Weijian-Espressif committed Mar 15, 2023
2 parents 72b7161 + a9d9f11 commit ad1999f
Show file tree
Hide file tree
Showing 6 changed files with 193 additions and 6 deletions.
8 changes: 4 additions & 4 deletions components/bt/controller/esp32c3/bt.c
Expand Up @@ -222,8 +222,8 @@ extern void btdm_in_wakeup_requesting_set(bool in_wakeup_requesting);
/* vendor dependent tasks to be posted and handled by controller task*/
extern int btdm_vnd_offload_task_register(btdm_vnd_ol_sig_t sig, btdm_vnd_ol_task_func_t func);
extern int btdm_vnd_offload_task_deregister(btdm_vnd_ol_sig_t sig);
extern int btdm_vnd_offload_post_from_isr(btdm_vnd_ol_sig_t sig, void *param, bool need_yield);
extern int btdm_vnd_offload_post(btdm_vnd_ol_sig_t sig, void *param);
extern int r_btdm_vnd_offload_post_from_isr(btdm_vnd_ol_sig_t sig, void *param, bool need_yield);
extern int r_btdm_vnd_offload_post(btdm_vnd_ol_sig_t sig, void *param);

/* Low Power Clock */
extern bool btdm_lpclk_select_src(uint32_t sel);
Expand Down Expand Up @@ -846,7 +846,7 @@ static void IRAM_ATTR btdm_sleep_exit_phase0(void *param)
static void IRAM_ATTR btdm_slp_tmr_callback(void *arg)
{
#ifdef CONFIG_PM_ENABLE
btdm_vnd_offload_post(BTDM_VND_OL_SIG_WAKEUP_TMR, (void *)BTDM_ASYNC_WAKEUP_SRC_TMR);
r_btdm_vnd_offload_post(BTDM_VND_OL_SIG_WAKEUP_TMR, (void *)BTDM_ASYNC_WAKEUP_SRC_TMR);
#endif
}

Expand All @@ -863,7 +863,7 @@ static bool async_wakeup_request(int event)
case BTDM_ASYNC_WAKEUP_SRC_DISA:
btdm_in_wakeup_requesting_set(true);
if (!btdm_power_state_active()) {
btdm_vnd_offload_post(BTDM_VND_OL_SIG_WAKEUP_TMR, (void *)event);
r_btdm_vnd_offload_post(BTDM_VND_OL_SIG_WAKEUP_TMR, (void *)event);
do_wakeup_request = true;
semphr_take_wrapper(s_wakeup_req_sem, OSI_FUNCS_TIME_BLOCKING);
}
Expand Down
2 changes: 1 addition & 1 deletion components/bt/controller/lib_esp32c3_family
15 changes: 14 additions & 1 deletion components/bt/include/esp32c3/include/esp_bt.h
Expand Up @@ -19,7 +19,7 @@ extern "C" {
#endif

#define ESP_BT_CTRL_CONFIG_MAGIC_VAL 0x5A5AA5A5
#define ESP_BT_CTRL_CONFIG_VERSION 0x02212090
#define ESP_BT_CTRL_CONFIG_VERSION 0x02302140

#define ESP_BT_HCI_TL_MAGIC_VALUE 0xfadebead
#define ESP_BT_HCI_TL_VERSION 0x00010000
Expand Down Expand Up @@ -154,6 +154,17 @@ typedef void (* esp_bt_hci_tl_callback_t) (void *arg, uint8_t status);
#define BT_CTRL_CODED_AGC_RECORRECT 0
#endif

#if defined (CONFIG_BT_BLE_50_FEATURES_SUPPORTED) || defined (CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT)
#ifdef CONFIG_BT_BLE_50_FEATURES_SUPPORTED
#define BT_CTRL_50_FEATURE_SUPPORT (CONFIG_BT_BLE_50_FEATURES_SUPPORTED)
#endif
#ifdef CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT
#define BT_CTRL_50_FEATURE_SUPPORT (CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT)
#endif
#else
#define BT_CTRL_50_FEATURE_SUPPORT (1)
#endif

#define AGC_RECORRECT_EN ((BT_CTRL_AGC_RECORRECT_EN << 0) | (BT_CTRL_CODED_AGC_RECORRECT <<1))

#define CFG_MASK_BIT_SCAN_DUPLICATE_OPTION (1<<0)
Expand Down Expand Up @@ -198,6 +209,7 @@ typedef void (* esp_bt_hci_tl_callback_t) (void *arg, uint8_t status);
.cca_thresh = CONFIG_BT_CTRL_HW_CCA_VAL, \
.scan_backoff_upperlimitmax = BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX, \
.dup_list_refresh_period = DUPL_SCAN_CACHE_REFRESH_PERIOD, \
.ble_50_feat_supp = BT_CTRL_50_FEATURE_SUPPORT, \
}

#else
Expand Down Expand Up @@ -267,6 +279,7 @@ typedef struct {
uint8_t cca_thresh; /*!< cca threshold*/
uint16_t scan_backoff_upperlimitmax; /*!< scan backoff upperlimitmax value */
uint16_t dup_list_refresh_period; /*!< duplicate scan list refresh time */
bool ble_50_feat_supp; /*!< BLE 5.0 feature support */
} esp_bt_controller_config_t;

/**
Expand Down
4 changes: 4 additions & 0 deletions components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld
Expand Up @@ -57,14 +57,18 @@ r_lld_ext_adv_dynamic_pti_process = 0x40001b48;
r_lld_adv_ext_pkt_prepare_set = 0x40001b4c;
r_lld_adv_ext_chain_none_construct = 0x40001b50;
r_lld_adv_ext_chain_connectable_construct = 0x40001b54;
/*
r_lld_adv_ext_chain_scannable_construct = 0x40001b58;
*/
r_lld_adv_pkt_rx_connect_post = 0x40001b5c;
r_lld_adv_start_init_evt_param = 0x40001b60;
r_lld_adv_start_set_cs = 0x40001b64;
r_lld_adv_start_update_filter_policy = 0x40001b68;
r_lld_adv_start_schedule_asap = 0x40001b6c;
r_lld_con_tx_prog_new_packet_coex = 0x40001b70;
/*
r_lld_con_tx_prog_new_packet = 0x40001b74;
*/
r_lld_per_adv_dynamic_pti_get = 0x40001b78;
r_lld_per_adv_evt_start_chm_upd = 0x40001b7c;
r_lld_ext_scan_dynamic_pti_get = 0x40001b80;
Expand Down
83 changes: 83 additions & 0 deletions components/esp_rom/esp32c3/ld/esp32c3.rom.ld
Expand Up @@ -703,10 +703,14 @@ r_ble_util_data_rx_buf_reset = 0x40000b8c;
r_bt_bb_get_intr_mask = 0x40000b90;
r_bt_bb_intr_clear = 0x40000b94;
r_bt_bb_intr_mask_set = 0x40000b98;
/*
r_bt_bb_isr = 0x40000b9c;
*/
r_bt_rf_coex_cfg_set = 0x40000ba0;
r_bt_rf_coex_conn_dynamic_pti_en_get = 0x40000ba4;
/*
r_bt_rf_coex_conn_phy_coded_data_time_limit_en_get = 0x40000ba8;
*/
r_bt_rf_coex_ext_adv_dynamic_pti_en_get = 0x40000bac;
r_bt_rf_coex_ext_scan_dynamic_pti_en_get = 0x40000bb0;
r_bt_rf_coex_legacy_adv_dynamic_pti_en_get = 0x40000bb4;
Expand All @@ -728,14 +732,18 @@ r_bt_rtp_apply_rule_cs_fmt = 0x40000bf0;
r_bt_rtp_apply_rule_cs_idx = 0x40000bf4;
r_bt_rtp_deregister_rule_cs_fmt = 0x40000bf8;
r_bt_rtp_deregister_rule_cs_idx = 0x40000bfc;
/*
r_bt_rtp_get_txpwr_idx_by_act = 0x40000c00;
*/
r_bt_rtp_init = 0x40000c04;
r_bt_rtp_register_rule_cs_fmt = 0x40000c08;
r_bt_rtp_register_rule_cs_idx = 0x40000c0c;
r_btdm_isr = 0x40000c10;
/*
r_btdm_task_post = 0x40000c14;
r_btdm_task_post_from_isr = 0x40000c18;
r_btdm_task_recycle = 0x40000c1c;
*/
r_cali_phase_match_p = 0x40000c20;
r_cmp_abs_time = 0x40000c24;
r_cmp_dest_id = 0x40000c28;
Expand Down Expand Up @@ -831,7 +839,9 @@ r_hci_look_for_evt_desc = 0x40000d8c;
r_hci_look_for_le_evt_desc = 0x40000d90;
r_hci_look_for_le_evt_desc_esp = 0x40000d94;
r_hci_pack_bytes = 0x40000d98;
/*
r_hci_register_vendor_desc_tab = 0x40000d9c;
*/
r_hci_send_2_controller = 0x40000da0;
r_hci_send_2_host = 0x40000da4;
r_hci_tl_c2h_data_flow_on = 0x40000da8;
Expand Down Expand Up @@ -888,7 +898,9 @@ r_ke_task_handler_get = 0x40000e70;
r_ke_task_init = 0x40000e74;
r_ke_task_msg_flush = 0x40000e78;
r_ke_task_saved_update = 0x40000e7c;
/*
r_ke_task_schedule = 0x40000e80;
*/
r_ke_time = 0x40000e84;
r_ke_time_cmp = 0x40000e88;
r_ke_time_past = 0x40000e8c;
Expand Down Expand Up @@ -916,7 +928,9 @@ r_llc_dl_chg_check = 0x40000ee0;
r_llc_dle_proc_err_cb = 0x40000ee4;
r_llc_feats_exch_proc_err_cb = 0x40000ee8;
r_llc_hci_cmd_handler_tab_p_get = 0x40000eec;
/*
r_llc_hci_command_handler = 0x40000ef0;
*/
r_llc_hci_con_param_req_evt_send = 0x40000ef4;
r_llc_hci_con_upd_info_send = 0x40000ef8;
r_llc_hci_disconnected_dis = 0x40000efc;
Expand Down Expand Up @@ -944,7 +958,9 @@ r_llc_llcp_state_set = 0x40000f50;
r_llc_llcp_trans_timer_set = 0x40000f54;
r_llc_llcp_tx_check = 0x40000f58;
r_llc_loc_ch_map_proc_continue = 0x40000f5c;
/*
r_llc_loc_con_upd_proc_continue = 0x40000f60;
*/
r_llc_loc_con_upd_proc_err_cb = 0x40000f64;
r_llc_loc_dl_upd_proc_continue = 0x40000f68;
r_llc_loc_encrypt_proc_continue = 0x40000f6c;
Expand All @@ -965,7 +981,9 @@ r_llc_proc_timer_pause_set = 0x40000fa4;
r_llc_proc_timer_set = 0x40000fa8;
r_llc_proc_unreg = 0x40000fac;
r_llc_rem_ch_map_proc_continue = 0x40000fb0;
/*
r_llc_rem_con_upd_proc_continue = 0x40000fb4;
*/
r_llc_rem_con_upd_proc_err_cb = 0x40000fb8;
r_llc_rem_dl_upd_proc = 0x40000fbc;
r_llc_rem_encrypt_proc_continue = 0x40000fc0;
Expand Down Expand Up @@ -1054,10 +1072,14 @@ r_lld_con_rx_isr = 0x40001108;
r_lld_con_rx_link_info_check = 0x4000110c;
r_lld_con_rx_llcp_check = 0x40001110;
r_lld_con_rx_sync_time_update = 0x40001114;
/*
r_lld_con_sched = 0x40001118;
*/
r_lld_con_set_tx_power = 0x4000111c;
r_lld_con_start = 0x40001120;
/*
r_lld_con_stop = 0x40001124;
*/
r_lld_con_tx = 0x40001128;
r_lld_con_tx_enc = 0x4000112c;
r_lld_con_tx_isr = 0x40001130;
Expand Down Expand Up @@ -1092,7 +1114,9 @@ r_lld_init_set_tx_power = 0x400011a0;
r_lld_init_start = 0x400011a4;
r_lld_init_stop = 0x400011a8;
r_lld_instant_proc_end = 0x400011ac;
/*
r_lld_llcp_rx_ind_handler = 0x400011b0;
*/
r_lld_per_adv_ch_map_update = 0x400011b4;
r_lld_per_adv_chain_construct = 0x400011b8;
r_lld_per_adv_cleanup = 0x400011bc;
Expand All @@ -1110,7 +1134,9 @@ r_lld_per_adv_init = 0x400011e8;
r_lld_per_adv_init_info_get = 0x400011ec;
r_lld_per_adv_list_add = 0x400011f0;
r_lld_per_adv_list_rem = 0x400011f4;
/*
r_lld_per_adv_sched = 0x400011f8;
*/
r_lld_per_adv_set_tx_power = 0x400011fc;
r_lld_per_adv_start = 0x40001200;
r_lld_per_adv_stop = 0x40001204;
Expand Down Expand Up @@ -1144,8 +1170,10 @@ r_lld_scan_frm_rx_isr = 0x40001270;
r_lld_scan_frm_skip_isr = 0x40001274;
r_lld_scan_init = 0x40001278;
r_lld_scan_params_update = 0x4000127c;
/*
r_lld_scan_process_pkt_rx = 0x40001280;
r_lld_scan_process_pkt_rx_adv_rep = 0x40001284;
*/
r_lld_scan_process_pkt_rx_aux_adv_ind = 0x40001288;
r_lld_scan_process_pkt_rx_aux_chain_ind = 0x4000128c;
r_lld_scan_process_pkt_rx_aux_scan_rsp = 0x40001290;
Expand Down Expand Up @@ -1220,7 +1248,9 @@ r_llm_is_dev_synced = 0x400013a0;
r_llm_is_non_con_act_ongoing_check = 0x400013a4;
r_llm_is_wl_accessible = 0x400013a8;
r_llm_le_evt_mask_check = 0x400013ac;
/*
r_llm_le_features_get = 0x400013b0;
*/
r_llm_link_disc = 0x400013b4;
r_llm_master_ch_map_get = 0x400013b8;
r_llm_msg_handler_tab_p_get = 0x400013bc;
Expand All @@ -1240,7 +1270,9 @@ r_misc_msg_handler_tab_p_get = 0x400013f0;
r_notEqual256 = 0x400013f4;
r_phy_upd_proc_start = 0x400013f8;
r_platform_reset = 0x400013fc;
/*
r_register_esp_vendor_cmd_handler = 0x40001400;
*/
r_rf_em_init = 0x40001404;
r_rf_force_agc_enable = 0x40001408;
r_rf_reg_rd = 0x4000140c;
Expand All @@ -1250,8 +1282,10 @@ r_rf_rssi_convert = 0x40001418;
r_rf_rw_v9_le_disable = 0x4000141c;
r_rf_rw_v9_le_enable = 0x40001420;
r_rf_sleep = 0x40001424;
/*
r_rf_txpwr_cs_get = 0x40001428;
r_rf_txpwr_dbm_get = 0x4000142c;
*/
r_rf_util_cs_fmt_convert = 0x40001430;
r_rw_crypto_aes_ccm = 0x40001434;
r_rw_crypto_aes_encrypt = 0x40001438;
Expand All @@ -1265,7 +1299,9 @@ r_rw_crypto_aes_result_handler = 0x40001454;
r_rw_crypto_aes_s1 = 0x40001458;
r_rw_cryto_aes_cmac = 0x4000145c;
r_rw_v9_init_em_radio_table = 0x40001460;
/*
r_rwble_isr = 0x40001464;
*/
r_rwble_sleep_enter = 0x40001468;
r_rwble_sleep_wakeup_end = 0x4000146c;
r_rwbtdm_isr_wrapper = 0x40001470;
Expand Down Expand Up @@ -1302,7 +1338,9 @@ r_sch_alarm_set = 0x400014e8;
r_sch_alarm_timer_isr = 0x400014ec;
r_sch_arb_conflict_check = 0x400014f0;
r_sch_arb_elt_cancel = 0x400014f4;
/*
r_sch_arb_event_start_isr = 0x400014f8;
*/
r_sch_arb_init = 0x400014fc;
r_sch_arb_insert = 0x40001500;
r_sch_arb_prog_timer = 0x40001504;
Expand All @@ -1317,8 +1355,10 @@ r_sch_plan_offset_req = 0x40001524;
r_sch_plan_position_range_compute = 0x40001528;
r_sch_plan_rem = 0x4000152c;
r_sch_plan_req = 0x40001530;
/*
r_sch_plan_set = 0x40001534;
r_sch_prog_end_isr = 0x40001538;
*/
r_sch_prog_init = 0x4000153c;
r_sch_prog_push = 0x40001540;
r_sch_prog_rx_isr = 0x40001544;
Expand Down Expand Up @@ -1491,6 +1531,49 @@ rwip_coex_cfg = 0x3ff1eeac;
rwip_priority = 0x3ff1ee94;
veryBigHexP256 = 0x3ff1ee48;

/* bluetooth hook funcs */
r_llc_loc_encrypt_proc_continue_hook = 0x40001c60;
r_llc_loc_phy_upd_proc_continue_hook = 0x40001c64;
r_llc_rem_phy_upd_proc_continue_hook = 0x40001c68;
r_lld_scan_frm_eof_isr_hook = 0x40001c6c;
r_lld_scan_evt_start_cbk_hook = 0x40001c70;
/*
r_lld_scan_start_hook = 0x40001c74;
*/
r_lld_scan_process_pkt_rx_ext_adv_hook = 0x40001c78;
r_lld_scan_sched_hook = 0x40001c7c;
/*
r_lld_adv_start_hook = 0x40001c80;
*/
r_lld_adv_evt_start_cbk_hook = 0x40001c84;
r_lld_adv_aux_evt_start_cbk_hook = 0x40001c88;
r_lld_adv_frm_isr_hook = 0x40001c8c;
r_lld_adv_start_init_evt_param_hook = 0x40001c90;
r_lld_con_evt_canceled_cbk_hook = 0x40001c94;
r_lld_con_frm_isr_hook = 0x40001c98;
r_lld_con_tx_hook = 0x40001c9c;
r_lld_con_rx_hook = 0x40001ca0;
r_lld_con_evt_start_cbk_hook = 0x40001ca4;
/*
r_lld_con_start_hook = 0x40001ca8;
*/
r_lld_con_tx_prog_new_packet_hook = 0x40001cac;
r_lld_init_frm_eof_isr_hook = 0x40001cb0;
r_lld_init_evt_start_cbk_hook = 0x40001cb4;
/*
r_lld_init_start_hook = 0x40001cb8;
*/
r_lld_init_sched_hook = 0x40001cbc;
r_lld_init_process_pkt_tx_hook = 0x40001cc0;
r_lld_per_adv_evt_start_cbk_hook = 0x40001cc4;
r_lld_per_adv_frm_isr_hook = 0x40001cc8;
r_lld_per_adv_start_hook = 0x40001ccc;
r_lld_sync_frm_eof_isr_hook = 0x40001cd0;
r_lld_sync_evt_start_cbk_hook = 0x40001cd4;
r_lld_sync_start_hook = 0x40001cd8;
r_lld_sync_process_pkt_rx_pkt_check_hook = 0x40001cdc;
r_sch_arb_insert_hook = 0x40001ce0;
r_sch_plan_offset_req_hook = 0x40001ce4;

/***************************************
Group rom_pp
Expand Down

0 comments on commit ad1999f

Please sign in to comment.