A reliability layer that delivers packets in order, without loss or duplicates, between two peers.
More...
|
| | HdlcReliability (PacketInterface *lower) |
| |
| void | setup () override |
| |
| void | loop () override |
| |
| void | dump_config () override |
| |
| bool | send_to_interface (const PacketBuffer &data, const PacketMetaData &meta_data) override |
| |
| size_t | get_send_capacity () const override |
| | No room while the layer has no send queue: before setup(), or when setup() failed.
|
| |
| void | set_ack_timeout (uint32_t timeout_ms) |
| |
| void | set_ack_delay (uint32_t ack_delay_ms) |
| |
| void | set_max_queue_length (uint8_t length) |
| |
| void | set_max_retries (uint8_t retries) |
| |
| bool | is_connected () const |
| |
| size_t | get_max_packet_size () const |
| | The largest packet this layer accepts; fixed when the layer is constructed.
|
| |
| uint8_t | get_capabilities () const |
| | The capabilities of this layer and every layer below it.
|
| |
| bool | has_capability (Capability capability) const |
| |
| template<typename F > |
| void | add_on_session_state_callback (F &&callback) |
| | With CAPABILITY_SESSION, the callback is called with true when the peer can be reached, including after it restarts, and with false when it is lost.
|
| |
| PacketInterface * | top () |
| | The topmost layer stacked on this one, or this one if nothing is stacked on it.
|
| |
| void | set_name (const char *name) |
| | Name shown in log messages; a layer takes the name of the link it is stacked on.
|
| |
| const char * | get_name () const |
| |
| template<typename F > |
| void | add_packet_interface_listener (F &&callback) |
| | Add a listener that will be called when data is received.
|
| |
| void | dump_config () override |
| |
| virtual float | get_setup_priority () const |
| | priority of setup().
|
| |
| 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) |
| |
| bool | status_comm_result (bool ok) |
| | Clears the warning when ok, else sets it with message (default "Communication failed"); returns ok.
|
| |
| bool | status_comm_result (bool ok, const LogString *message) |
| |
| void | status_set_error () |
| |
| void | status_set_error (const LogString *message) |
| |
| void | status_clear_warning () |
| |
| void | status_clear_error () |
| |
| | ESPDEPRECATED ("Use status_momentary_warning() without a name. Removed in 2027.5.0", "2026.11.0") void status_momentary_warning(const char *name |
| |
| void | status_momentary_warning (uint32_t length=5000) |
| | Set warning status flag and clear it after length ms.
|
| |
| void | status_momentary_warning (const LogString *message, uint32_t length=5000) |
| |
| | ESPDEPRECATED ("Use status_momentary_error() without a name. Removed in 2027.5.0", "2026.11.0") void status_momentary_error(const char *name |
| |
| void | status_momentary_error (uint32_t length=5000) |
| | Set error status flag and clear it after length ms.
|
| |
| void | status_momentary_error (const LogString *message, uint32_t length=5000) |
| |
| 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, uint32_t &threshold_ms_out) |
| |
|
| void | receive_ (const PacketBuffer &data, const PacketMetaData &meta_data) |
| |
| void | receive_info_ (uint8_t control, const uint8_t *payload, size_t length, const PacketMetaData &meta_data) |
| |
| bool | send_frame_ (uint8_t control, const uint8_t *payload, size_t length) |
| |
| bool | send_supervisory_ (uint8_t type) |
| |
| bool | send_pending_ () |
| |
| void | resend_outstanding_ () |
| |
| void | retry_send_ () |
| |
| void | owe_ack_ (bool now) |
| | An RR is owed: at once, or after the ack delay unless an I-frame carries it first.
|
| |
| void | ack_sent_ () |
| |
| void | process_ack_ (uint8_t nr) |
| |
| void | on_timeout_ () |
| |
| void | start_reset_ () |
| |
| void | link_up_ () |
| |
| void | start_timer_ () |
| |
| void | request_loop_ () |
| |
| uint8_t | outstanding_ () const |
| |
| uint8_t | slot_index_ (uint8_t seq) const |
| |
| uint8_t * | slot_ (uint8_t seq) |
| |
| | PacketInterface (size_t max_packet_size) |
| |
| virtual | ~PacketInterface ()=default |
| |
| void | on_receive_from_interface_ (const PacketBuffer &data, const PacketMetaData &meta_data) |
| | This function should be called by implementing classes with received data to be passed to any listeners.
|
| |
| void | note_received_ (bool understood) |
| | Called by a layer for each received packet it understood, or could not make sense of.
|
| |
| void | stack_on_ (PacketInterface *lower, Capability capability) |
| | Called by a layer's constructor to record itself as the layer above lower, adding its own capability.
|
| |
| void | inherit_from_ (PacketInterface *lower, Capability capability) |
| | Takes the name and capabilities of lower without becoming its top, for one of several stacks on a link.
|
| |
| 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.
|
| |
| bool | set_error_flag_ (const LogString *message) |
| | Set the error flag and log it; true when it was not set before.
|
| |
| 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 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 (const char *name) |
| | Cancel an interval function.
|
| |
| bool | cancel_interval (uint32_t id) |
| |
| bool | cancel_interval (InternalSchedulerID id) |
| |
| 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 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 (const char *name) |
| | Cancel a timeout function.
|
| |
| bool | cancel_timeout (uint32_t id) |
| |
| bool | cancel_timeout (InternalSchedulerID id) |
| |
| 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.
|
| |
| void | defer (uint32_t id, std::function< void()> &&f) |
| | Defer a callback with a numeric ID (zero heap allocation)
|
| |
| bool | cancel_defer (const char *name) |
| | Cancel a defer callback using the specified name, name must not be empty.
|
| |
| bool | cancel_defer (uint32_t id) |
| |
| void | status_clear_warning_slow_path_ () |
| |
| void | status_clear_error_slow_path_ () |
| |
A reliability layer that delivers packets in order, without loss or duplicates, between two peers.
It follows HDLC asynchronous balanced mode, with sequence numbers modulo 8 and go-back-N retransmission:
- I-frames carry a payload, the sequence number N(S) and an acknowledgement N(R) of the peer's frames.
- RR frames acknowledge without a payload; REJ frames ask the peer to resend from N(R).
- SABM resets both peers' sequence numbers, and UA answers it.
Each frame is the HDLC control byte, the payload, then a CRC-16 of both in little endian order. Unacknowledged frames are resent after the timeout; after max_retries the link is reset.
Definition at line 22 of file hdlc_reliability.h.