From fe29a53b71f90d9424fffbe9ead011fae9c6c0be Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 8 Aug 2026 03:20:11 -0500 Subject: [PATCH] Require the push slot in the concept where it exists --- esphome/components/ble_device_base/ble_hub.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/esphome/components/ble_device_base/ble_hub.h b/esphome/components/ble_device_base/ble_hub.h index 9e94db27e1..a5bfbad736 100644 --- a/esphome/components/ble_device_base/ble_hub.h +++ b/esphome/components/ble_device_base/ble_hub.h @@ -97,7 +97,8 @@ struct HubCapabilities { // reports the real state back); true = applied immediately, restarting a // running scan. Honoring is advertised by HubCapabilities::scan_mode_switch. // Push hubs additionally provide set_scanner_state_callback(ScannerStateCallback) -// under USE_BLE_SCANNER_STATE_CALLBACK, deliberately outside the concept. +// under USE_BLE_SCANNER_STATE_CALLBACK; the concept requires it exactly when +// that define is set. template concept BLEHubContract = requires(T hub, ESPBTDeviceListener *listener, RawAdvertisementCallback raw_callback, uint8_t *mac) { @@ -108,6 +109,9 @@ concept BLEHubContract = requires(T hub, ESPBTDeviceListener *listener, RawAdver { hub.scan_running() } -> std::same_as; { hub.scan_active() } -> std::same_as; { hub.request_scan_mode(true) } -> std::same_as; +#ifdef USE_BLE_SCANNER_STATE_CALLBACK + hub.set_scanner_state_callback(ScannerStateCallback{}); +#endif }; } // namespace esphome::ble_device_base