J. Nick Koston and J. Nick Koston
f54756ae2d
[socket] Address review comments: doc comments and (void) flags
...
- Document port_host byte order convention in lwip_ip_to_sockaddr
- Note intentional method hiding in LWIPRawUDPRecvImpl
- Note recvfrom truncation differs from POSIX MSG_TRUNC
- Add (void) flags in sendto to clarify flags are ignored
Co-Authored-By: J. Nick Koston <nick@koston.org >
2026-03-10 01:12:15 -10:00
J. Nick Koston
49ba08cec9
[socket] Add lwip raw UDP socket implementation
...
Add native UDP support to the lwip raw TCP socket layer used by
ESP8266 and RP2040, eliminating the need for Arduino WiFiUDP fallback.
Two new classes:
- LWIPRawUDPImpl: send-only UDP (8 bytes overhead)
- LWIPRawUDPRecvImpl: send+recv with fixed-size ring buffer (no heap
allocation in recv callback)
Factory functions: socket_udp(), socket_udp_recv(), socket_ip_udp(),
socket_ip_udp_recv() with UDPSocket/UDPRecvSocket type aliases.
Additive only — no consumer migration in this PR.
2026-03-10 01:12:15 -10:00
J. Nick Koston
81d12fd14a
[socket] Hold lwip lock for entire write() operation
...
Same pattern as writev — write() calls internal_write_() then
internal_output_(), each acquiring the lock separately. Hold
the lock at the outer scope so inner calls just bump the
recursion counter.
2026-03-10 00:57:36 -10:00
J. Nick Koston
cc05bf3ed2
[socket] Add LWIP_LOCK to socket factory functions
...
tcp_new() is an lwip core API call that must be bracketed with
the lwip lock on RP2040 per pico-sdk docs. Add LWIP_LOCK() to
socket() and socket_listen() factory functions.
2026-03-10 00:55:34 -10:00
J. Nick Koston
c182c0c74f
[socket] Hold lwip lock for entire readv/writev scatter-gather operation
...
Avoid repeated lock acquire/release cycles per iovec element.
The recursive mutex re-entry in inner calls is nearly free (counter
bump), while the outer lock prevents the expensive IRQ disable/enable
on each iteration.
2026-03-10 00:53:01 -10:00
J. Nick Koston
a88e9b8146
[socket] Fix RP2040 TCP race condition between lwip callbacks and main loop
...
On RP2040 (Pico W), arduino-pico sets PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1,
which means lwip callbacks (recv_fn, accept_fn, err_fn) run from a PendSV
interrupt — not the main loop. This allows them to preempt read(), write(),
close(), and accept() at any point, causing race conditions on shared state
like the rx_buf_ pbuf chain.
The most critical race: recv_fn calls pbuf_cat(rx_buf_, pb) while read() is
freeing nodes in the same chain, leading to use-after-free and lwip's
"Creating an infinite loop" assertion panic. This is the root cause of #10681 .
Fix: implement RP2040's LwIPLock (previously a no-op) to call
cyw43_arch_lwip_begin/end, which acquires the pico-sdk async_context recursive
mutex. Add LWIP_LOCK() guards to all main-loop lwip API call sites in the
socket layer.
On ESP8266, lwip callbacks run cooperatively from the main loop, so
LwIPLock remains a no-op.
Closes #10681
2026-03-10 00:34:20 -10:00
J. Nick Koston
4b50d14496
[serial_proxy] Reduce loop() overhead by disabling when idle and splitting read path ( #14673 )
2026-03-10 02:10:03 -05:00
e82f0f4432
[cpptests] support testing platform components ( #13075 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-10 02:41:02 +00:00
00f809f5f0
[sen6x] fix memory leak issue ( #14623 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-09 21:45:20 -04:00
c31ac662bd
[multiple] Fix crashes from malformed external input ( #14643 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-03-09 20:39:58 -04:00
J. Nick Koston
d6ce5dda81
[ci] Skip YAML anchor keys in integration fixture component extraction ( #14670 )
2026-03-09 22:54:56 +00:00
J. Nick Koston
dadbdd0f7b
[ci] Make codeowner label update non-fatal for fork PRs ( #14668 )
2026-03-09 12:34:31 -10:00
d96be88ff5
[multiple] Fix reliability issues in 5 components ( #14655 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-09 18:32:57 -04:00
Jonathan Swoboda and Claude Opus 4.6
d2686b49be
[canbus] Fix multiple MCP component bugs ( #14461 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 18:15:33 -04:00
Keith Burzinski
468ce74c8e
[api][serial_proxy] Fix dangling pointer ( #14640 )
2026-03-09 17:04:47 -05:00
Jonathan Swoboda and Claude Opus 4.6
b3fc43c13c
[multiple] Fix wrong behavior in sensor calculations and drivers ( #14644 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 18:00:17 -04:00
Jonathan Swoboda and Claude Opus 4.6
308e8e78cd
[ble_scanner] Escape special characters in JSON output ( #14664 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:59:36 -04:00
Jonathan Swoboda and Claude Opus 4.6
470d9160a5
[demo] Fix alarm control panel auth bypass when code is omitted ( #14645 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:57:02 -04:00
Jonathan Swoboda and Claude Opus 4.6
9902447834
[multiple] Fix minor bugs in 8 components ( #14650 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:51:50 -04:00
Jonathan Swoboda and Claude Opus 4.6
7c1b9f0cb4
[multiple] Fix wrong behavior in 5 components ( #14647 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:22:06 -04:00
Jonathan Swoboda and Claude Opus 4.6
fecedeb018
[multiple] Fix crashes from malformed external input (batch 2) ( #14651 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:20:09 -04:00
Jonathan Swoboda and Claude Opus 4.6
9418f35cc3
[multiple] Remove unnecessary heap allocations in 4 components ( #14656 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:18:44 -04:00
Jonathan Swoboda and Claude Opus 4.6
08a0608a48
[wifi][captive_portal][heatpumpir][es8388] Fix wrong behavior in 4 components ( #14657 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:18:21 -04:00
Jonathan Swoboda and Claude Opus 4.6
b721cd48e5
[hmc5883l][mmc5603][honeywellabp2][xgzp68xx][max9611] Fix uninitialized members ( #14659 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:18:07 -04:00
Jonathan Swoboda and Claude Opus 4.6
75f55adbfa
[api][at581x][vl53l0x] Fix bounds check issues in 3 components ( #14660 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:17:31 -04:00
Jonathan Swoboda and Claude Opus 4.6
a379e5a635
[runtime_image][st7701s] Fix BMP decoder and LCD init bugs ( #14663 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 17:16:29 -04:00
dependabot[bot]
019db74582
Bump setuptools from 82.0.0 to 82.0.1 ( #14665 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 20:44:27 +00:00
Jonathan Swoboda and Claude Opus 4.6
31f4b4d00d
[multiple] Fix undefined behavior across components ( #14639 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 07:33:08 -04:00
0db9137d91
[multiple] Add division by zero guards ( #14634 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick+github@koston.org >
2026-03-09 00:10:48 -04:00
Clyde Stubbs
f3ca86b670
[ci-custom] Directions on constant hoisting ( #14637 )
2026-03-08 23:48:03 -04:00
J. Nick Koston and Claude Opus 4.6
088a8a4338
[ci] Match symbols with changed signatures in memory impact analysis ( #14600 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 17:23:58 -10:00
Jonathan Swoboda and Claude Opus 4.6
5d3893368d
[multiple] Add array bounds checks ( #14635 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 23:16:32 -04:00
Jonathan Swoboda and Claude Opus 4.6
5b9cab02be
[multiple] Add default initializers to uninitialized member variables ( #14636 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 22:37:54 -04:00
cac751e9e8
[nextion] Add configurable HTTP parameters for TFT upload ( #14234 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-09 01:29:41 +00:00
6ba5c9a705
[api] Skip state_action_() call in noise data path ( #14629 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 01:22:39 +00:00
J. Nick Koston
c681dc8872
[socket] Add socket wake support for RP2040 ( #14498 )
2026-03-08 15:11:24 -10:00
J. Nick Koston and Claude Opus 4.6
d0285cdc41
[core] Pack entity flags into configure_entity_() and protect setters ( #14564 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 15:11:15 -10:00
J. Nick Koston
9547a54fac
[const] Move CONF_ENABLE_FULL_PRINTF to const.py ( #14633 )
2026-03-08 14:52:40 -10:00
J. Nick Koston
b05dbfccd3
[api] Bump noise-c to 0.1.11 ( #14632 )
2026-03-08 14:52:21 -10:00
J. Nick Koston
aef2d74e41
[ld2450] Add integration tests with mock UART ( #14611 )
2026-03-08 14:32:59 -10:00
J. Nick Koston
e1c849d5d2
[esp8266] Wrap printf/vprintf/fprintf to eliminate _vfiprintf_r (~1.6 KB flash) ( #14621 )
2026-03-08 14:32:47 -10:00
J. Nick Koston
c11ad7f0e6
[rp2040] Wrap printf/vprintf/fprintf to eliminate _vfprintf_r (~9.2 KB flash) ( #14622 )
2026-03-08 14:32:35 -10:00
J. Nick Koston and Clyde Stubbs
88536ff72b
[modbus] Fix timeout for non-hardware UARTs (e.g., USB UART) ( #14614 )
...
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com >
2026-03-08 14:31:42 -10:00
J. Nick Koston
93d7ec4d72
[esp32_ble] Inline ble_addr_to_uint64 to eliminate call overhead ( #14591 )
2026-03-08 14:07:59 -10:00
J. Nick Koston
66a5ad0d75
[core] Skip zero-initialization of StaticVector data array ( #14592 )
2026-03-08 14:06:55 -10:00
J. Nick Koston
771404668d
[api] Inline fast path of try_to_clear_buffer ( #14630 )
2026-03-08 14:01:01 -10:00
J. Nick Koston
76c567a71c
[scheduler] Use std::atomic<uint8_t> instead of std::atomic<bool> for remove flag ( #14626 )
2026-03-08 14:00:04 -10:00
J. Nick Koston
e7730cff00
[esp32_ble] Optimize BLE event hot path performance ( #14627 )
2026-03-08 13:59:40 -10:00
d5dc4a39cb
[i2s_audio] Fix mono sample swap and block 8-bit mono on ESP32 ( #14516 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-08 12:10:43 -10:00
Keith Burzinski
50b3f9d25c
[mixer_speaker] Add task debounce ( #14581 )
2026-03-08 18:09:06 -04:00