ESPHome 2026.8.0b4
Loading...
Searching...
No Matches
ble_hub_impl.h
Go to the documentation of this file.
1// ble_hub_impl.h
2//
3// Binds ble_device_base::BLEHub to the build's one tracker; each tracker's
4// codegen emits its USE_*_BLE_TRACKER define. Consumers include this header,
5// trackers include ble_hub.h (the contract).
6
7#pragma once
8
9#include "ble_hub.h"
11
12#if defined(USE_ESP32_BLE_TRACKER)
14#define ESPHOME_BLE_HUB_TYPE esp32_ble_tracker::ESP32BLETracker
15#elif defined(USE_RP2_BLE_TRACKER)
17#define ESPHOME_BLE_HUB_TYPE rp2_ble_tracker::RP2BLETracker
18#elif defined(USE_BK72XX_BLE_TRACKER)
20#define ESPHOME_BLE_HUB_TYPE bk72xx_ble_tracker::BK72xxBLETracker
21#elif defined(USE_LN882H_BLE_TRACKER)
23#define ESPHOME_BLE_HUB_TYPE ln882h_ble_tracker::LN882HBLETracker
24#endif
25// No #else on purpose: builds without a tracker (host unit tests) get no BLEHub.
26
28
29#ifdef ESPHOME_BLE_HUB_TYPE
30using BLEHub = ESPHOME_BLE_HUB_TYPE;
31static_assert(BLEHubContract<BLEHub>, "The build's BLE tracker is missing part of the BLEHub surface (ble_hub.h)");
32#undef ESPHOME_BLE_HUB_TYPE
33#endif
34
35} // namespace esphome::ble_device_base
ESPHOME_BLE_HUB_TYPE BLEHub