Commit Graph

22724 Commits

Author SHA1 Message Date
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
J. Nick Koston
8e83c141a9 Merge branch 'constexpr-nfc' into integration 2026-02-18 21:02:19 -06:00
J. Nick Koston
48502d22e6 Merge branch 'constexpr-pn71xx' into integration 2026-02-18 21:02:14 -06:00
J. Nick Koston
7e118178b3 [web_server] Fix water_heater JSON key names and move traits to DETAIL_ALL (#14064) 2026-02-18 21:00:24 -06:00
J. Nick Koston
66d2ac8cb9 [web_server] Move climate static traits to DETAIL_ALL only (#14066) 2026-02-18 21:00:09 -06:00
J. Nick Koston
70b77754c5 [pn7160] Use constexpr for compile-time constants
pn7160.h and pn7150.h are each included by 3 translation units,
so static const causes duplicate copies in each TU's literal pool.
constexpr allows the compiler to use immediate values instead.
2026-02-18 20:59:31 -06:00
J. Nick Koston
e4c233b6ce [mqtt] Use constexpr for compile-time constants (#14075) 2026-02-18 20:59:31 -06:00
J. Nick Koston
c855e20434 [nfc] Use constexpr for compile-time constants
These headers are included by multiple translation units, so
static const causes duplicate copies in each TU's literal pool.
constexpr allows the compiler to use immediate values instead.
2026-02-18 20:58:19 -06:00
J. Nick Koston
be853afc24 [core] Conditionally compile setup_priority override infrastructure (#14057) 2026-02-18 20:57:56 -06:00
J. Nick Koston
683f5783dd Merge branch 'constexpr-remote-base' into integration 2026-02-18 20:56:11 -06:00
J. Nick Koston
e756ae1f0c Merge branch 'constexpr-mqtt' into integration 2026-02-18 20:56:06 -06:00
J. Nick Koston
ac0d163b0e Merge branch 'constexpr-packet-transport' into integration 2026-02-18 20:55:55 -06:00
J. Nick Koston
6bb4f24e6f Merge branch 'constexpr-ble' into integration 2026-02-18 20:55:50 -06:00
J. Nick Koston
52e6633e6e Merge branch 'constexpr-api' into integration 2026-02-18 20:55:43 -06:00