[esp32_ble_tracker] Optimize connection by promoting client immediately after scan stop trigger (#10061)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
J. Nick Koston 2025-08-04 15:10:02 -10:00 committed by GitHub
parent 27ba90ea95
commit fa8c5e880c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -238,10 +238,13 @@ void ESP32BLETracker::loop() {
if (this->scanner_state_ == ScannerState::RUNNING) {
ESP_LOGD(TAG, "Stopping scan to make connection");
this->stop_scan_();
} else if (this->scanner_state_ == ScannerState::IDLE) {
// Don't wait for scan stop complete - promote immediately.
// This is safe because ESP-IDF processes BLE commands sequentially through its internal mailbox queue.
// This guarantees that the stop scan command will be fully processed before any subsequent connect command,
// preventing race conditions or overlapping operations.
}
ESP_LOGD(TAG, "Promoting client to connect");
// We only want to promote one client at a time.
// once the scanner is fully stopped.
#ifdef USE_ESP32_BLE_SOFTWARE_COEXISTENCE
ESP_LOGD(TAG, "Setting coexistence to Bluetooth to make connection.");
if (!this->coex_prefer_ble_) {
@ -250,7 +253,6 @@ void ESP32BLETracker::loop() {
}
#endif
client->set_state(ClientState::READY_TO_CONNECT);
}
break;
}
}