ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
esphome::ESPHomeOTAComponent Class Referencefinal

ESPHomeOTAComponent provides a simple way to integrate Over-the-Air updates into your app using ArduinoOTA. More...

#include <ota_esphome.h>

Inheritance diagram for esphome::ESPHomeOTAComponent:
esphome::ota::OTAComponent esphome::Component

Data Structures

struct  DataTransfer
 
struct  InflateSession
 
struct  NoiseSession
 
struct  UdpLink
 

Public Types

enum class  OTAState : uint8_t {
  IDLE , MAGIC_READ , MAGIC_ACK , FEATURE_READ ,
  FEATURE_ACK , AUTH_SEND , AUTH_READ , NOISE_HANDSHAKE ,
  DATA
}
 

Public Member Functions

void set_auth_password (const std::string &password)
 
template<bool B = false>
void set_auth_password (const std::string &)
 
void set_noise_psk (const uint8_t *psk)
 psk points at 32 bytes that live in flash for the life of the program
 
void set_port (uint16_t port)
 Manually set the port OTA should listen on.
 
void setup () override
 
void dump_config () override
 
float get_setup_priority () const override
 
void loop () override
 
uint16_t get_port () const
 
- Public Member Functions inherited from esphome::ota::OTAComponent
void add_state_listener (OTAStateListener *listener)
 
- 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)
 
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)
 

Protected Types

using UdpSlot = struct pbuf *
 
using UdpSlot = struct OtaUdpDatagram *
 

Protected Member Functions

void handle_handshake_ ()
 
void handle_data_ ()
 
void udp_open_ (UdpLink &link)
 
bool udp_start_ ()
 
ssize_t udp_read_ (uint8_t *buf, size_t len)
 
bool udp_send_ (const uint8_t *data, size_t len)
 
void udp_linger_ ()
 
void udp_poll_ ()
 
void udp_poll_ ()
 
ssize_t transport_read_ (uint8_t *buf, size_t len)
 
bool handle_auth_send_ ()
 
bool handle_auth_read_ ()
 
bool select_auth_type_ ()
 
void cleanup_auth_ ()
 
void log_auth_warning_ (const LogString *msg)
 
bool readall_ (uint8_t *buf, size_t len)
 
bool writeall_ (const uint8_t *buf, size_t len)
 
const noise::NoiseContext & noise_context_ () const
 
bool noise_offered_ () const
 
void noise_reserve_session_ ()
 
bool noise_start_session_ (uint8_t server_feature_flags)
 Start the responder handshake, on the session reserved at offer time.
 
bool handle_noise_handshake_ ()
 Drive the non-blocking handshake from loop(); returns true once the transport ciphers are ready.
 
bool noise_try_read_frame_ ()
 Non-blocking read of one handshake frame into the session buffer.
 
size_t noise_frame_payload_len_ (const uint8_t *header, size_t min_len, size_t max_len)
 Payload length from a frame header, or 0 (logged) when the indicator or the length is out of range.
 
bool noise_try_write_frame_ ()
 Non-blocking write of the pending session-buffer frame.
 
void noise_send_reject_ (const LogString *reason)
 Best-effort explicit reject frame so the client can log a readable reason.
 
ssize_t noise_decrypt_ (uint8_t *buf, size_t len)
 Decrypt a ciphertext in place; returns the plaintext size or -1.
 
ssize_t noise_read_frame_blocking_ (uint8_t *buf, size_t min_ciphertext, size_t max_ciphertext)
 Blocking read of one frame whose ciphertext size must be within the given bounds, decrypted in place; returns the plaintext size, or -1 on error.
 
bool noise_readall_ (uint8_t *buf, size_t len)
 Blocking read of one frame whose plaintext must be exactly len bytes (control units are one unit per frame).
 
ssize_t noise_read_data_ (uint8_t *buf, size_t capacity)
 Blocking read of one data-phase frame, decrypted in place; returns the plaintext size, or -1 on error.
 
bool noise_write_ (const uint8_t *data, size_t len)
 Blocking write of a short response (at most NOISE_MAX_RESPONSE bytes) as one encrypted frame.
 
