ESPHome 2025.8.0b2
|
#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) override |
void | gap_event_handler (esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) override |
void | gap_scan_event_handler (const BLEScanResult &scan_result) override |
void | ble_before_disabled_event_handler () override |
void | add_scanner_state_callback (std::function< void(ScannerState)> &&callback) |
ScannerState | get_scanner_state () const |
![]() | |
float | get_actual_setup_priority () const |
void | set_setup_priority (float priority) |
virtual float | get_loop_priority () const |
priority of loop(). | |
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. | |
virtual void | mark_failed () |
Mark this component as failed. | |
void | mark_failed (const char *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 (const char *message=nullptr) |
void | status_set_error (const char *message=nullptr) |
void | status_clear_warning () |
void | status_clear_error () |
void | status_momentary_warning (const std::string &name, uint32_t length=5000) |
void | status_momentary_error (const std::string &name, uint32_t length=5000) |
bool | has_overridden_loop () const |
void | set_component_source (const char *source) |
Set where this component was loaded from for some debug messages. | |
const char * | get_component_source () const |
Get the integration where this component was declared as a string. | |
bool | should_warn_of_blocking (uint32_t blocking_time) |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
Parented () | |
Parented (ESP32BLE *parent) | |
ESP32BLE * | get_parent () const |
Get the parent of this object. | |
void | set_parent (ESP32BLE *parent) |
Set the parent of this object. | |
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. | |
bool | process_scan_result_ (const BLEScanResult &scan_result) |
Process a single scan result immediately Returns true if a discovered client needs promotion to READY_TO_CONNECT. | |
bool | has_connecting_clients_ () const |
Check if any clients are in connecting or ready to connect state. | |
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. | |
![]() | |
virtual void | call_loop () |
virtual void | call_setup () |
virtual void | call_dump_config () |
void | set_component_state_ (uint8_t state) |
Helper to set component state (clears state bits and sets new state) | |
void | set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a unique name. | |
void | set_interval (const char *name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a const char* name. | |
void | set_interval (uint32_t interval, std::function< void()> &&f) |
bool | cancel_interval (const std::string &name) |
Cancel an interval function. | |
bool | cancel_interval (const char *name) |
void | set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
Set an retry function with a unique name. | |
void | set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
bool | cancel_retry (const std::string &name) |
Cancel a retry function. | |
void | set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a unique name. | |
void | set_timeout (const char *name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a const char* name. | |
void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
bool | cancel_timeout (const std::string &name) |
Cancel a timeout function. | |
bool | cancel_timeout (const char *name) |
void | defer (const std::string &name, std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
void | defer (const char *name, std::function< void()> &&f) |
Defer a callback to the next loop() call with a const char* name. | |
void | defer (std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
bool | cancel_defer (const std::string &name) |
Cancel a defer callback using the specified name, name must not be empty. | |
Protected Attributes | |
std::vector< ESPBTDeviceListener * > | listeners_ |
std::vector< ESPBTClient * > | clients_ |
CallbackManager< void(ScannerState)> | scanner_state_callbacks_ |
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} |
ScannerState | scanner_state_ {ScannerState::IDLE} |
bool | scan_continuous_ |
bool | scan_active_ |
bool | ble_was_disabled_ {true} |
bool | raw_advertisements_ {false} |
bool | parse_advertisements_ {false} |
bool | coex_prefer_ble_ {false} |
uint32_t | scan_start_time_ {0} |
ScanTimeoutState | scan_timeout_state_ {ScanTimeoutState::INACTIVE} |
![]() | |
const char * | component_source_ {nullptr} |
uint16_t | warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS} |
Warn if blocked for this many ms (max 65.5s) | |
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 Bits 5-7: Unused - reserved for future expansion. | |
volatile bool | pending_enable_loop_ {false} |
ISR-safe flag for enable_loop_soon_any_context. | |
![]() | |
ESP32BLE * | parent_ |
Definition at line 235 of file esp32_ble_tracker.h.
|
strongprotected |
Enumerator | |
---|---|
INACTIVE | |
MONITORING | |
EXCEEDED_WAIT |
Definition at line 373 of file esp32_ble_tracker.h.
|
inline |
Definition at line 273 of file esp32_ble_tracker.h.
|
overridevirtual |
Implements esphome::esp32_ble::BLEStatusEventHandler.
Definition at line 192 of file esp32_ble_tracker.cpp.
|
protected |
Common cleanup logic when transitioning scanner to IDLE state.
Definition at line 782 of file esp32_ble_tracker.cpp.
|
inlineprotected |
Count clients in each state.
Definition at line 314 of file esp32_ble_tracker.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 632 of file esp32_ble_tracker.cpp.
|
overridevirtual |
Implements esphome::esp32_ble::GAPEventHandler.
Definition at line 281 of file esp32_ble_tracker.cpp.
|
overridevirtual |
Implements esphome::esp32_ble::GAPScanEventHandler.
Definition at line 303 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 328 of file esp32_ble_tracker.cpp.
|
protected |
Called when a ESP_GAP_BLE_SCAN_START_COMPLETE_EVT
event is received.
Definition at line 338 of file esp32_ble_tracker.cpp.
|
protected |
Called when a ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT
event is received.
Definition at line 356 of file esp32_ble_tracker.cpp.
|
overridevirtual |
Implements esphome::esp32_ble::GATTcEventHandler.
Definition at line 368 of file esp32_ble_tracker.cpp.
|
inline |
Definition at line 246 of file esp32_ble_tracker.h.
|
inline |
Definition at line 276 of file esp32_ble_tracker.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 69 of file esp32_ble_tracker.cpp.
|
protected |
Handle scanner failure states.
Definition at line 796 of file esp32_ble_tracker.cpp.
|
protected |
Check if any clients are in connecting or ready to connect state.
Definition at line 723 of file esp32_ble_tracker.cpp.
|
protected |
Log an unexpected scanner state.
Definition at line 855 of file esp32_ble_tracker.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 93 of file esp32_ble_tracker.cpp.
void esphome::esp32_ble_tracker::ESP32BLETracker::print_bt_device_info | ( | const ESPBTDevice & | device | ) |
Definition at line 652 of file esp32_ble_tracker.cpp.
|
protected |
Process a single scan result immediately Returns true if a discovered client needs promotion to READY_TO_CONNECT.
Definition at line 734 of file esp32_ble_tracker.cpp.
void esphome::esp32_ble_tracker::ESP32BLETracker::recalculate_advertisement_parser_types | ( | ) |
Definition at line 262 of file esp32_ble_tracker.cpp.
void esphome::esp32_ble_tracker::ESP32BLETracker::register_client | ( | ESPBTClient * | client | ) |
Definition at line 250 of file esp32_ble_tracker.cpp.
void esphome::esp32_ble_tracker::ESP32BLETracker::register_listener | ( | ESPBTDeviceListener * | listener | ) |
Definition at line 256 of file esp32_ble_tracker.cpp.
|
protected |
Convert scanner state enum to string for logging.
Definition at line 838 of file esp32_ble_tracker.cpp.
|
inline |
Definition at line 245 of file esp32_ble_tracker.h.
|
inline |
Definition at line 247 of file esp32_ble_tracker.h.
|
inline |
Definition at line 242 of file esp32_ble_tracker.h.
|
inline |
Definition at line 243 of file esp32_ble_tracker.h.
|
inline |
Definition at line 244 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 375 of file esp32_ble_tracker.cpp.
|
overridevirtual |
Setup the FreeRTOS task and the Bluetooth stack.
Reimplemented from esphome::Component.
Definition at line 71 of file esp32_ble_tracker.cpp.
void esphome::esp32_ble_tracker::ESP32BLETracker::start_scan | ( | ) |
Definition at line 184 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 209 of file esp32_ble_tracker.cpp.
void esphome::esp32_ble_tracker::ESP32BLETracker::stop_scan | ( | ) |
Definition at line 186 of file esp32_ble_tracker.cpp.
|
protected |
Definition at line 194 of file esp32_ble_tracker.cpp.
|
protected |
Try to promote discovered clients to ready to connect.
Definition at line 813 of file esp32_ble_tracker.cpp.
|
protected |
Update BLE coexistence preference.
Definition at line 861 of file esp32_ble_tracker.cpp.
|
protected |
Vector of addresses that have already been printed in print_bt_device_info.
Definition at line 344 of file esp32_ble_tracker.h.
|
protected |
Definition at line 361 of file esp32_ble_tracker.h.
|
protected |
Definition at line 366 of file esp32_ble_tracker.h.
|
protected |
Definition at line 350 of file esp32_ble_tracker.h.
|
protected |
Definition at line 340 of file esp32_ble_tracker.h.
|
protected |
Definition at line 370 of file esp32_ble_tracker.h.
|
protected |
Definition at line 339 of file esp32_ble_tracker.h.
|
protected |
Definition at line 368 of file esp32_ble_tracker.h.
|
protected |
Definition at line 367 of file esp32_ble_tracker.h.
|
protected |
Definition at line 365 of file esp32_ble_tracker.h.
|
protected |
Definition at line 364 of file esp32_ble_tracker.h.
|
protected |
The interval in seconds to perform scans.
Definition at line 354 of file esp32_ble_tracker.h.
|
protected |
Definition at line 355 of file esp32_ble_tracker.h.
|
protected |
A structure holding the ESP BLE scan parameters.
Definition at line 349 of file esp32_ble_tracker.h.
|
protected |
Definition at line 358 of file esp32_ble_tracker.h.
|
protected |
Definition at line 362 of file esp32_ble_tracker.h.
|
protected |
Definition at line 357 of file esp32_ble_tracker.h.
|
protected |
Definition at line 378 of file esp32_ble_tracker.h.
|
protected |
Definition at line 379 of file esp32_ble_tracker.h.
|
protected |
Definition at line 356 of file esp32_ble_tracker.h.
|
protected |
Definition at line 363 of file esp32_ble_tracker.h.
|
protected |
Definition at line 341 of file esp32_ble_tracker.h.