ESPHome  2024.10.2
Public Member Functions | Protected Member Functions | Protected Attributes
esphome::uart::UARTDebugger Class Reference

The UARTDebugger class adds debugging support to a UART bus. More...

#include <uart_debugger.h>

Inheritance diagram for esphome::uart::UARTDebugger:
esphome::Component esphome::Trigger< UARTDirection, std::vector< uint8_t > >

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. More...
 
void set_after_bytes (size_t size)
 Set the maximum number of bytes to accumulate. More...
 
void set_after_timeout (uint32_t timeout)
 Set a timeout for the data stream. More...
 
void add_delimiter_byte (uint8_t byte)
 Add a delimiter byte. More...
 
- Public Member Functions inherited from esphome::Component
virtual void setup ()
 Where the component's initialization should happen. More...
 
virtual void dump_config ()
 
virtual float get_setup_priority () const
 priority of setup(). More...
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop(). More...
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
uint32_t get_component_state () const
 
virtual void mark_failed ()
 Mark this component as failed. More...
 
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="unspecified")
 
void status_set_error (const char *message="unspecified")
 
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. More...
 
const char * get_component_source () const
 Get the integration where this component was declared as a string. More...
 
- Public Member Functions inherited from esphome::Trigger< UARTDirection, std::vector< uint8_t > >
void trigger (Ts... x)
 Inform the parent automation that the event has triggered. More...
 
void set_automation_parent (Automation< Ts... > *automation_parent)
 
void stop_action ()
 Stop any action connected to this trigger. More...
 
bool is_action_running ()
 Returns true if any action connected to this trigger is running. More...
 

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_interval (const std::string &name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name. More...
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const std::string &name)
 Cancel an interval function. More...
 
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. More...
 
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. More...
 
void set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name. More...
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const std::string &name)
 Cancel a timeout function. More...
 
void defer (const std::string &name, std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
bool cancel_defer (const std::string &name)
 Cancel a defer callback using the specified name, name must not be empty. More...
 

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
uint32_t component_state_ {0x0000}
 State of this component. More...
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 
- Protected Attributes inherited from esphome::Trigger< UARTDirection, std::vector< uint8_t > >
Automation< Ts... > * automation_parent_
 

Detailed Description

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 21 of file uart_debugger.h.

Constructor & Destructor Documentation

◆ UARTDebugger()

esphome::uart::UARTDebugger::UARTDebugger ( UARTComponent parent)
explicit

Definition at line 14 of file uart_debugger.cpp.

Member Function Documentation

◆ add_delimiter_byte()

void esphome::uart::UARTDebugger::add_delimiter_byte ( uint8_t  byte)
inline

Add a delimiter byte.

This can be called multiple times to setup a multi-byte delimiter (a typical example would be '
'). When the constructed byte sequence is found in the data stream, logging will be triggered.

Definition at line 43 of file uart_debugger.h.

◆ fire_trigger_()

void esphome::uart::UARTDebugger::fire_trigger_ ( )
protected

Definition at line 76 of file uart_debugger.cpp.

◆ has_buffered_bytes_()

bool esphome::uart::UARTDebugger::has_buffered_bytes_ ( )
protected

Definition at line 74 of file uart_debugger.cpp.

◆ is_my_direction_()

bool esphome::uart::UARTDebugger::is_my_direction_ ( UARTDirection  direction)
protected

Definition at line 28 of file uart_debugger.cpp.

◆ is_recursive_()

bool esphome::uart::UARTDebugger::is_recursive_ ( )
protected

Definition at line 32 of file uart_debugger.cpp.

◆ loop()

void esphome::uart::UARTDebugger::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 26 of file uart_debugger.cpp.

◆ set_after_bytes()

void esphome::uart::UARTDebugger::set_after_bytes ( size_t  size)
inline

Set the maximum number of bytes to accumulate.

When the number of bytes is reached, logging will be triggered.

Definition at line 33 of file uart_debugger.h.

◆ set_after_timeout()

void esphome::uart::UARTDebugger::set_after_timeout ( uint32_t  timeout)
inline

Set a timeout for the data stream.

When no new bytes are seen during this timeout, logging will be triggered.

Definition at line 37 of file uart_debugger.h.

◆ set_direction()

void esphome::uart::UARTDebugger::set_direction ( UARTDirection  direction)
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 29 of file uart_debugger.h.

◆ store_byte_()

void esphome::uart::UARTDebugger::store_byte_ ( UARTDirection  direction,
uint8_t  byte 
)
protected

Definition at line 41 of file uart_debugger.cpp.

◆ trigger_after_bytes_()

void esphome::uart::UARTDebugger::trigger_after_bytes_ ( )
protected

Definition at line 62 of file uart_debugger.cpp.

◆ trigger_after_delimiter_()

void esphome::uart::UARTDebugger::trigger_after_delimiter_ ( uint8_t  byte)
protected

Definition at line 47 of file uart_debugger.cpp.

◆ trigger_after_direction_change_()

void esphome::uart::UARTDebugger::trigger_after_direction_change_ ( UARTDirection  direction)
protected

Definition at line 34 of file uart_debugger.cpp.

◆ trigger_after_timeout_()

void esphome::uart::UARTDebugger::trigger_after_timeout_ ( )
protected

Definition at line 68 of file uart_debugger.cpp.

Field Documentation

◆ after_bytes_

size_t esphome::uart::UARTDebugger::after_bytes_
protected

Definition at line 49 of file uart_debugger.h.

◆ after_delimiter_

std::vector<uint8_t> esphome::uart::UARTDebugger::after_delimiter_ {}
protected

Definition at line 52 of file uart_debugger.h.

◆ after_delimiter_pos_

size_t esphome::uart::UARTDebugger::after_delimiter_pos_ {}
protected

Definition at line 53 of file uart_debugger.h.

◆ after_timeout_

uint32_t esphome::uart::UARTDebugger::after_timeout_
protected

Definition at line 50 of file uart_debugger.h.

◆ bytes_

std::vector<uint8_t> esphome::uart::UARTDebugger::bytes_ {}
protected

Definition at line 48 of file uart_debugger.h.

◆ for_direction_

UARTDirection esphome::uart::UARTDebugger::for_direction_
protected

Definition at line 46 of file uart_debugger.h.

◆ is_triggering_

bool esphome::uart::UARTDebugger::is_triggering_ {false}
protected

Definition at line 54 of file uart_debugger.h.

◆ last_direction_

UARTDirection esphome::uart::UARTDebugger::last_direction_ {}
protected

Definition at line 47 of file uart_debugger.h.

◆ last_time_

uint32_t esphome::uart::UARTDebugger::last_time_ {}
protected

Definition at line 51 of file uart_debugger.h.


The documentation for this class was generated from the following files: