Skip to content

Commit 97e7c14

Browse files
committed
Merge branch 'bugfix/btdm_sleep_twice_v3.3' into 'release/v3.3'
bugfix btdm sleep twice after wakeup request See merge request espressif/esp-idf!5638
2 parents c157c69 + 3ca82d5 commit 97e7c14

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

components/bt/bluedroid/hci/hci_hal_h4.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,10 @@ task_post_status_t hci_hal_h4_task_post(task_post_t timeout)
189189
evt.par = 0;
190190

191191
if (xQueueSend(xHciH4Queue, &evt, timeout) != pdTRUE) {
192-
return TASK_POST_SUCCESS;
192+
return TASK_POST_FAIL;
193193
}
194194

195-
return TASK_POST_FAIL;
195+
return TASK_POST_SUCCESS;
196196
}
197197

198198
#if (C2H_FLOW_CONTROL_INCLUDED == TRUE)

components/bt/bt.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ extern void btdm_controller_enable_sleep(bool enable);
196196
extern void btdm_controller_set_sleep_mode(uint8_t mode);
197197
extern uint8_t btdm_controller_get_sleep_mode(void);
198198
extern bool btdm_power_state_active(void);
199-
extern void btdm_wakeup_request(void);
199+
extern void btdm_wakeup_request(bool request_lock);
200+
extern void btdm_wakeup_request_end(void);
200201
/* Low Power Clock */
201202
extern bool btdm_lpclk_select_src(uint32_t sel);
202203
extern bool btdm_lpclk_set_div(uint32_t div);
@@ -879,16 +880,24 @@ bool esp_vhci_host_check_send_available(void)
879880

880881
void esp_vhci_host_send_packet(uint8_t *data, uint16_t len)
881882
{
883+
bool do_wakeup_request = false;
884+
882885
if (!btdm_power_state_active()) {
883886
#if CONFIG_PM_ENABLE
884887
if (semphr_take_wrapper(s_pm_lock_sem, 0)) {
885888
esp_pm_lock_acquire(s_pm_lock);
886889
}
887890
esp_timer_stop(s_btdm_slp_tmr);
888891
#endif
889-
btdm_wakeup_request();
892+
do_wakeup_request = true;
893+
btdm_wakeup_request(true);
890894
}
895+
891896
API_vhci_host_send_packet(data, len);
897+
898+
if (do_wakeup_request) {
899+
btdm_wakeup_request_end();
900+
}
892901
}
893902

894903
esp_err_t esp_vhci_host_register_callback(const esp_vhci_host_callback_t *callback)
@@ -1290,7 +1299,7 @@ esp_err_t esp_bt_controller_disable(void)
12901299
if (btdm_controller_get_sleep_mode() == BTDM_MODEM_SLEEP_MODE_ORIG) {
12911300
btdm_controller_enable_sleep(false);
12921301
if (!btdm_power_state_active()) {
1293-
btdm_wakeup_request();
1302+
btdm_wakeup_request(false);
12941303
}
12951304
while (!btdm_power_state_active()) {
12961305
ets_delay_us(1000);
@@ -1426,7 +1435,7 @@ void esp_bt_controller_wakeup_request(void)
14261435
return;
14271436
}
14281437

1429-
btdm_wakeup_request();
1438+
btdm_wakeup_request(false);
14301439
}
14311440

14321441
esp_err_t esp_bredr_sco_datapath_set(esp_sco_data_path_t data_path)

components/bt/lib

Submodule lib updated 1 file

0 commit comments

Comments
 (0)