|
ESPHome 2026.2.1
|
The UARTDebugger class adds debugging support to a UART bus. More...
#include <uart_debugger.h>
Public Member Functions | |
| UARTDebugger (UARTComponent *parent) | |
| void | loop () override |
| void | set_direction (UARTDirection direction) |
| Set the direction in which to inspect the bytes: incoming, outgoing or both. | |
| void | set_after_bytes (size_t size) |
| Set the maximum number of bytes to accumulate. | |
| void | set_after_timeout (uint32_t timeout) |
| Set a timeout for the data stream. | |
| void | add_delimiter_byte (uint8_t byte) |
| Add a delimiter byte. | |
Public Member Functions inherited from esphome::Component | |
| virtual void | setup () |
| Where the component's initialization should happen. | |
| virtual void | dump_config () |
| virtual float | get_setup_priority () const |
| priority of setup(). | |
| 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. | |
| bool | is_idle () const |
| Check if this component is idle. | |
| virtual void | mark_failed () |
| Mark this component as failed. | |
| ESPDEPRECATED ("Use mark_failed(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void mark_failed(const char *message) | |
| 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 (const char *message=nullptr) |
| void | status_set_warning (const LogString *message) |
| void | status_set_error () |
| ESPDEPRECATED ("Use status_set_error(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void status_set_error(const char *message) | |
| 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 |
| void | set_component_source (const LogString *source) |
| Set where this component was loaded from for some debug messages. | |
| const LogString * | get_component_log_str () const |
| Get the integration where this component was declared as a LogString for logging. | |
| bool | should_warn_of_blocking (uint32_t blocking_time) |
Public Member Functions inherited from esphome::Trigger< UARTDirection, std::vector< uint8_t > > | |
| void | trigger (const Ts &...x) |
| Inform the parent automation that the event has triggered. | |
| void | set_automation_parent (Automation< Ts... > *automation_parent) |
| void | stop_action () |
| Stop any action connected to this trigger. | |
| bool | is_action_running () |
| Returns true if any action connected to this trigger is running. | |
Protected Member Functions | |
| bool | is_my_direction_ (UARTDirection direction) |
| bool | is_recursive_ () |
| void | store_byte_ (UARTDirection direction, uint8_t byte) |
| void | trigger_after_direction_change_ (UARTDirection direction) |
| void | trigger_after_delimiter_ (uint8_t byte) |
| void | trigger_after_bytes_ () |
| void | trigger_after_timeout_ () |
| bool | has_buffered_bytes_ () |
| void | fire_trigger_ () |
Protected Member Functions inherited from esphome::Component | |
| 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 (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) |
Protected Attributes | |
| UARTDirection | for_direction_ |
| UARTDirection | last_direction_ {} |
| std::vector< uint8_t > | bytes_ {} |
| size_t | after_bytes_ |
| uint32_t | after_timeout_ |
| uint32_t | last_time_ {} |
| std::vector< uint8_t > | after_delimiter_ {} |
| size_t | after_delimiter_pos_ {} |
| bool | is_triggering_ {false} |
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. | |
| const LogString * | 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. | |
Protected Attributes inherited from esphome::Trigger< UARTDirection, std::vector< uint8_t > > | |
| Automation< Ts... > * | automation_parent_ |
The UARTDebugger class adds debugging support to a UART bus.
It accumulates bytes that travel over the UART bus and triggers one or more actions that can log the data at an appropriate time. What 'appropriate time' means exactly, is determined by a number of configurable constraints. E.g. when a given number of bytes is gathered and/or when no more data has been seen for a given time interval.
Definition at line 20 of file uart_debugger.h.
|
explicit |
Definition at line 13 of file uart_debugger.cpp.
|
inline |
Add a delimiter byte.
This can be called multiple times to setup a multi-byte delimiter (a typical example would be '\r
'). When the constructed byte sequence is found in the data stream, logging will be triggered.
Definition at line 42 of file uart_debugger.h.
|
protected |
Definition at line 75 of file uart_debugger.cpp.
|
protected |
Definition at line 73 of file uart_debugger.cpp.
|
protected |
Definition at line 27 of file uart_debugger.cpp.
|
protected |
Definition at line 31 of file uart_debugger.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 25 of file uart_debugger.cpp.
|
inline |
Set the maximum number of bytes to accumulate.
When the number of bytes is reached, logging will be triggered.
Definition at line 32 of file uart_debugger.h.
|
inline |
Set a timeout for the data stream.
When no new bytes are seen during this timeout, logging will be triggered.
Definition at line 36 of file uart_debugger.h.
|
inline |
Set the direction in which to inspect the bytes: incoming, outgoing or both.
When debugging in both directions, logging will be triggered when the direction of the data stream changes.
Definition at line 28 of file uart_debugger.h.
|
protected |
Definition at line 40 of file uart_debugger.cpp.
|
protected |
Definition at line 61 of file uart_debugger.cpp.
|
protected |
Definition at line 46 of file uart_debugger.cpp.
|
protected |
Definition at line 33 of file uart_debugger.cpp.
|
protected |
Definition at line 67 of file uart_debugger.cpp.
|
protected |
Definition at line 48 of file uart_debugger.h.
|
protected |
Definition at line 51 of file uart_debugger.h.
|
protected |
Definition at line 52 of file uart_debugger.h.
|
protected |
Definition at line 49 of file uart_debugger.h.
|
protected |
Definition at line 47 of file uart_debugger.h.
|
protected |
Definition at line 45 of file uart_debugger.h.
|
protected |
Definition at line 53 of file uart_debugger.h.
|
protected |
Definition at line 46 of file uart_debugger.h.
|
protected |
Definition at line 50 of file uart_debugger.h.