Kaynağa Gözat

Fix issues during light sleep and DFS

baohongde 4 yıl önce
ebeveyn
işleme
33df1358ef

+ 5 - 2
components/bt/controller/esp32c3/bt.c

@@ -740,13 +740,16 @@ static void IRAM_ATTR btdm_sleep_exit_phase0(void *param)
     }
     }
 #endif
 #endif
 
 
-    btdm_wakeup_request();
+    int event = (int) param;
+    if (event == BTDM_ASYNC_WAKEUP_SRC_VHCI || event == BTDM_ASYNC_WAKEUP_SRC_DISA) {
+        btdm_wakeup_request();
+    }
 
 
     if (s_lp_cntl.wakeup_timer_required && s_lp_stat.wakeup_timer_started) {
     if (s_lp_cntl.wakeup_timer_required && s_lp_stat.wakeup_timer_started) {
         esp_timer_stop(s_btdm_slp_tmr);
         esp_timer_stop(s_btdm_slp_tmr);
         s_lp_stat.wakeup_timer_started = 0;
         s_lp_stat.wakeup_timer_started = 0;
     }
     }
-    int event = (int) param;
+
     if (event == BTDM_ASYNC_WAKEUP_SRC_VHCI || event == BTDM_ASYNC_WAKEUP_SRC_DISA) {
     if (event == BTDM_ASYNC_WAKEUP_SRC_VHCI || event == BTDM_ASYNC_WAKEUP_SRC_DISA) {
         semphr_give_wrapper(s_wakeup_req_sem);
         semphr_give_wrapper(s_wakeup_req_sem);
     }
     }

+ 1 - 1
components/bt/controller/lib

@@ -1 +1 @@
-Subproject commit 950f7886b6a28734c625f979c2a73752db1dfb19
+Subproject commit bcb2eef8e649b3708ab036379ba4efaa59cf6eea

+ 4 - 4
components/esp_system/sleep_modes.c

@@ -458,15 +458,15 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
         suspend_uarts();
         suspend_uarts();
     }
     }
 
 
-#if CONFIG_MAC_BB_PD
-    mac_bb_power_down_cb_execute();
-#endif
-
     // Save current frequency and switch to XTAL
     // Save current frequency and switch to XTAL
     rtc_cpu_freq_config_t cpu_freq_config;
     rtc_cpu_freq_config_t cpu_freq_config;
     rtc_clk_cpu_freq_get_config(&cpu_freq_config);
     rtc_clk_cpu_freq_get_config(&cpu_freq_config);
     rtc_clk_cpu_freq_set_xtal();
     rtc_clk_cpu_freq_set_xtal();
 
 
+#if CONFIG_MAC_BB_PD
+    mac_bb_power_down_cb_execute();
+#endif
+
 #if SOC_PM_SUPPORT_EXT_WAKEUP
 #if SOC_PM_SUPPORT_EXT_WAKEUP
     // Configure pins for external wakeup
     // Configure pins for external wakeup
     if (s_config.wakeup_triggers & RTC_EXT0_TRIG_EN) {
     if (s_config.wakeup_triggers & RTC_EXT0_TRIG_EN) {