bool data_write_ (const uint8_t *data, size_t len)
 
bool data_write_byte_ (uint8_t byte)
 
bool data_readall_ (uint8_t *buf, size_t len)
 
ssize_t receive_data_ (uint8_t *buf, DataTransfer &xfer)
 
void send_chunk_acks_ (DataTransfer &xfer)
 
void ack_received_ (DataTransfer &xfer)
 
void ack_written_ (DataTransfer &xfer)
 
bool read_size_ (uint8_t *buf, size_t &size, const LogString *desc)
 
ota::OTAResponseTypes write_flash_ (uint8_t *data, size_t len)
 
bool try_read_ (size_t to_read, const LogString *desc)
 
bool try_write_ (size_t to_write, const LogString *desc)
 
bool would_block_ (int error_code) const
 
bool handle_read_error_ (ssize_t read, const LogString *desc)
 
bool handle_write_error_ (ssize_t written, const LogString *desc)
 
void transition_ota_state_ (OTAState next_state)
 
void server_failed_ (const LogString *msg)
 
void log_socket_error_ (const LogString *msg)
 
void log_read_error_ (const LogString *what)
 
bool client_left_before_start_ ()
 
void log_start_ (const LogString *phase)
 
void log_remote_closed_ (const LogString *during)
 
void cleanup_connection_ ()
 
void send_error_and_cleanup_ (ota::OTAResponseTypes error)
 
void yield_and_feed_watchdog_ ()
 
ota::OTAResponseTypes inflate_flush_ (InflateSession &session)
 
ota::OTAResponseTypes inflate_data_ (uint8_t *in, size_t image_size, DataTransfer &xfer)
 
bool extended_proto_ () const
 
- Protected Member Functions inherited from esphome::ota::OTAComponent
void notify_state_ (OTAState state, float progress, uint8_t error)
 
void notify_state_deferred_ (OTAState state, float progress, uint8_t error)
 Notify state with deferral to main loop (for thread safety).
 
- 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.
 
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_ ()
 

Static Protected Member Functions

static void udp_on_datagram (UdpLink &link, UdpSlot p, uint16_t port)
 
static void udp_send_ack (UdpLink &link, uint16_t prompted_by)
 
static void udp_recv_cb (void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *addr, uint16_t port)
 

Protected Attributes

std::string password_
 
RAMUniquePtr< uint8_t[]> auth_buf_
 
noise::NoiseContext noise_ctx_
 
RAMUniquePtr< noise::psk_t > saved_psk_
 
RAMUniquePtr< NoiseSession > noise_
 
socket::ListenSocket * server_ {nullptr}
 
std::unique_ptr< socket::Socket > client_
 
ota::OTABackendPtr backend_
 
union { 
 
   uint32_t   client_connect_time_ {0} 
 
   UdpLink *   udp_ 
 
};  
 
RAMUniquePtr< InflateSession > inflate_
 
uint32_t running_app_offset_ {0}
 
size_t running_app_size_ {0}
 
uint16_t port_
 
uint8_t handshake_buf_ [HANDSHAKE_BUF_SIZE]
 
OTAState ota_state_ {OTAState::IDLE}
 
uint8_t handshake_buf_pos_ {0}
 
uint8_t ota_features_ {0}
 
bool remote_closed_ {false}
 
uint8_t auth_buf_pos_ {0}
 
uint8_t auth_type_ {0}
 
- Protected Attributes inherited from esphome::ota::OTAComponent
std::vector< OTAStateListener * > state_listeners_
 
- Protected Attributes inherited from esphome::Component
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_
 

Static Protected Attributes

static constexpr size_t UDP_OUT_SIZE = 64
 
static constexpr uint8_t UDP_WINDOW = 4
 
static constexpr size_t SHA256_HEX_SIZE = 64
 
static constexpr size_t NOISE_MAX_RESPONSE = 4
 
static constexpr bool ACK_AFTER_WRITE = true
 
static constexpr size_t HANDSHAKE_BUF_SIZE = 5
 
