Commit Graph
24422 Commits
Author SHA1 Message Date
J. Nick Koston 2e50651400 [hlk_fm22x] Replace per-cycle vector allocation with member buffer
Replace std::vector<uint8_t> in recv_command_() with a member
std::array<uint8_t, 36> buffer to eliminate heap allocation on
every polling cycle. Also use pointer+length instead of vector
references in handle_note_/handle_reply_, and use TextSensor's
publish_state(const char*, size_t) overload to avoid temporary
std::string construction for version and face name publishing.
2026-02-08 02:17:22 -06:00
J. Nick Koston bfee24421a Merge branch 'voice-assistant-timer-vector' into integration 2026-02-08 02:07:34 -06:00
J. Nick Koston 86fee6e4af [voice_assistant] Replace timer unordered_map with vector to eliminate per-tick heap allocation 2026-02-08 02:02:55 -06:00
J. Nick Koston 48ea97139e Merge branch 'web_server_idf_namespace' into integration 2026-02-08 01:47:01 -06:00
J. Nick Koston 67fbd31e46 [web_server_idf] Use C++17 nested namespace style 2026-02-08 01:45:22 -06:00
schrob 7b40e8afcb [epaper_spi] Declare leaf classes final (#13776) 2026-02-07 19:21:37 -06:00
J. Nick Koston d73384ae46 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 19:07:15 -06:00
J. Nick Koston 456e0f2679 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:37:32 -06:00
J. Nick Koston 852efb06a8 Merge remote-tracking branch 'origin/libretiny_1120' into integration 2026-02-07 18:33:46 -06:00
J. Nick Koston 1b1efc5d49 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:28:28 -06:00
J. Nick Koston 67bfbee567 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:23:59 -06:00
J. Nick Koston 3deea03ff5 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:19:08 -06:00
J. Nick Koston c139aff8d9 Merge remote-tracking branch 'upstream/libretiny_1120' into integration 2026-02-07 18:05:38 -06:00
J. Nick Koston 98f900183d update boards as well 2026-02-07 18:04:41 -06:00
J. Nick Koston 059087ed21 [libretiny] Update LibreTiny to v1.12.0 2026-02-07 18:01:52 -06:00
J. Nick Koston d3778af3e8 [libretiny] Update LibreTiny to v1.12.0 2026-02-07 18:01:19 -06:00
J. Nick Koston 663151821f Merge branch 'cswitch_sdk' into integration 2026-02-07 18:00:55 -06:00
J. Nick Koston 8c4a732eb7 copilot edge cases 2026-02-07 18:00:30 -06:00
J. Nick Koston 2d0b1db3dd Merge branch 'cswitch_sdk' into integration 2026-02-07 17:53:31 -06:00
J. Nick Koston 4e3ccb4fc5 [analyze-memory] Attribute CSWTCH symbols from SDK archives 2026-02-07 17:52:20 -06:00
J. Nick Koston 66ab62b3fb Merge branch 'deprecate_set_retry' into integration 2026-02-07 17:26:28 -06:00
J. Nick Koston 2a6e20dd32 [core] Deprecate set_retry, cancel_retry, and RetryResult
set_retry does a std::make_shared<RetryArgs>() heap allocation on every
invocation. No core component needs this pattern - all callers have been
migrated to set_timeout or set_interval in prior PRs. The feature wastes
flash and RAM on every firmware for a pattern that set_interval covers
better, and the hidden heap allocation is a footgun for component authors.

Deprecated in 2026.2.0, removal in 2026.8.0.

Depends on:
- #13841 [lps22] Replace set_retry with set_interval
- #13842 [ms8607] Replace set_retry with set_timeout chain
- #13843 [speaker] Replace set_retry with set_interval
- #13844 [esp32_hosted] Replace set_retry with set_interval
2026-02-07 17:25:59 -06:00
J. Nick Koston 7516e418f2 Merge branch 'ms8607_remove_set_retry' into integration 2026-02-07 17:23:25 -06:00
J. Nick Koston 3864f06a15 Merge branch 'esp32_hosted_remove_set_retry' into integration 2026-02-07 17:23:21 -06:00
J. Nick Koston 98dcea6e7d Merge branch 'speaker_media_player_remove_set_retry' into integration 2026-02-07 17:23:15 -06:00
J. Nick Koston 9ee51b06fa Merge branch 'deprecate_set_retry' into integration 2026-02-07 17:23:12 -06:00
J. Nick Koston 4efca40457 Merge branch 'lps22_remove_set_retry' into integration 2026-02-07 17:23:06 -06:00
J. Nick Koston a43e3e5948 [dashboard] Close WebSocket after process exit to prevent zombie connections (#13834) 2026-02-07 15:19:20 -06:00
J. Nick Koston f64f71b9ac Merge remote-tracking branch 'upstream/dev' into integration 2026-02-07 15:13:45 -06:00
J. Nick Koston 60298f67b8 [ms8607] Replace set_retry with set_timeout chain to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with a try_reset_() method that chains
set_timeout calls with manual backoff, preserving the same timing
(immediate, +5ms, +25ms).
2026-02-07 14:53:18 -06:00
J. Nick Koston 4d2354da2e [esp32_hosted] Replace set_retry with set_interval to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with set_interval + countdown counter which
avoids this entirely. The original code used fixed-interval polling
(no backoff), making set_interval a direct fit.
2026-02-07 14:51:45 -06:00
J. Nick Koston 6a3da67a1e [speaker] Replace set_retry with set_interval to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with set_interval + countdown counter which
avoids this entirely. All 3 call sites used fixed-interval polling
(no backoff), making set_interval a direct fit.
2026-02-07 14:48:34 -06:00
J. Nick Koston 6ebafa8a9e [core] Deprecate set_retry, cancel_retry, and RetryResult
set_retry does a std::make_shared<RetryArgs>() heap allocation on every
invocation. No core component needs this pattern - all callers have been
migrated to set_timeout or set_interval in prior PRs. The feature wastes
flash and RAM on every firmware for a pattern that set_interval covers
better, and the hidden heap allocation is a footgun for component authors.

Deprecated in 2026.2.0, removal in 2026.8.0.

Depends on:
- #13841 [lps22] Replace set_retry with set_interval
- #13842 [ms8607] Replace set_retry with set_timeout chain
- #13843 [speaker] Replace set_retry with set_interval
- #13844 [esp32_hosted] Replace set_retry with set_interval
2026-02-07 14:44:09 -06:00
J. Nick Koston 3ba7e48615 [lps22] Replace set_retry with set_interval to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with set_interval + countdown counter which
avoids this entirely.
2026-02-07 14:27:10 -06:00
schrob 9de91539e6 [epaper_spi] Add Waveshare 1.54-G (#13758) 2026-02-08 06:24:57 +11:00
J. Nick Koston 51b0661d9d Merge branch 'scheduler-inplace-cleanup' into integration 2026-02-07 19:56:42 +01:00
J. Nick Koston 3c85ff4744 try to avoid bloat 2026-02-07 19:56:20 +01:00
J. Nick Koston 6a383a62b8 Merge branch 'scheduler-inplace-cleanup' into integration 2026-02-07 19:52:42 +01:00
tronikos 9bc93415d8 fix 2026-02-07 03:07:09 -08:00
tronikos 02d3202026 add deprecated functions 2026-02-07 02:08:28 -08:00
tronikos 1aa4891c83 fix 2026-02-07 01:44:43 -08:00
tronikos 52af92d4b5 Add On/Off and Away mode support to template platform
Implemented support for On/Off and Away modes in the template water heater
platform, including optimistic control and lambda-based state reporting.

Refactored the base 'WaterHeaterCall' to replace the 'state_' bitmask with
'optional<bool>' for 'on' and 'away' fields. This change was necessary to
enable partial (delta) updates. The previous bitmask implementation did not
distinguish between a field being "set to false" and "not set at all,"
causing unintended state resets (e.g., turning the device off when only
adjusting temperature).
2026-02-07 01:35:37 -08:00
J. Nick Koston 0fa7050b1c remove temp test 2026-02-07 10:01:57 +01:00
J. Nick Koston fa1554cac0 [scheduler] Eliminate heap allocation in full_cleanup_removed_items_
Replace the temporary std::vector copy with in-place compaction using a
read/write pointer pattern. This avoids a heap allocation+deallocation
cycle during scheduler cleanup, reducing heap fragmentation on
long-running ESP devices.

The new approach compacts valid items forward in the existing vector,
recycles removed items as they are encountered, then resizes the vector
(no reallocation since size only shrinks). Same O(n) complexity, same
behavior, zero allocations.
2026-02-07 09:54:43 +01:00
J. Nick Koston 14071086bb Merge branch 'logger_thread_name_cleanup' into integration 2026-02-07 09:02:06 +01:00
J. Nick Koston 30f9bfaf83 [logger] Resolve thread name once and pass through logging chain
Eliminate redundant xTaskGetCurrentTaskHandle() and pcTaskGetName()
calls on the hot path by resolving the thread name once in log_vprintf_
and passing it through as const char* to all downstream functions.

- Main task fast path passes nullptr (no task handle lookup needed)
- Non-main thread path resolves name once, passes to both ring buffer
  and emergency console fallback
- Unify log_vprintf_non_main_thread_ to single signature across platforms
- Change send_message_thread_safe() on all platforms from TaskHandle_t
  to const char* thread_name
- Add TaskHandle_t overload for get_thread_name_ as primary on
  ESP32/LibreTiny, with no-arg convenience wrapper
- Use std::span<char> for Host/Zephyr get_thread_name_ buffer parameter
- Document Zephyr single-task path thread safety limitation
2026-02-07 07:47:00 +01:00
J. Nick Koston daebc2cc39 Merge branch 'dashboard-ws-close-on-exit' into integration 2026-02-07 06:15:23 +01:00
J. Nick Koston 6b089a611c [dashboard] Close WebSocket after process exit to prevent zombie connections
When a subprocess exited, _proc_on_exit sent the exit event but never
closed the server-side WebSocket. This left zombie connections open
until the client eventually disconnected.
2026-02-07 06:14:44 +01:00
J. Nick Koston 836bfc625d restore original byte-at-a-time read in send_cmd_from_array ack loop
The ack polling loop has a tight timing requirement with
delay_microseconds_safe(1450) between iterations. Snapshotting
available() once could leave partial ack response bytes unread
until after the delay, potentially breaking cold boot timing
on some ld2420 units. Keep batch reads only in loop().
2026-02-07 01:01:03 +01:00
J. Nick Koston 2a17592d57 dfplayer: batch UART reads to reduce per-loop overhead 2026-02-07 00:38:54 +01:00