|
ESPHome 2026.11.0-dev
|
ESPHomeOTAComponent provides a simple way to integrate Over-the-Air updates into your app using ArduinoOTA. More...
#include <ota_esphome.h>
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) |
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.
|
protected |
Definition at line 94 of file ota_esphome.h.
|
protected |
Definition at line 96 of file ota_esphome.h.
|
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.
|
inlineprotected |
Definition at line 233 of file ota_esphome.h.
|
inlineprotected |
Definition at line 237 of file ota_esphome.h.
|
protected |
Definition at line 1154 of file ota_esphome.cpp.
|
protected |
Definition at line 971 of file ota_esphome.cpp.
|
protected |
Definition at line 780 of file ota_esphome.cpp.
|
inlineprotected |
Definition at line 205 of file ota_esphome.h.
|
inlineprotected |
Definition at line 196 of file ota_esphome.h.
|
inlineprotected |
Definition at line 203 of file ota_esphome.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 130 of file ota_esphome.cpp.
|
inlineprotected |
Definition at line 229 of file ota_esphome.cpp.
|
inline |
Definition at line 82 of file ota_esphome.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 774 of file ota_esphome.cpp.
|
protected |
Definition at line 1096 of file ota_esphome.cpp.
|
protected |
Definition at line 1020 of file ota_esphome.cpp.
|
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.
|
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.
|
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.
|
protected |
Definition at line 829 of file ota_esphome.cpp.
|
protected |
Definition at line 842 of file ota_esphome.cpp.
|
protected |
Definition at line 35 of file ota_esphome_inflate_session.cpp.
|
protected |
Definition at line 14 of file ota_esphome_inflate_session.cpp.
|
protected |
Definition at line 1005 of file ota_esphome.cpp.
|
protected |
Definition at line 789 of file ota_esphome.cpp.
|
protected |
Definition at line 816 of file ota_esphome.cpp.
|
protected |
Definition at line 776 of file ota_esphome.cpp.
|
protected |
Definition at line 797 of file ota_esphome.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 188 of file ota_esphome.cpp.
|
protected |
Definition at line 36 of file ota_esphome.cpp.
|
protected |
Decrypt a ciphertext in place; returns the plaintext size or -1.
Definition at line 220 of file ota_esphome_noise.cpp.
|
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.
|
inlineprotected |
Definition at line 223 of file ota_esphome.cpp.
|
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.
|
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.
|
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.
|
protected |
Definition at line 35 of file ota_esphome_noise.cpp.
|
protected |
Best-effort explicit reject frame so the client can log a readable reason.
Definition at line 209 of file ota_esphome_noise.cpp.
|
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.
|
protected |
Non-blocking read of one handshake frame into the session buffer.
Definition at line 170 of file ota_esphome_noise.cpp.
|
protected |
Non-blocking write of the pending session-buffer frame.
Definition at line 196 of file ota_esphome_noise.cpp.
|
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.
|
inlineprotected |
Definition at line 882 of file ota_esphome.cpp.
|
protected |
Definition at line 708 of file ota_esphome.cpp.
|
protected |
Definition at line 898 of file ota_esphome.cpp.
|
protected |
Definition at line 1007 of file ota_esphome.cpp.
|
protected |
Definition at line 956 of file ota_esphome.cpp.
|
inlineprotected |
Definition at line 263 of file ota_esphome.h.
|
protected |
Definition at line 820 of file ota_esphome.cpp.
|
inline |
Definition at line 62 of file ota_esphome.h.
|
inline |
Definition at line 58 of file ota_esphome.h.
|
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.
|
inline |
Manually set the port OTA should listen on.
Definition at line 75 of file ota_esphome.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 69 of file ota_esphome.cpp.
|
inlineprotected |
Definition at line 251 of file ota_esphome.h.
|
inlineprotected |
Definition at line 143 of file ota_esphome.h.
|
protected |
Definition at line 854 of file ota_esphome.cpp.
|
protected |
Definition at line 868 of file ota_esphome.cpp.
|
protected |
Definition at line 360 of file ota_esphome_udp.cpp.
|
staticprotected |
Definition at line 142 of file ota_esphome_udp.cpp.
|
protected |
Definition at line 216 of file ota_esphome_udp.cpp.
|
inlineprotected |
Definition at line 137 of file ota_esphome.h.
|
protected |
|
protected |
Definition at line 306 of file ota_esphome_udp.cpp.
|
staticprotected |
Definition at line 174 of file ota_esphome_udp.cpp.
|
protected |
Definition at line 348 of file ota_esphome_udp.cpp.
|
staticprotected |
Definition at line 105 of file ota_esphome_udp.cpp.
|
protected |
Definition at line 267 of file ota_esphome_udp.cpp.
|
inlineprotected |
Definition at line 248 of file ota_esphome.h.
|
protected |
Definition at line 890 of file ota_esphome.cpp.
|
protected |
Definition at line 742 of file ota_esphome.cpp.
|
protected |
Definition at line 999 of file ota_esphome.cpp.
| union { ... } esphome::ESPHomeOTAComponent |
|
staticconstexprprotected |
Definition at line 228 of file ota_esphome.h.
|
protected |
Definition at line 272 of file ota_esphome.h.
|
protected |
Definition at line 356 of file ota_esphome.h.
|
protected |
Definition at line 357 of file ota_esphome.h.
|
protected |
Definition at line 285 of file ota_esphome.h.
|
protected |
Definition at line 284 of file ota_esphome.h.
| uint32_t esphome::ESPHomeOTAComponent::client_connect_time_ {0} |
Definition at line 289 of file ota_esphome.h.
|
protected |
Definition at line 350 of file ota_esphome.h.
|
protected |
Definition at line 352 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 302 of file ota_esphome.h.
|
protected |
Definition at line 339 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 342 of file ota_esphome.h.
|
protected |
Definition at line 280 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 310 of file ota_esphome.h.
|
protected |
Definition at line 275 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 189 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 306 of file ota_esphome.h.
|
protected |
Definition at line 353 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 316 of file ota_esphome.h.
|
protected |
Definition at line 351 of file ota_esphome.h.
|
protected |
Definition at line 271 of file ota_esphome.h.
|
protected |
Definition at line 349 of file ota_esphome.h.
|
protected |
Definition at line 354 of file ota_esphome.h.
|
protected |
Definition at line 346 of file ota_esphome.h.
|
protected |
Definition at line 347 of file ota_esphome.h.
|
protected |
Definition at line 278 of file ota_esphome.h.
|
protected |
Definition at line 283 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 151 of file ota_esphome.h.
| UdpLink * esphome::ESPHomeOTAComponent::udp_ {nullptr} |
Definition at line 290 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 90 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 92 of file ota_esphome.h.