static constexpr size_t OTA_BUFFER_SIZE = 1040
 
static constexpr size_t NOISE_CLIENT_MAX_PLAINTEXT = 1024
 
static constexpr size_t OTA_INFLATE_WINDOW_SIZE = 4096
 
static constexpr uint8_t MAGIC_BYTES [5] = {0x6C, 0x26, 0xF7, 0x5C, 0x45}
 

Additional Inherited Members

- Data Fields inherited from esphome::Component
uint32_t length = 5000)
 

Detailed Description

ESPHomeOTAComponent provides a simple way to integrate Over-the-Air updates into your app using ArduinoOTA.

Definition at line 40 of file ota_esphome.h.

Member Typedef Documentation

◆ UdpSlot [1/2]

using esphome::ESPHomeOTAComponent::UdpSlot = struct pbuf *
protected

Definition at line 94 of file ota_esphome.h.

◆ UdpSlot [2/2]

using esphome::ESPHomeOTAComponent::UdpSlot = struct OtaUdpDatagram *
protected

Definition at line 96 of file ota_esphome.h.

Member Enumeration Documentation

◆ OTAState

enum class esphome::ESPHomeOTAComponent::OTAState : uint8_t
strong
Enumerator
IDLE 
MAGIC_READ 
MAGIC_ACK 
FEATURE_READ 
FEATURE_ACK 
AUTH_SEND 
AUTH_READ 
NOISE_HANDSHAKE 
DATA 

Definition at line 42 of file ota_esphome.h.

Member Function Documentation

◆ ack_received_()

void esphome::ESPHomeOTAComponent::ack_received_ ( DataTransfer & xfer)
inlineprotected

Definition at line 233 of file ota_esphome.h.

◆ ack_written_()

void esphome::ESPHomeOTAComponent::ack_written_ ( DataTransfer & xfer)
inlineprotected

Definition at line 237 of file ota_esphome.h.

◆ cleanup_auth_()

void esphome::ESPHomeOTAComponent::cleanup_auth_ ( )
protected

Definition at line 1154 of file ota_esphome.cpp.

◆ cleanup_connection_()

void esphome::ESPHomeOTAComponent::cleanup_connection_ ( )
protected

Definition at line 971 of file ota_esphome.cpp.

◆ client_left_before_start_()

bool esphome::ESPHomeOTAComponent::client_left_before_start_ ( )
protected

Definition at line 780 of file ota_esphome.cpp.

◆ data_readall_()

bool esphome::ESPHomeOTAComponent::data_readall_ ( uint8_t * buf,
size_t len )
inlineprotected

Definition at line 205 of file ota_esphome.h.

◆ data_write_()

bool esphome::ESPHomeOTAComponent::data_write_ ( const uint8_t * data,
size_t len )
inlineprotected

Definition at line 196 of file ota_esphome.h.

◆ data_write_byte_()

bool esphome::ESPHomeOTAComponent::data_write_byte_ ( uint8_t byte)
inlineprotected

Definition at line 203 of file ota_esphome.h.

◆ dump_config()

void esphome::ESPHomeOTAComponent::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 130 of file ota_esphome.cpp.

◆ extended_proto_()

bool esphome::ESPHomeOTAComponent::extended_proto_ ( ) const
inlineprotected

Definition at line 229 of file ota_esphome.cpp.

◆ get_port()

uint16_t esphome::ESPHomeOTAComponent::get_port ( ) const
inline

Definition at line 82 of file ota_esphome.h.

◆ get_setup_priority()

float esphome::ESPHomeOTAComponent::get_setup_priority ( ) const
overridevirtual

Reimplemented from esphome::Component.

Definition at line 774 of file ota_esphome.cpp.

◆ handle_auth_read_()

bool esphome::ESPHomeOTAComponent::handle_auth_read_ ( )
protected

Definition at line 1096 of file ota_esphome.cpp.

◆ handle_auth_send_()

bool esphome::ESPHomeOTAComponent::handle_auth_send_ ( )
protected

Definition at line 1020 of file ota_esphome.cpp.

