mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-11 01:01:27 +00:00
feat(wifi): support sample beacon feature
fix: adapt soc wakeup quick wake, fix light sleep beacon sample feat(pm): giveup beacon and resample if rx prop too low (a16fa11)
This commit is contained in:
@@ -64,6 +64,14 @@ static esp_pm_lock_handle_t s_wifi_modem_sleep_lock;
|
||||
wifi_mac_time_update_cb_t s_wifi_mac_time_update_cb = NULL;
|
||||
#endif
|
||||
|
||||
#if CONFIG_ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_AUTO
|
||||
#define ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE WIFI_BEACON_DROP_AUTO
|
||||
#elif CONFIG_ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_DROP
|
||||
#define ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE WIFI_BEACON_DROP_FORCED
|
||||
#else
|
||||
#define ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE WIFI_BEACON_DROP_DISABLED
|
||||
#endif
|
||||
|
||||
#if SOC_PM_SUPPORT_PMU_MODEM_STATE
|
||||
# define WIFI_BEACON_MONITOR_CONFIG_DEFAULT(ena) { \
|
||||
.enable = (ena), \
|
||||
@@ -75,7 +83,8 @@ wifi_mac_time_update_cb_t s_wifi_mac_time_update_cb = NULL;
|
||||
.broadcast_wakeup = 1, \
|
||||
.tsf_time_sync_deviation = 5, \
|
||||
.modem_state_consecutive = 10, \
|
||||
.rf_ctrl_wait_cycle = 20 \
|
||||
.rf_ctrl_wait_cycle = 20, \
|
||||
.beacon_drop = ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE \
|
||||
}
|
||||
#else
|
||||
# define WIFI_BEACON_MONITOR_CONFIG_DEFAULT(ena) { \
|
||||
@@ -83,10 +92,18 @@ wifi_mac_time_update_cb_t s_wifi_mac_time_update_cb = NULL;
|
||||
.loss_timeout = CONFIG_ESP_WIFI_SLP_BEACON_LOST_TIMEOUT, \
|
||||
.loss_threshold = CONFIG_ESP_WIFI_SLP_BEACON_LOST_THRESHOLD, \
|
||||
.delta_intr_early = CONFIG_ESP_WIFI_SLP_PHY_ON_DELTA_EARLY_TIME, \
|
||||
.delta_loss_timeout = CONFIG_ESP_WIFI_SLP_PHY_OFF_DELTA_TIMEOUT_TIME \
|
||||
.delta_loss_timeout = CONFIG_ESP_WIFI_SLP_PHY_OFF_DELTA_TIMEOUT_TIME, \
|
||||
.beacon_drop = ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE \
|
||||
}
|
||||
#endif
|
||||
|
||||
#define WIFI_BEACON_OFFSET_CONFIG_DEFAULT(ena) { \
|
||||
.sample_period = (ena) ? CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_COUNT : 0, \
|
||||
.resample_period = CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_RESAMPLE_PERIOD, \
|
||||
.standard = CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_STANDARD_PERCENT, \
|
||||
.difference = CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_DIFFERENCE_PERCENT \
|
||||
}
|
||||
|
||||
static const char* TAG = "wifi_init";
|
||||
|
||||
static void __attribute__((constructor)) s_set_default_wifi_log_level(void)
|
||||
@@ -185,6 +202,11 @@ static esp_err_t wifi_deinit_internal(void)
|
||||
roam_deinit_app();
|
||||
#endif
|
||||
|
||||
#if CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE
|
||||
wifi_beacon_offset_config_t offset_config = WIFI_BEACON_OFFSET_CONFIG_DEFAULT(false);
|
||||
esp_wifi_beacon_offset_configure(&offset_config);
|
||||
#endif
|
||||
|
||||
err = esp_wifi_deinit_internal();
|
||||
if (err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to deinit Wi-Fi driver (0x%x)", err);
|
||||
@@ -460,6 +482,12 @@ esp_err_t esp_wifi_init(const wifi_init_config_t *config)
|
||||
wifi_beacon_monitor_config_t monitor_config = WIFI_BEACON_MONITOR_CONFIG_DEFAULT(true);
|
||||
esp_wifi_beacon_monitor_configure(&monitor_config);
|
||||
#endif
|
||||
|
||||
#if CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE
|
||||
wifi_beacon_offset_config_t offset_config = WIFI_BEACON_OFFSET_CONFIG_DEFAULT(true);
|
||||
esp_wifi_beacon_offset_configure(&offset_config);
|
||||
#endif
|
||||
|
||||
adc2_cal_include(); //This enables the ADC2 calibration constructor at start up.
|
||||
|
||||
esp_wifi_config_info();
|
||||
@@ -702,5 +730,6 @@ void esp32c2_eco4_rom_ptr_init(void)
|
||||
void pm_beacon_offset_funcs_init(void)
|
||||
{
|
||||
/* Do not remove, stub to overwrite weak link in Wi-Fi Lib */
|
||||
pm_beacon_offset_funcs_empty_init();
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user