|
ESPHome 2026.6.0-dev
|
#include <esp32_ble_tracker.h>
Public Member Functions | |
| void | set_scan_duration (uint32_t scan_duration) |
| void | set_scan_interval (uint32_t scan_interval) |
| void | set_scan_window (uint32_t scan_window) |
| void | set_scan_active (bool scan_active) |
| bool | get_scan_active () const |
| void | set_scan_continuous (bool scan_continuous) |
| void | setup () override |
| Setup the FreeRTOS task and the Bluetooth stack. | |
| void | dump_config () override |
| float | get_setup_priority () const override |
| void | loop () override |
| void | register_listener (ESPBTDeviceListener *listener) |
| void | register_client (ESPBTClient *client) |
| void | recalculate_advertisement_parser_types () |
| void | print_bt_device_info (const ESPBTDevice &device) |
| void | start_scan () |
| void | stop_scan () |
| void | gattc_event_handler (esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) |
| void | gap_event_handler (esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) |
| void | gap_scan_event_handler (const BLEScanResult &scan_result) |
| void | ble_before_disabled_event_handler () |
| void | on_ota_global_state (ota::OTAState state, float progress, uint8_t error, ota::OTAComponent *comp) override |
| void | add_scanner_state_listener (BLEScannerStateListener *listener) |
| Add a listener for scanner state changes. | |
| ScannerState | get_scanner_state () const |
Public Member Functions inherited from esphome::Component | |
| float | get_actual_setup_priority () const |
| void | set_setup_priority (float priority) |
| void | call () |
| virtual void | on_shutdown () |
| virtual void | on_safe_shutdown () |
| virtual bool | teardown () |
| Called during teardown to allow component to gracefully finish operations. | |
| virtual void | on_powerdown () |
| Called after teardown is complete to power down hardware. | |
| uint8_t | get_component_state () const |
| void | reset_to_construction_state () |
| Reset this component back to the construction state to allow setup to run again. | |
| bool | is_in_loop_state () const |
| Check if this component has completed setup and is in the loop state. | |
| bool | is_idle () const |
| Check if this component is idle. | |
| void | mark_failed () |
| Mark this component as failed. | |
| void | mark_failed (const LogString *message) |
| void | disable_loop () |
| Disable this component's loop. | |
| void | enable_loop () |
| Enable this component's loop. | |
| void | enable_loop_soon_any_context () |
| Thread and ISR-safe version of enable_loop() that can be called from any context. | |
| bool | is_failed () const |
| bool | is_ready () const |
| virtual bool | can_proceed () |
| bool | status_has_warning () const |
| bool | status_has_error () const |
| void | status_set_warning () |
| void | status_set_warning (const char *message) |
| void | status_set_warning (const LogString *message) |
| void | status_set_error () |
| void | status_set_error (const LogString *message) |
| void | status_clear_warning () |
| void | status_clear_error () |
| void | status_momentary_warning (const char *name, uint32_t length=5000) |
| Set warning status flag and automatically clear it after a timeout. | |
| void | status_momentary_error (const char *name, uint32_t length=5000) |
| Set error status flag and automatically clear it after a timeout. | |
| bool | has_overridden_loop () const |
| const LogString * | get_component_log_str () const ESPHOME_ALWAYS_INLINE |
| Get the integration where this component was declared as a LogString for logging. | |
| bool | should_warn_of_blocking (uint32_t blocking_time) |
Protected Types | |
| enum class | ScanTimeoutState : uint8_t { INACTIVE , MONITORING , EXCEEDED_WAIT } |
Protected Member Functions | |
| void | stop_scan_ () |
| void | start_scan_ (bool first) |
| Start a single scan by setting up the parameters and doing some esp-idf calls. | |
| void | gap_scan_result_ (const esp_ble_gap_cb_param_t::ble_scan_result_evt_param ¶m) |
Called when a ESP_GAP_BLE_SCAN_RESULT_EVT event is received. | |
| void | gap_scan_set_param_complete_ (const esp_ble_gap_cb_param_t::ble_scan_param_cmpl_evt_param ¶m) |
Called when a ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT event is received. | |
| void | gap_scan_start_complete_ (const esp_ble_gap_cb_param_t::ble_scan_start_cmpl_evt_param ¶m) |
Called when a ESP_GAP_BLE_SCAN_START_COMPLETE_EVT event is received. | |
| void | gap_scan_stop_complete_ (const esp_ble_gap_cb_param_t::ble_scan_stop_cmpl_evt_param ¶m) |
Called when a ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT event is received. | |
| void | set_scanner_state_ (ScannerState state) |
| Called to set the scanner state. Will also call callbacks to let listeners know when state is changed. | |
| void | cleanup_scan_state_ (bool is_stop_complete) |
| Common cleanup logic when transitioning scanner to IDLE state. | |
| void | process_scan_result_ (const BLEScanResult &scan_result) |
| Process a single scan result immediately. | |
| void | handle_scanner_failure_ () |
| Handle scanner failure states. | |
| void | try_promote_discovered_clients_ () |
| Try to promote discovered clients to ready to connect. | |
| const char * | scanner_state_to_string_ (ScannerState state) const |
| Convert scanner state enum to string for logging. | |
| void | log_unexpected_state_ (const char *operation, ScannerState expected_state) const |
| Log an unexpected scanner state. | |
| void | update_coex_preference_ (bool force_ble) |
| Update BLE coexistence preference. | |
| ClientStateCounts | count_client_states_ () const |
| Count clients in each state. | |
Protected Member Functions inherited from esphome::Component | |
| friend | void::setup () |
| friend | void::original_setup () |
| void | set_component_source_ (uint8_t index) |
| Set where this component was loaded from for some debug messages. | |
| virtual void | call_setup () |
| void | call_dump_config_ () |
| void | enable_loop_slow_path_ () |
| void | set_component_state_ (uint8_t state) |
| Helper to set component state (clears state bits and sets new state) | |
| bool | set_status_flag_ (uint8_t flag) |
| Helper to set a status LED flag on both this component and the app. | |
| void | set_interval (uint32_t id, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a numeric ID (zero heap allocation). | |
| void | set_interval (InternalSchedulerID id, uint32_t interval, std::function< void()> &&f) |
| void | set_interval (uint32_t interval, std::function< void()> &&f) |
| bool | cancel_interval (uint32_t id) |
| bool | cancel_interval (InternalSchedulerID id) |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std | ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const char *name |
| ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t id | |
| ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t initial_wait_time | |
| ESPDEPRECATED("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const std | ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const char *name) |
| ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(uint32_t id) | |
| void | set_timeout (uint32_t id, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a numeric ID (zero heap allocation). | |
| void | set_timeout (InternalSchedulerID id, uint32_t timeout, std::function< void()> &&f) |
| void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
| bool | cancel_timeout (uint32_t id) |
| bool | cancel_timeout (InternalSchedulerID id) |
| void | defer (std::function< void()> &&f) |
| Defer a callback to the next loop() call. | |
| void | defer (uint32_t id, std::function< void()> &&f) |
| Defer a callback with a numeric ID (zero heap allocation) | |
| bool | cancel_defer (uint32_t id) |
| void | status_clear_warning_slow_path_ () |
| void | status_clear_error_slow_path_ () |
Protected Attributes | |
| StaticVector< ESPBTDeviceListener *, ESPHOME_ESP32_BLE_TRACKER_LISTENER_COUNT > | listeners_ |
| StaticVector< ESPBTClient *, ESPHOME_ESP32_BLE_TRACKER_CLIENT_COUNT > | clients_ |
| std::vector< BLEScannerStateListener * > | scanner_state_listeners_ |
| std::vector< uint64_t > | already_discovered_ |
| Vector of addresses that have already been printed in print_bt_device_info. | |
| esp_ble_scan_params_t | scan_params_ |
| A structure holding the ESP BLE scan parameters. | |
| ClientStateCounts | client_state_counts_ |
| uint32_t | scan_duration_ |
| The interval in seconds to perform scans. | |
| uint32_t | scan_interval_ |
| uint32_t | scan_window_ |
| esp_bt_status_t | scan_start_failed_ {ESP_BT_STATUS_SUCCESS} |
| esp_bt_status_t | scan_set_param_failed_ {ESP_BT_STATUS_SUCCESS} |
| uint8_t | app_id_ {0} |
| uint8_t | scan_start_fail_count_ {0} |
| uint8_t | state_version_ {0} |
| Version counter for loop() fast-path optimization. | |
| uint8_t | last_processed_version_ {0} |
| Last state_version_ value when loop() did full processing. | |
| ScannerState | scanner_state_ {ScannerState::IDLE} |
| bool | scan_continuous_ |
| bool | scan_active_ |
| bool | scan_continuous_before_ota_ {false} |
| bool | ble_was_disabled_ {true} |
| bool | raw_advertisements_ {false} |
| bool | parse_advertisements_ {false} |
| bool | coex_prefer_ble_ {false} |
| uint32_t | scan_start_time_ {0} |
| uint32_t | scan_timeout_ms_ {0} |
| Precomputed timeout value: scan_duration_ * 2000. | |
| ScanTimeoutState | scan_timeout_state_ {ScanTimeoutState::INACTIVE} |
Protected Attributes inherited from esphome::Component | |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_interval(const std voi | set_interval )(const char *name, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a unique name. | |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_interval(const std boo | cancel_interval )(const char *name) |
| Cancel an interval function. | |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t | initial_wait_time |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t | max_attempts |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> && | f |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> float | backoff_increase_factor = 1.0f) |
| uint32_t | initial_wait_time |
| uint32_t uint8_t | max_attempts |
| uint32_t uint8_t std::function< RetryResult(uint8_t)> && | f |
| uint32_t uint8_t std::function< RetryResult(uint8_t)> float | backoff_increase_factor = 1.0f) |
| uint8_t | max_attempts |
| uint8_t std::function< RetryResult(uint8_t)> && | f |
| uint8_t std::function< RetryResult(uint8_t)> float | backoff_increase_factor = 1.0f) |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_timeout(const std voi | set_timeout )(const char *name, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a unique name. | |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_timeout(const std boo | cancel_timeout )(const char *name) |
| Cancel a timeout function. | |
| ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") void defer(const std voi | defer )(const char *name, std::function< void()> &&f) |
| Defer a callback to the next loop() call. | |
| ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_defer(const std boo | cancel_defer )(const char *name) |
| Cancel a defer callback using the specified name, name must not be empty. | |
| uint8_t | component_source_index_ {0} |
| Index into component source PROGMEM lookup table (0 = not set) | |
| uint8_t | warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_CS} |
| Warn threshold in centiseconds (max 2550ms) | |
| uint8_t | component_state_ {0x00} |
| State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bit 5: Has overridden loop() (set at registration time) Bits 6-7: Unused - reserved for future expansion. | |
| volatile bool | pending_enable_loop_ {false} |
| ISR-safe flag for enable_loop_soon_any_context. | |
| ComponentRuntimeStats | runtime_stats_ |
Definition at line 297 of file esp32_ble_tracker.h.
|
strongprotected |
| Enumerator | |
|---|---|
| INACTIVE | |
| MONITORING | |
| EXCEEDED_WAIT | |
Definition at line 452 of file esp32_ble_tracker.h.
|
inline |
Add a listener for scanner state changes.
Definition at line 338 of file esp32_ble_tracker.h.
| void esphome::esp32_ble_tracker::ESP32BLETracker::ble_before_disabled_event_handler | ( | ) |
Definition at line 231 of file esp32_ble_tracker.cpp.
|
protected |
Common cleanup logic when transitioning scanner to IDLE state.
Definition at line 867 of file esp32_ble_tracker.cpp.
|
inlineprotected |
Count clients in each state.
Definition at line 374 of file esp32_ble_tracker.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 701 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::gap_event_handler | ( | esp_gap_ble_cb_event_t | event, |
| esp_ble_gap_cb_param_t * | param ) |
Definition at line 338 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::gap_scan_event_handler | ( | const BLEScanResult & | scan_result | ) |
Definition at line 362 of file esp32_ble_tracker.cpp.
|
protected |
Called when a ESP_GAP_BLE_SCAN_RESULT_EVT event is received.
|
protected |
Called when a ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT event is received.
Definition at line 380 of file esp32_ble_tracker.cpp.
|
protected |
Called when a ESP_GAP_BLE_SCAN_START_COMPLETE_EVT event is received.
Definition at line 390 of file esp32_ble_tracker.cpp.
|
protected |
Called when a ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT event is received.
Definition at line 408 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::gattc_event_handler | ( | esp_gattc_cb_event_t | event, |
| esp_gatt_if_t | gattc_if, | ||
| esp_ble_gattc_cb_param_t * | param ) |
Definition at line 420 of file esp32_ble_tracker.cpp.
|
inline |
Definition at line 307 of file esp32_ble_tracker.h.
|
inline |
Definition at line 341 of file esp32_ble_tracker.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 72 of file esp32_ble_tracker.cpp.
|
protected |
Handle scanner failure states.
Definition at line 883 of file esp32_ble_tracker.cpp.
|
protected |
Log an unexpected scanner state.
Definition at line 944 of file esp32_ble_tracker.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 107 of file esp32_ble_tracker.cpp.
|
override |
Definition at line 89 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::print_bt_device_info | ( | const ESPBTDevice & | device | ) |
Definition at line 723 of file esp32_ble_tracker.cpp.
|
protected |
Process a single scan result immediately.
Definition at line 823 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::recalculate_advertisement_parser_types | ( | ) |
Definition at line 315 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::register_client | ( | ESPBTClient * | client | ) |
Definition at line 295 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::register_listener | ( | ESPBTDeviceListener * | listener | ) |
Definition at line 307 of file esp32_ble_tracker.cpp.
|
protected |
Convert scanner state enum to string for logging.
Definition at line 927 of file esp32_ble_tracker.cpp.
|
inline |
Definition at line 306 of file esp32_ble_tracker.h.
|
inline |
Definition at line 308 of file esp32_ble_tracker.h.
|
inline |
Definition at line 303 of file esp32_ble_tracker.h.
|
inline |
Definition at line 304 of file esp32_ble_tracker.h.
|
inline |
Definition at line 305 of file esp32_ble_tracker.h.
|
protected |
Called to set the scanner state. Will also call callbacks to let listeners know when state is changed.
Definition at line 429 of file esp32_ble_tracker.cpp.
|
overridevirtual |
Setup the FreeRTOS task and the Bluetooth stack.
Reimplemented from esphome::Component.
Definition at line 74 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::start_scan | ( | ) |
Definition at line 223 of file esp32_ble_tracker.cpp.
|
protected |
Start a single scan by setting up the parameters and doing some esp-idf calls.
Definition at line 251 of file esp32_ble_tracker.cpp.
| void esphome::esp32_ble_tracker::ESP32BLETracker::stop_scan | ( | ) |
Definition at line 225 of file esp32_ble_tracker.cpp.
|
protected |
Definition at line 233 of file esp32_ble_tracker.cpp.
|
protected |
Try to promote discovered clients to ready to connect.
Definition at line 900 of file esp32_ble_tracker.cpp.
|
protected |
Update BLE coexistence preference.
Definition at line 950 of file esp32_ble_tracker.cpp.
|
protected |
Vector of addresses that have already been printed in print_bt_device_info.
Definition at line 410 of file esp32_ble_tracker.h.
|
protected |
Definition at line 427 of file esp32_ble_tracker.h.
|
protected |
Definition at line 445 of file esp32_ble_tracker.h.
|
protected |
Definition at line 416 of file esp32_ble_tracker.h.
|
protected |
Definition at line 405 of file esp32_ble_tracker.h.
|
protected |
Definition at line 449 of file esp32_ble_tracker.h.
|
protected |
Last state_version_ value when loop() did full processing.
Compared against state_version_ to detect if any state changed since last iteration.
Definition at line 438 of file esp32_ble_tracker.h.
|
protected |
Definition at line 402 of file esp32_ble_tracker.h.
|
protected |
Definition at line 447 of file esp32_ble_tracker.h.
|
protected |
Definition at line 446 of file esp32_ble_tracker.h.
|
protected |
Definition at line 441 of file esp32_ble_tracker.h.
|
protected |
Definition at line 440 of file esp32_ble_tracker.h.
|
protected |
Definition at line 443 of file esp32_ble_tracker.h.
|
protected |
The interval in seconds to perform scans.
Definition at line 420 of file esp32_ble_tracker.h.
|
protected |
Definition at line 421 of file esp32_ble_tracker.h.
|
protected |
A structure holding the ESP BLE scan parameters.
Definition at line 415 of file esp32_ble_tracker.h.
|
protected |
Definition at line 424 of file esp32_ble_tracker.h.
|
protected |
Definition at line 428 of file esp32_ble_tracker.h.
|
protected |
Definition at line 423 of file esp32_ble_tracker.h.
|
protected |
Definition at line 457 of file esp32_ble_tracker.h.
|
protected |
Precomputed timeout value: scan_duration_ * 2000.
Definition at line 459 of file esp32_ble_tracker.h.
|
protected |
Definition at line 460 of file esp32_ble_tracker.h.
|
protected |
Definition at line 422 of file esp32_ble_tracker.h.
|
protected |
Definition at line 439 of file esp32_ble_tracker.h.
|
protected |
Definition at line 407 of file esp32_ble_tracker.h.
|
protected |
Version counter for loop() fast-path optimization.
Incremented when:
Definition at line 435 of file esp32_ble_tracker.h.