◆ handle_data_()

void esphome::ESPHomeOTAComponent::handle_data_ ( )
protected

Handle the OTA data transfer and update process.

This method is blocking and will not return until the OTA update completes, fails, or times out. It receives the firmware data, writes it to flash, and reboots on success.

Authentication has already been handled in the non-blocking states AUTH_SEND/AUTH_READ.

Socket I/O strategy:

Before this function, the handshake states use non-blocking I/O: read()/write() return immediately with EWOULDBLOCK if no data loop() retries on next iteration (~16ms), no delay needed

This function switches to blocking mode with SO_RCVTIMEO/SO_SNDTIMEO:

Path Wait mechanism WDT strategy
Main read SO_RCVTIMEO (2s block) feed_wdt() only, no delay
readall_() SO_RCVTIMEO (2s block) feed_wdt() + delay(0)
writeall_() SO_SNDTIMEO (2s block) feed_wdt() + delay(1)

readall_() uses delay(0) because SO_RCVTIMEO already waited — just yield. writeall_() uses delay(1) because on raw TCP (ESP8266, RP2040) writes never block (tcp_write returns immediately), so delay(1) prevents spinning.

Platform details: BSD sockets (ESP32): setblocking(true) makes read/write block lwip sockets (LT): setblocking(true) makes read/write block Raw TCP (8266, RP2040): setblocking is no-op; SO_RCVTIMEO uses wakeable_delay() in read(); write() always returns immediately

Definition at line 464 of file ota_esphome.cpp.

◆ handle_handshake_()

void esphome::ESPHomeOTAComponent::handle_handshake_ ( )
protected

Handle the OTA handshake and authentication.

This method is non-blocking and will return immediately if no data is available. It manages the state machine through connection, magic bytes validation, feature negotiation, and authentication before entering the blocking data transfer phase.

Definition at line 238 of file ota_esphome.cpp.

◆ handle_noise_handshake_()

bool esphome::ESPHomeOTAComponent::handle_noise_handshake_ ( )
protected

Drive the non-blocking handshake from loop(); returns true once the transport ciphers are ready.

A would-block returns false and the next loop() resumes from the NoiseSession cursors; on failure the connection is cleaned up.

Definition at line 87 of file ota_esphome_noise.cpp.

◆ handle_read_error_()

bool esphome::ESPHomeOTAComponent::handle_read_error_ ( ssize_t read,
const LogString * desc )
protected

Definition at line 829 of file ota_esphome.cpp.

◆ handle_write_error_()

bool esphome::ESPHomeOTAComponent::handle_write_error_ ( ssize_t written,
const LogString * desc )
protected

Definition at line 842 of file ota_esphome.cpp.

◆ inflate_data_()

ota::OTAResponseTypes esphome::ESPHomeOTAComponent::inflate_data_ ( uint8_t * in,
size_t image_size,
DataTransfer & xfer )
protected

Definition at line 35 of file ota_esphome_inflate_session.cpp.

◆ inflate_flush_()

ota::OTAResponseTypes esphome::ESPHomeOTAComponent::inflate_flush_ ( InflateSession & session)
protected

Definition at line 14 of file ota_esphome_inflate_session.cpp.

◆ log_auth_warning_()

void esphome::ESPHomeOTAComponent::log_auth_warning_ ( const LogString * msg)
protected

Definition at line 1005 of file ota_esphome.cpp.

◆ log_read_error_()

void esphome::ESPHomeOTAComponent::log_read_error_ ( const LogString * what)
protected

Definition at line 789 of file ota_esphome.cpp.

◆ log_remote_closed_()

void esphome::ESPHomeOTAComponent::log_remote_closed_ ( const LogString * during)
protected

Definition at line 816 of file ota_esphome.cpp.

◆ log_socket_error_()

void esphome::ESPHomeOTAComponent::log_socket_error_ ( const LogString * msg)
protected

Definition at line 776 of file ota_esphome.cpp.

◆ log_start_()

void esphome::ESPHomeOTAComponent::log_start_ ( const LogString * phase)
protected

