Commit Graph
13250 Commits
Author SHA1 Message Date
Big Mike bb05cfb711 [sensirion_common] Move sen5x's sensirion_convert_to_string_in_place() function to sensirion_common (#14269) 2026-02-25 07:34:58 -05:00
J. Nick Koston b134c4679c [light] Replace std::lerp with lightweight lerp_fast in LightColorValues::lerp (#14238) 2026-02-24 22:33:57 -06:00
Jonathan SwobodaandCopilot 2e705a919f [pid] Fix deadband threshold conversion for Fahrenheit (#14268)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-24 23:26:00 -05:00
J. Nick Koston 1dac501b04 [light] Add additional light effect test cases (#14266) 2026-02-24 21:39:51 -06:00
Jesse Hills 905e81330e Don't get stuck forever on a failed component can_proceed (#14267) 2026-02-25 03:28:19 +00:00
J. Nick KostonandClaude Opus 4.6 3460a8c922 [dlms_meter/kamstrup_kmp] Replace powf with pow10_int (#14125)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 13:44:50 +13:00
J. Nick Kostonandpre-commit-ci-lite[bot] 2ff876c629 [core] Use custom deleter for SchedulerItem unique_ptr to prevent destructor inlining (#14258)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-25 13:18:44 +13:00
J. Nick Koston 08dc487b5b [core] Pass std::function by rvalue reference in scheduler (#14260) 2026-02-25 13:08:07 +13:00
J. Nick Koston 4dc6b12ec5 [api] Pass std::function by rvalue reference in state subscriptions (#14261) 2026-02-25 12:56:43 +13:00
J. Nick Koston cca4777f64 [web_server_idf] Pass std::function by rvalue reference (#14262) 2026-02-25 12:51:01 +13:00
Andrew Rankin af00d601be [esp32_ble_server] add max_clients option for multi-client support (#14239) 2026-02-25 08:19:13 +11:00
Jonathan SwobodaandCopilot fe3c2ba555 [http_request.ota] Percent-encode credentials in URL (#14257)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-24 14:15:22 -05:00
J. Nick Koston 6554ad7c7e [core] Prevent inlining of mark_matching_items_removed_locked_ on Thumb-1 (#14256) 2026-02-24 12:08:51 -06:00
J. Nick Koston 2e6d10474e Add socket build tests for LibreTiny platforms
Add bk72xx-ard, rtl87xx-ard, and ln882x-ard YAML build tests to
verify the fast select code path compiles on all LibreTiny platforms.
2026-02-24 10:29:49 -06:00
J. Nick Koston d812683df1 Use platform build flags in lwip_fast_select.c guard
USE_ESP32 and USE_LIBRETINY are compiler flags (-D) always available
to .c files. USE_LWIP_FAST_SELECT is in the generated defines.h which
may not be force-included for .c files on all build systems. Use
platform flags directly in the .c file; .cpp/.h files continue using
USE_LWIP_FAST_SELECT from the generated defines.
2026-02-24 09:49:07 -06:00
J. Nick Koston 3f74726f00 [core] Extend fast select optimization to LibreTiny platforms
Extend the ESP32 lwip_select() replacement (direct rcvevent reads +
FreeRTOS task notifications) to all LibreTiny platforms (bk72xx,
rtl87xx, ln882h).

All LibreTiny platforms have LwIP >= 2.1.3 with
lwip_socket_dbg_get_socket() and FreeRTOS task notifications. The
thread safety argument is actually stronger on LibreTiny since all
platforms are single-core ARM Cortex-M, eliminating cross-core
memory ordering concerns entirely.

Introduces USE_LWIP_FAST_SELECT feature define (set from Python
codegen for ESP32 and LibreTiny) replacing per-platform USE_ESP32
guards. The only platform-specific difference is FreeRTOS header
paths (freertos/FreeRTOS.h on ESP-IDF vs FreeRTOS.h on LibreTiny).

Expected impact on LibreTiny (same as ESP32):
- ~17x faster socket polling (direct rcvevent vs lwip_select)
- ~3.5 KB flash savings (dead code elimination of lwip_select)
- ~56 bytes static RAM savings (fd_set members excluded)
- ~200-300 bytes heap savings (UDP wake socket eliminated)
2026-02-24 09:39:38 -06:00
J. Nick Koston fc5b94df6c pressure test 2026-02-24 08:48:50 -06:00
J. Nick Koston 73092d14a5 tweak comments 2026-02-24 08:44:31 -06:00
J. Nick Koston 36eb31e8ee tweak comments 2026-02-24 08:42:23 -06:00
J. Nick Koston 8d997c247e improve comments about safety 2026-02-24 08:40:02 -06:00
Clyde Stubbs 4abbed0cd4 [mipi_dsi] Allow transform disable; fix warnings (#14216) 2026-02-24 08:33:33 -05:00
H. Árkosi Róbertandpre-commit-ci-lite[bot] 72263eda85 [version] text sensor add option hide_hash to restore the pre-2026.1 behavior (#14251)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-24 07:31:58 -06:00
Jonathan SwobodaandCopilot abf7074518 [esp32] Improve ESP32-P4 engineering sample warning message (#14252)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-24 08:27:48 -05:00
J. Nick Koston 07014b09ae Revert "Add fast_select diagnostic counters logged every 10000 loops"
This reverts commit 29ffeeeb19.
2026-02-23 22:22:26 -06:00
J. Nick Koston 29ffeeeb19 Add fast_select diagnostic counters logged every 10000 loops 2026-02-23 22:21:07 -06:00
J. Nick Koston d1dffafc86 Clarify rcvevent reads are main-loop-only due to socket ownership 2026-02-23 22:14:15 -06:00
J. Nick Koston 44462d8453 Document Socket::ready() as main-loop-only 2026-02-23 22:10:29 -06:00
J. Nick Koston 341395a1cd Remove unused public is_socket_ready() 2026-02-23 22:09:46 -06:00
J. Nick Koston 63a144fb43 Fix is_socket_ready comment: main loop only, not thread-safe 2026-02-23 22:07:58 -06:00
J. Nick Koston 5a378143e2 Fix LwIP source references and thread safety comments 2026-02-23 22:06:17 -06:00
J. Nick Koston 04af37e514 Note lwip_socket_dbg_get_socket wraps tryget_socket_unconn_nouse 2026-02-23 22:01:36 -06:00
J. Nick Koston cba004e2d1 Check for pending socket data before sleeping 2026-02-23 21:49:26 -06:00
J. Nick Koston 8d1cf9fd7d Add clarifying comments for review feedback 2026-02-23 21:37:19 -06:00
J. Nick Koston 1c886d43e7 Extract get_sock() helper to deduplicate lookup pattern 2026-02-23 21:33:05 -06:00
J. Nick Koston 746e760697 Remove dead NULL check on s_original_callback 2026-02-23 21:32:18 -06:00
J. Nick Koston 661f826bf1 comments 2026-02-23 21:27:03 -06:00
J. Nick Koston 6734aa1544 comments 2026-02-23 21:24:29 -06:00
J. Nick Koston c3dee3d307 comments 2026-02-23 21:21:43 -06:00
J. Nick Koston 29416061ea comments 2026-02-23 21:20:38 -06:00
J. Nick Koston 3fd24b779c comments 2026-02-23 21:17:50 -06:00
J. Nick Koston c9c73ec6e9 cleanup 2026-02-23 21:13:16 -06:00
J. Nick Koston a696ed4920 cleanup 2026-02-23 21:10:59 -06:00
J. Nick Koston 3e0cdc2404 cleanup 2026-02-23 21:10:38 -06:00
J. Nick Koston 86642ab9d7 cleanup 2026-02-23 21:04:08 -06:00
J. Nick Koston fd6d0de7a2 cleanup 2026-02-23 21:00:00 -06:00
J. Nick Koston 64364961db [core] Replace lwip_select() with direct rcvevent reads on ESP32
On ESP32, replace lwip_select() in yield_with_select_() with direct
socket event reads via lwip_socket_dbg_get_socket(), reducing poll
cost from 133us to ~7us (18.7x faster). Replace the UDP loopback
wake socket with FreeRTOS task notifications (<2us, ISR-safe).

Benchmarks (ESP32, 4 listen sockets):
- Poll path: 7,087 ns vs 132,402 ns (18.7x faster)
- Wake signal: 1,826 ns vs ~130,000 ns (72x faster, now ISR-safe)
- Binary: yield_with_select_ 108B vs 188B (43% smaller)

Non-ESP32 platforms (LibreTiny, ESP8266, RP2040) are unchanged.
2026-02-23 20:47:54 -06:00
J. Nick Koston ad2da0af52 [network] Use C++17 nested namespace syntax (#14248) 2026-02-24 02:00:21 +00:00
J. Nick Koston 7d9d90d3f8 [cse7766] Use C++17 nested namespace syntax (#14247) 2026-02-23 20:50:22 -05:00
J. Nick Koston 70e47f301d [ethernet] Use C++17 nested namespace syntax (#14246) 2026-02-23 20:50:11 -05:00
J. Nick Koston 1614eb9c9c [i2c] Use C++17 nested namespace syntax (#14245) 2026-02-23 20:50:00 -05:00