This commit is contained in:
J. Nick Koston 2025-07-18 14:22:29 -10:00
parent 1a62b75ec3
commit b9afa119a0
No known key found for this signature in database
2 changed files with 11 additions and 2 deletions

View File

@ -13,7 +13,6 @@ namespace bluetooth_proxy {
static const char *const TAG = "bluetooth_proxy.connection";
// Helper function from bluetooth_proxy.cpp
static std::vector<uint64_t> get_128bit_uuid_vec(esp_bt_uuid_t uuid_source) {
esp_bt_uuid_t uuid = espbt::ESPBTUUID::from_uuid(uuid_source).as_128bit().get_uuid();
return std::vector<uint64_t>{((uint64_t) uuid.uuid.uuid128[15] << 56) | ((uint64_t) uuid.uuid.uuid128[14] << 48) |

View File

@ -29,7 +29,17 @@ class BluetoothConnection : public esp32_ble_client::BLEClientBase {
friend class BluetoothProxy;
void send_service_for_discovery_();
void reset_connection_();
void reset_connection_() {
// Important: If we were in the middle of sending services, we do NOT send
// send_gatt_services_done() here. This ensures the client knows that
// the service discovery was interrupted and can retry. The client
// (aioesphomeapi) implements a 30-second timeout (DEFAULT_BLE_TIMEOUT)
// to detect incomplete service discovery rather than relying on us to
// tell them about a partial list.
this->set_address(0);
this->send_service_ = DONE_SENDING_SERVICES;
this->proxy_->send_connections_free();
}
// Memory optimized layout for 32-bit systems
// Group 1: Pointers (4 bytes each, naturally aligned)