Definition at line 797 of file ota_esphome.cpp.

◆ loop()

void esphome::ESPHomeOTAComponent::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 188 of file ota_esphome.cpp.

◆ noise_context_()

const noise::NoiseContext & esphome::ESPHomeOTAComponent::noise_context_ ( ) const
protected

Definition at line 36 of file ota_esphome.cpp.

◆ noise_decrypt_()

ssize_t esphome::ESPHomeOTAComponent::noise_decrypt_ ( uint8_t * buf,
size_t len )
protected

Decrypt a ciphertext in place; returns the plaintext size or -1.

Definition at line 220 of file ota_esphome_noise.cpp.

◆ noise_frame_payload_len_()

size_t esphome::ESPHomeOTAComponent::noise_frame_payload_len_ ( const uint8_t * header,
size_t min_len,
size_t max_len )
protected

Payload length from a frame header, or 0 (logged) when the indicator or the length is out of range.

Callers pass min_len >= 1 so 0 is never valid.

Definition at line 160 of file ota_esphome_noise.cpp.

◆ noise_offered_()

bool esphome::ESPHomeOTAComponent::noise_offered_ ( ) const
inlineprotected

Definition at line 223 of file ota_esphome.cpp.

◆ noise_read_data_()

ssize_t esphome::ESPHomeOTAComponent::noise_read_data_ ( uint8_t * buf,
size_t capacity )
protected

Blocking read of one data-phase frame, decrypted in place; returns the plaintext size, or -1 on error.

buf is the OTA_BUFFER_SIZE data buffer. The ciphertext must fit that buffer and its plaintext must fit what the caller accepts (the remaining image bytes).

Definition at line 264 of file ota_esphome_noise.cpp.

◆ noise_read_frame_blocking_()

ssize_t esphome::ESPHomeOTAComponent::noise_read_frame_blocking_ ( uint8_t * buf,
size_t min_ciphertext,
size_t max_ciphertext )
protected

Blocking read of one frame whose ciphertext size must be within the given bounds, decrypted in place; returns the plaintext size, or -1 on error.

buf needs max_ciphertext capacity.

Definition at line 236 of file ota_esphome_noise.cpp.

◆ noise_readall_()

bool esphome::ESPHomeOTAComponent::noise_readall_ ( uint8_t * buf,
size_t len )
protected

Blocking read of one frame whose plaintext must be exactly len bytes (control units are one unit per frame).

buf needs len + noise::MAC_SIZE capacity; the plaintext lands at buf[0..len).

Definition at line 255 of file ota_esphome_noise.cpp.

◆ noise_reserve_session_()

void esphome::ESPHomeOTAComponent::noise_reserve_session_ ( )
protected

Definition at line 35 of file ota_esphome_noise.cpp.

◆ noise_send_reject_()

void esphome::ESPHomeOTAComponent::noise_send_reject_ ( const LogString * reason)
protected

Best-effort explicit reject frame so the client can log a readable reason.

Definition at line 209 of file ota_esphome_noise.cpp.

◆ noise_start_session_()

bool esphome::ESPHomeOTAComponent::noise_start_session_ ( uint8_t server_feature_flags)
protected

Start the responder handshake, on the session reserved at offer time.

The prologue binds the whole plaintext preamble, so any tampering with the negotiation (a stripped feature flag, a changed version) breaks the first handshake MAC on either side: "NoiseOTAInit" | magic(5) | OK,version | client_features | FEATURE_FLAGS,server_flags

Definition at line 47 of file ota_esphome_noise.cpp.

◆ noise_try_read_frame_()

bool esphome::ESPHomeOTAComponent::noise_try_read_frame_ ( )
protected

Non-blocking read of one handshake frame into the session buffer.

Definition at line 170 of file ota_esphome_noise.cpp.

◆ noise_try_write_frame_()

bool esphome::ESPHomeOTAComponent::noise_try_write_frame_ ( )
protected

Non-blocking write of the pending session-buffer frame.

Definition at line 196 of file ota_esphome_noise.cpp.

