fix(wifi):fix modem state rx bcn failed when tbtt update, support modem state for coexist

This commit is contained in:
sibeibei
2025-02-24 19:38:19 +08:00
parent 413fdf1106
commit ef8b1ab5c5
12 changed files with 74 additions and 4 deletions

View File

@@ -396,6 +396,15 @@ int coex_schm_flexible_period_set(uint8_t period);
uint8_t coex_schm_flexible_period_get(void);
#endif
/**
* @brief Get coexistence scheme phase by phase index.
*
* @param phase_idx Coexistence phase index
*
* @return Coexistence scheme phase
*/
void * coex_schm_get_phase_by_idx(int phase_idx);
/**
* @brief Check the MD5 values of the coexistence adapter header files in IDF and WiFi library
*

View File

@@ -604,7 +604,7 @@ pm_enable_active_timer = 0x40001b84;
pm_enable_sleep_delay_timer = 0x40001b88;
pm_local_tsf_process = 0x40001b8c;
pm_set_beacon_filter = 0x40001b90;
pm_is_in_wifi_slice_threshold = 0x40001b94;
/*pm_is_in_wifi_slice_threshold = 0x40001b94;*/
pm_is_waked = 0x40001b98;
/*pm_keep_alive = 0x40001b9c;*/
/* pm_on_beacon_rx = 0x40001ba0; */

View File

@@ -718,7 +718,7 @@ pm_enable_active_timer = 0x40001660;
pm_enable_sleep_delay_timer = 0x40001664;
pm_local_tsf_process = 0x40001668;
pm_set_beacon_filter = 0x4000166c;
pm_is_in_wifi_slice_threshold = 0x40001670;
/*pm_is_in_wifi_slice_threshold = 0x40001670;*/
pm_is_waked = 0x40001674;
/*pm_keep_alive = 0x40001678;*/
/* pm_on_beacon_rx = 0x4000167c; */

View File

@@ -66,7 +66,7 @@ pm_mac_sleep = 0x40000c84;
pm_enable_sleep_delay_timer = 0x40000c8c;
pm_local_tsf_process = 0x40000c90;
//pm_set_beacon_filter = 0x40000c94;
pm_is_in_wifi_slice_threshold = 0x40000c98;
/*pm_is_in_wifi_slice_threshold = 0x40000c98;*/
pm_is_waked = 0x40000c9c;
//pm_keep_alive = 0x40000ca0;
/* pm_on_beacon_rx = 0x40000ca4; */

View File

@@ -995,7 +995,7 @@ pm_enable_active_timer = 0x40005460;
pm_enable_sleep_delay_timer = 0x4000546c;
pm_local_tsf_process = 0x40005478;
pm_set_beacon_filter = 0x40005484;
pm_is_in_wifi_slice_threshold = 0x40005490;
/*pm_is_in_wifi_slice_threshold = 0x40005490;*/
pm_is_waked = 0x4000549c;
/*pm_keep_alive = 0x400054a8;*/
/* pm_on_beacon_rx = 0x400054b4; */

View File

@@ -590,6 +590,15 @@ static uint8_t coex_schm_flexible_period_get_wrapper(void)
#endif
}
static void * coex_schm_get_phase_by_idx_wrapper(int phase_idx)
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_schm_get_phase_by_idx(phase_idx);
#else
return NULL;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@@ -726,5 +735,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_register_cb = coex_schm_register_cb_wrapper,
._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper,
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

View File

@@ -530,6 +530,15 @@ static uint8_t coex_schm_flexible_period_get_wrapper(void)
#endif
}
static void * coex_schm_get_phase_by_idx_wrapper(int phase_idx)
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_schm_get_phase_by_idx(phase_idx);
#else
return NULL;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@@ -665,5 +674,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_register_cb = coex_schm_register_cb_wrapper,
._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper,
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

View File

@@ -547,6 +547,15 @@ static uint8_t coex_schm_flexible_period_get_wrapper(void)
#endif
}
static void * coex_schm_get_phase_by_idx_wrapper(int phase_idx)
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_schm_get_phase_by_idx(phase_idx);
#else
return NULL;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@@ -682,5 +691,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_register_cb = coex_schm_register_cb_wrapper,
._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper,
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

View File

@@ -536,6 +536,15 @@ static uint8_t coex_schm_flexible_period_get_wrapper(void)
#endif
}
static void * coex_schm_get_phase_by_idx_wrapper(int phase_idx)
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_schm_get_phase_by_idx(phase_idx);
#else
return NULL;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@@ -687,5 +696,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_register_cb = coex_schm_register_cb_wrapper,
._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper,
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

View File

@@ -585,6 +585,15 @@ static uint8_t coex_schm_flexible_period_get_wrapper(void)
#endif
}
static void * coex_schm_get_phase_by_idx_wrapper(int phase_idx)
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_schm_get_phase_by_idx(phase_idx);
#else
return NULL;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@@ -720,5 +729,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_register_cb = coex_schm_register_cb_wrapper,
._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper,
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

View File

@@ -602,6 +602,15 @@ static uint8_t coex_schm_flexible_period_get_wrapper(void)
#endif
}
static void * coex_schm_get_phase_by_idx_wrapper(int phase_idx)
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_schm_get_phase_by_idx(phase_idx);
#else
return NULL;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@@ -738,5 +747,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_register_cb = coex_schm_register_cb_wrapper,
._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper,
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

View File

@@ -155,6 +155,7 @@ typedef struct {
#endif
int (*_coex_schm_flexible_period_set)(uint8_t);
uint8_t (*_coex_schm_flexible_period_get)(void);
void * (*_coex_schm_get_phase_by_idx)(int);
int32_t _magic;
} wifi_osi_funcs_t;