Commit Graph

22737 Commits

Author SHA1 Message Date
J. Nick Koston
d64b896e7c Merge remote-tracking branch 'upstream/dev' into integration 2026-02-19 09:29:07 -06:00
J. Nick Koston
916cf0d8b7 [e131] Replace std::map with std::vector for universe tracking (#14087) 2026-02-19 09:28:00 -06:00
J. Nick Koston
0484b2852d [e131] Fix E1.31 on ESP8266 and RP2040 by restoring WiFiUDP support (#14086) 2026-02-19 09:27:05 -06:00
J. Nick Koston
41cfe2f9ad Merge remote-tracking branch 'upstream/dev' into integration 2026-02-19 09:17:46 -06:00
J. Nick Koston
b5a8e1c94c [ci] Update lint message to recommend constexpr over static const (#14099) 2026-02-19 09:06:46 -06:00
J. Nick Koston
8728c5c4ca Merge remote-tracking branch 'origin/optimize-warn-blocking-guard' into integration 2026-02-19 09:05:00 -06:00
J. Nick Koston
a7ca97c279 Merge branch 'dev' into optimize-warn-blocking-guard
Resolve conflict in component.cpp: keep destructor removed (moved
to header as = default) and keep #ifdef USE_SETUP_PRIORITY_OVERRIDE
guard from dev.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 08:57:13 -06:00
dependabot[bot]
01a46f665f Bump esptool from 5.1.0 to 5.2.0 (#14058)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-19 09:42:22 -05:00
J. Nick Koston
535980b9bd [cse7761] Use constexpr for compile-time constants (#14081) 2026-02-19 08:40:41 -06:00
J. Nick Koston
b0085e21f7 [core] Devirtualize call_loop() and mark_failed() in Component (#14083) 2026-02-19 08:40:23 -06:00
J. Nick Koston
6daca09794 [logger] Replace LogListener virtual interface with LogCallback struct (#14084) 2026-02-19 08:40:08 -06:00
J. Nick Koston
7b53a98950 [socket] Log error when UDP socket requested on LWIP TCP-only platforms (#14089) 2026-02-19 08:39:44 -06:00
Rodrigo Martín
4cc1e6a910 [esp32_ble_server] add test for lambda characteristic (#14091) 2026-02-19 09:23:22 -05:00
J. Nick Koston
5213aed846 Merge remote-tracking branch 'origin/e131-replace-map-with-vector' into integration 2026-02-19 00:43:03 -06:00
J. Nick Koston
fe2af3793f Merge branch 'fix-e131-esp8266-udp' into integration 2026-02-19 00:42:55 -06:00
J. Nick Koston
cc56194758 Merge remote-tracking branch 'origin/log-unsupported-udp-socket' into integration 2026-02-19 00:42:48 -06:00
J. Nick Koston
d1d3d256a9 [socket] Log error when UDP socket requested on LWIP TCP-only platforms
The LWIP raw socket factory only supports TCP but silently ignored the
type parameter, returning a TCP socket for SOCK_DGRAM requests. This
caused components expecting UDP to fail silently with no indication of
why. Return nullptr with EPROTOTYPE and log an error instead.
2026-02-19 00:37:23 -06:00
J. Nick Koston
76fda4d4a2 [e131] Use uint16_t for consumer refcount
Struct pads to 4 bytes either way due to alignment, so this is free.
2026-02-19 00:34:20 -06:00
J. Nick Koston
1373f6866a [e131] Fix IGMP rejoin after effect stop/start cycle
When leave_() decremented consumers to 0 without removing the entry,
a subsequent join_() would find it, increment 0->1, and return early
without rejoining the IGMP multicast group. Now join_() only skips
the IGMP rejoin when consumers was already > 0.
2026-02-19 00:33:06 -06:00
J. Nick Koston
4bf13a8143 [e131] Replace std::map with std::vector for universe tracking
Replace std::map<int, int> with std::vector<UniverseConsumer> for
tracking universe reference counts. This eliminates red-black tree
overhead for what is typically 1-10 entries.

Co-Authored-By: J. Nick Koston <nick@koston.org>
2026-02-19 00:11:14 -06:00
J. Nick Koston
fe57153938 [e131] Fix E1.31 on ESP8266 and RP2040 by restoring WiFiUDP support
The socket abstraction layer on ESP8266/RP2040 (USE_SOCKET_IMPL_LWIP_TCP)
only supports TCP. When E1.31 was migrated from WiFiUDP to sockets, it
silently broke on these platforms since SOCK_DGRAM requests get TCP sockets
that never receive UDP data.

Restore WiFiUDP as the transport on LWIP_TCP platforms while keeping the
socket-based implementation on BSD/LWIP socket platforms (ESP32, etc.).
This follows the same dual-path pattern used by the udp and wake_on_lan
components.
2026-02-19 00:02:17 -06:00
J. Nick Koston
bf30cd9a7f Merge remote-tracking branch 'origin/devirtualize-call-loop-mark-failed' into integration 2026-02-18 23:09:21 -06:00
J. Nick Koston
82e58f75c1 Merge branch 'devirtualize-call-loop-mark-failed' into integration 2026-02-18 23:08:50 -06:00
J. Nick Koston
21659f61e2 Merge branch 'loglistener-to-logcallback' into integration 2026-02-18 23:08:39 -06:00
J. Nick Koston
168081c0f0 Rename call_loop() to call_loop_() for naming convention
Non-virtual protected methods require trailing underscore
per clang-tidy readability-identifier-naming.
2026-02-18 22:47:27 -06:00
J. Nick Koston
e9fee86c9d [logger] Replace LogListener virtual interface with LogCallback struct
Replace the LogListener abstract class (single pure virtual method) with
a lightweight LogCallback struct containing a function pointer + instance
pointer. This eliminates a vtable sub-table and thunk from every class
that previously inherited LogListener.

Savings per former LogListener implementer:
- 12 bytes vtable (sub-table header + thunk slot)
- 4 bytes vtable (on_log in primary table)
- ~23 bytes thunk code
- ~39 bytes total per class

Affected classes: APIServer, WebServer, MQTTClientComponent, Syslog,
BLENUS, LoggerMessageTrigger (6 classes, ~234 bytes total).

The non-capturing lambdas used at registration sites decay to plain
function pointers at compile time -- zero closure/std::function overhead.
2026-02-18 22:42:59 -06:00
J. Nick Koston
db8618e5fe Remove dead call_loop override check from has_overridden_loop()
Since call_loop() is no longer virtual, the pointer-to-member
comparison can never detect an override. Remove the dead code.
2026-02-18 22:41:17 -06:00
J. Nick Koston
37d196643c [core] Devirtualize call_loop() and mark_failed() in Component
Neither method is overridden anywhere in the codebase.
Removing virtual eliminates one vtable slot per method
from every Component-derived class (~100+ vtables),
saving ~800+ bytes of flash globally.
2026-02-18 22:33:08 -06:00
J. Nick Koston
280f135ac7 Merge remote-tracking branch 'origin/dev' into integration 2026-02-18 22:07:36 -06:00
Marc Hörsken
4d05e4d576 [esp32_camera] Add support for sensors without JPEG support (#9496)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-02-18 21:52:38 -06:00
Kevin Ahrendt
eefad194d0 [audio, speaker] Add support for decoding Ogg Opus files (#13967) 2026-02-18 21:51:33 -06:00
Kevin Ahrendt
ba7134ee3f [mdns] add Sendspin advertisement support (#14013)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-18 21:51:16 -06:00
Kevin Ahrendt
264c8faedd [media_player] Add more commands to support Sendspin (#12258)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2026-02-18 21:51:01 -06:00
Kevin Ahrendt
3c227eeca4 [audio] Add support for sinking via an arbitrary callback (#14035) 2026-02-18 21:50:39 -06:00
J. Nick Koston
c8598fe620 [bluetooth_proxy] Use constexpr for remaining compile-time constants (#14080) 2026-02-18 21:34:25 -06:00
J. Nick Koston
2f9b76f129 [pn7160] Use constexpr for compile-time constants (#14078) 2026-02-18 21:33:39 -06:00
J. Nick Koston
9a8b00a428 [nfc] Use constexpr for compile-time constants (#14077) 2026-02-18 21:33:23 -06:00
J. Nick Koston
eaf0d03a37 [ld2420] Use constexpr for compile-time constants (#14079) 2026-02-18 21:32:37 -06:00
J. Nick Koston
e7f2021864 [http_request] Replace std::map with std::vector in action template (#14026) 2026-02-18 21:32:24 -06:00
J. Nick Koston
dff9780d3a [core] Use constexpr for compile-time constants (#14071) 2026-02-19 03:19:48 +00:00
J. Nick Koston
20239d1bb3 [remote_base] Use constexpr for compile-time constants (#14076) 2026-02-19 03:16:09 +00:00
J. Nick Koston
d3fc9ec1ec Merge branch 'constexpr-cse7761' into integration 2026-02-18 21:13:42 -06:00
J. Nick Koston
5cb0267d4d [cse7761] Use constexpr for compile-time constants 2026-02-18 21:13:19 -06:00
J. Nick Koston
ee7d63f73a [packet_transport] Use constexpr for compile-time constants (#14074) 2026-02-18 21:09:49 -06:00
J. Nick Koston
ecdbe18cf6 Merge branch 'constexpr-ble-followup' into integration 2026-02-18 21:08:46 -06:00
J. Nick Koston
a8cf54face [bluetooth_proxy] Use constexpr for remaining compile-time constants
Followup to #14073 addressing review feedback.
2026-02-18 21:08:08 -06:00
J. Nick Koston
76c151c6e6 [api] Use constexpr for compile-time constant (#14072) 2026-02-18 21:07:38 -06:00
J. Nick Koston
9c9365c146 [bluetooth_proxy][esp32_ble_client][esp32_ble_server] Use constexpr for compile-time constants (#14073) 2026-02-18 21:07:06 -06:00
J. Nick Koston
8f9581c5ce Merge branch 'constexpr-ld2420' into integration 2026-02-18 21:05:35 -06:00
J. Nick Koston
115d700e5c [ld2420] Use constexpr for compile-time constants 2026-02-18 21:03:36 -06:00