◆ noise_write_()

bool esphome::ESPHomeOTAComponent::noise_write_ ( const uint8_t * data,
size_t len )
protected

Blocking write of a short response (at most NOISE_MAX_RESPONSE bytes) as one encrypted frame.

Definition at line 270 of file ota_esphome_noise.cpp.

◆ read_size_()

bool esphome::ESPHomeOTAComponent::read_size_ ( uint8_t * buf,
size_t & size,
const LogString * desc )
inlineprotected

Definition at line 882 of file ota_esphome.cpp.

◆ readall_()

bool esphome::ESPHomeOTAComponent::readall_ ( uint8_t * buf,
size_t len )
protected

Definition at line 708 of file ota_esphome.cpp.

◆ receive_data_()

ssize_t esphome::ESPHomeOTAComponent::receive_data_ ( uint8_t * buf,
DataTransfer & xfer )
protected

Definition at line 898 of file ota_esphome.cpp.

◆ select_auth_type_()

bool esphome::ESPHomeOTAComponent::select_auth_type_ ( )
protected

Definition at line 1007 of file ota_esphome.cpp.

◆ send_chunk_acks_()

void esphome::ESPHomeOTAComponent::send_chunk_acks_ ( DataTransfer & xfer)
protected

Definition at line 956 of file ota_esphome.cpp.

◆ send_error_and_cleanup_()

void esphome::ESPHomeOTAComponent::send_error_and_cleanup_ ( ota::OTAResponseTypes error)
inlineprotected

Definition at line 263 of file ota_esphome.h.

◆ server_failed_()

void esphome::ESPHomeOTAComponent::server_failed_ ( const LogString * msg)
protected

Definition at line 820 of file ota_esphome.cpp.

◆ set_auth_password() [1/2]

template<bool B = false>
void esphome::ESPHomeOTAComponent::set_auth_password ( const std::string & )
inline

Definition at line 62 of file ota_esphome.h.

◆ set_auth_password() [2/2]

void esphome::ESPHomeOTAComponent::set_auth_password ( const std::string & password)
inline

Definition at line 58 of file ota_esphome.h.

◆ set_noise_psk()

void esphome::ESPHomeOTAComponent::set_noise_psk ( const uint8_t * psk)
inline

psk points at 32 bytes that live in flash for the life of the program

Definition at line 71 of file ota_esphome.h.

◆ set_port()

void esphome::ESPHomeOTAComponent::set_port ( uint16_t port)
inline

Manually set the port OTA should listen on.

Definition at line 75 of file ota_esphome.h.

◆ setup()

void esphome::ESPHomeOTAComponent::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 69 of file ota_esphome.cpp.

◆ transition_ota_state_()

void esphome::ESPHomeOTAComponent::transition_ota_state_ ( OTAState next_state)
inlineprotected

Definition at line 251 of file ota_esphome.h.

◆ transport_read_()

ssize_t esphome::ESPHomeOTAComponent::transport_read_ ( uint8_t * buf,
size_t len )
inlineprotected

Definition at line 143 of file ota_esphome.h.

◆ try_read_()

bool esphome::ESPHomeOTAComponent::try_read_ ( size_t to_read,
const LogString * desc )
protected

Definition at line 854 of file ota_esphome.cpp.

◆ try_write_()

bool esphome::ESPHomeOTAComponent::try_write_ ( size_t to_write,
const LogString * desc )
protected

Definition at line 868 of file ota_esphome.cpp.

◆ udp_linger_()

void esphome::ESPHomeOTAComponent::udp_linger_ ( )
protected

Definition at line 360 of file ota_esphome_udp.cpp.

◆ udp_on_datagram()

void esphome::ESPHomeOTAComponent::udp_on_datagram ( UdpLink & link,
UdpSlot p,
uint16_t port )
staticprotected

Definition at line 142 of file ota_esphome_udp.cpp.

◆ udp_open_()

void esphome::ESPHomeOTAComponent::udp_open_ ( UdpLink & link)
protected

Definition at line 216 of file ota_esphome_udp.cpp.

◆ udp_poll_() [1/2]

void esphome::ESPHomeOTAComponent::udp_poll_ ( )
inlineprotected

Definition at line 137 of file ota_esphome.h.

◆ udp_poll_() [2/2]

void esphome::ESPHomeOTAComponent::udp_poll_ ( )
protected

◆ udp_read_()

ssize_t esphome::ESPHomeOTAComponent::udp_read_ ( uint8_t * buf,
size_t len )
protected

Definition at line 306 of file ota_esphome_udp.cpp.

◆ udp_recv_cb()

void esphome::ESPHomeOTAComponent::udp_recv_cb ( void * arg,
struct udp_pcb * pcb,
struct pbuf * p,
const ip_addr_t * addr,
uint16_t port )
staticprotected

Definition at line 174 of file ota_esphome_udp.cpp.

◆ udp_send_()

bool esphome::ESPHomeOTAComponent::udp_send_ ( const uint8_t * data,
size_t len )
protected

Definition at line 348 of file ota_esphome_udp.cpp.

◆ udp_send_ack()

void esphome::ESPHomeOTAComponent::udp_send_ack ( UdpLink & link,
uint16_t prompted_by )
staticprotected

Definition at line 105 of file ota_esphome_udp.cpp.

◆ udp_start_()

bool esphome::ESPHomeOTAComponent::udp_start_ ( )
protected

Definition at line 267 of file ota_esphome_udp.cpp.

◆ would_block_()

bool esphome::ESPHomeOTAComponent::would_block_ ( int error_code) const
inlineprotected

Definition at line 248 of file ota_esphome.h.

◆ write_flash_()

ota::OTAResponseTypes esphome::ESPHomeOTAComponent::write_flash_ ( uint8_t * data,
size_t len )
protected

Definition at line 890 of file ota_esphome.cpp.

◆ writeall_()

bool esphome::ESPHomeOTAComponent::writeall_ ( const uint8_t * buf,
size_t len )
protected

Definition at line 742 of file ota_esphome.cpp.

◆ yield_and_feed_watchdog_()

void esphome::ESPHomeOTAComponent::yield_and_feed_watchdog_ ( )
protected

Definition at line 999 of file ota_esphome.cpp.

Field Documentation

◆ [union]

◆ ACK_AFTER_WRITE

static constexpr bool esphome::ESPHomeOTAComponent::ACK_AFTER_WRITE = true
staticconstexprprotected

Definition at line 228 of file ota_esphome.h.

◆ auth_buf_

RAMUniquePtr<uint8_t[]> esphome::ESPHomeOTAComponent::auth_buf_
protected

Definition at line 272 of file ota_esphome.h.

◆ auth_buf_pos_

uint8_t esphome::ESPHomeOTAComponent::auth_buf_pos_ {0}
protected

Definition at line 356 of file ota_esphome.h.

◆ auth_type_

uint8_t esphome::ESPHomeOTAComponent::auth_type_ {0}
protected

Definition at line 357 of file ota_esphome.h.

◆ backend_

ota::OTABackendPtr esphome::ESPHomeOTAComponent::backend_
protected

Definition at line 285 of file ota_esphome.h.

◆ client_

std::unique_ptr<socket::Socket> esphome::ESPHomeOTAComponent::client_
protected

Definition at line 284 of file ota_esphome.h.

◆ client_connect_time_

uint32_t esphome::ESPHomeOTAComponent::client_connect_time_ {0}

Definition at line 289 of file ota_esphome.h.

◆ handshake_buf_

uint8_t esphome::ESPHomeOTAComponent::handshake_buf_[HANDSHAKE_BUF_SIZE]
protected

Definition at line 350 of file ota_esphome.h.

◆ handshake_buf_pos_

uint8_t esphome::ESPHomeOTAComponent::handshake_buf_pos_ {0}
protected

Definition at line 352 of file ota_esphome.h.

◆ HANDSHAKE_BUF_SIZE

size_t esphome::ESPHomeOTAComponent::HANDSHAKE_BUF_SIZE = 5
staticconstexprprotected

Definition at line 302 of file ota_esphome.h.

◆ inflate_

RAMUniquePtr<InflateSession> esphome::ESPHomeOTAComponent::inflate_
protected

Definition at line 339 of file ota_esphome.h.

◆ MAGIC_BYTES

uint8_t esphome::ESPHomeOTAComponent::MAGIC_BYTES[5] = {0x6C, 0x26, 0xF7, 0x5C, 0x45}
staticconstexprprotected

Definition at line 342 of file ota_esphome.h.

◆ noise_

RAMUniquePtr<NoiseSession> esphome::ESPHomeOTAComponent::noise_
protected

Definition at line 280 of file ota_esphome.h.

◆ NOISE_CLIENT_MAX_PLAINTEXT

size_t esphome::ESPHomeOTAComponent::NOISE_CLIENT_MAX_PLAINTEXT = 1024
staticconstexprprotected

Definition at line 310 of file ota_esphome.h.

◆ noise_ctx_

noise::NoiseContext esphome::ESPHomeOTAComponent::noise_ctx_
protected

Definition at line 275 of file ota_esphome.h.

◆ NOISE_MAX_RESPONSE

size_t esphome::ESPHomeOTAComponent::NOISE_MAX_RESPONSE = 4
staticconstexprprotected

Definition at line 189 of file ota_esphome.h.

◆ OTA_BUFFER_SIZE

size_t esphome::ESPHomeOTAComponent::OTA_BUFFER_SIZE = 1040
staticconstexprprotected

Definition at line 306 of file ota_esphome.h.

◆ ota_features_

uint8_t esphome::ESPHomeOTAComponent::ota_features_ {0}
protected

Definition at line 353 of file ota_esphome.h.

◆ OTA_INFLATE_WINDOW_SIZE

size_t esphome::ESPHomeOTAComponent::OTA_INFLATE_WINDOW_SIZE = 4096
staticconstexprprotected

Definition at line 316 of file ota_esphome.h.

◆ ota_state_

OTAState esphome::ESPHomeOTAComponent::ota_state_ {OTAState::IDLE}
protected

Definition at line 351 of file ota_esphome.h.

◆ password_

std::string esphome::ESPHomeOTAComponent::password_
protected

Definition at line 271 of file ota_esphome.h.

◆ port_

uint16_t esphome::ESPHomeOTAComponent::port_
protected

Definition at line 349 of file ota_esphome.h.

◆ remote_closed_

bool esphome::ESPHomeOTAComponent::remote_closed_ {false}
protected

Definition at line 354 of file ota_esphome.h.

◆ running_app_offset_

uint32_t esphome::ESPHomeOTAComponent::running_app_offset_ {0}
protected

Definition at line 346 of file ota_esphome.h.

◆ running_app_size_

size_t esphome::ESPHomeOTAComponent::running_app_size_ {0}
protected

Definition at line 347 of file ota_esphome.h.

◆ saved_psk_

RAMUniquePtr<noise::psk_t> esphome::ESPHomeOTAComponent::saved_psk_
protected

Definition at line 278 of file ota_esphome.h.

◆ server_

socket::ListenSocket* esphome::ESPHomeOTAComponent::server_ {nullptr}
protected

Definition at line 283 of file ota_esphome.h.

◆ SHA256_HEX_SIZE

size_t esphome::ESPHomeOTAComponent::SHA256_HEX_SIZE = 64
staticconstexprprotected

Definition at line 151 of file ota_esphome.h.

◆ udp_

UdpLink * esphome::ESPHomeOTAComponent::udp_ {nullptr}

Definition at line 290 of file ota_esphome.h.

◆ UDP_OUT_SIZE

size_t esphome::ESPHomeOTAComponent::UDP_OUT_SIZE = 64
staticconstexprprotected

Definition at line 90 of file ota_esphome.h.

◆ UDP_WINDOW

uint8_t esphome::ESPHomeOTAComponent::UDP_WINDOW = 4
staticconstexprprotected

Definition at line 92 of file ota_esphome.h.


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