Commit Graph

117 Commits

Author SHA1 Message Date
J. Nick Koston
964e42e190 Merge remote-tracking branch 'origin/fix-esp8266-noise-handshake-deadlock' into integration 2026-02-12 17:58:16 -06:00
J. Nick Koston
375fc1db84 [api] Fix ESP8266 noise API handshake deadlock and prompt socket cleanup
Two fixes for ESP8266 with noise encryption:

1. Cache socket ready() before the handshake loop. On ESP8266 LWIP raw
   TCP, ready() returns the live state (false once rx buffer is consumed),
   unlike ESP32 where it is cached until the next main loop. Re-checking
   each iteration blocked handshake writes that must follow reads,
   deadlocking the handshake.

2. Process client removal immediately after loop() instead of deferring
   to the next server loop iteration. This closes the socket promptly
   to free LWIP PCB resources and prevent retransmit crashes on ESP8266.
2026-02-12 17:54:32 -06:00
J. Nick Koston
bf9e3213f2 [core] Flatten single-callsite vector realloc functions
On ESP8266 (GCC 10.3), std::vector::push_back/emplace_back emit
separate _M_realloc_insert functions even when called from only
one site. Adding __attribute__((flatten)) inlines the realloc
path, saving the out-of-line function overhead.

Changes:
- wifi: Move set_sta_priority from header to .cpp (eliminates
  duplicate instantiation at 2 call sites) and add flatten
- web_server_base: Flatten add_handler (single push_back site)
- api: Flatten accept_new_connections_ (single emplace_back site)

Saves 160 bytes of flash on ESP8266.
2026-02-12 16:28:57 -06:00
J. Nick Koston
0e1433329d [api] Extract cold code from APIServer::loop() hot path (#13902) 2026-02-12 11:04:23 -06:00
J. Nick Koston
2585779f11 [api] Remove duplicate peername storage to save RAM (#13540) 2026-02-11 07:23:16 +13:00
J. Nick Koston
8791c24072 [api] Avoid heap allocation for client connected/disconnected triggers (#13688) 2026-02-02 04:50:01 +01:00
J. Nick Koston
4eda9e965f [api] Fix clock conflicts when multiple clients connected to homeassistant time (#13253) 2026-01-15 16:49:01 -10:00
J. Nick Koston
9d42bfd161 [api] Fix state updates being sent to clients that did not subscribe (#13237) 2026-01-15 07:38:18 -10:00
J. Nick Koston
d5f557ad1c [scheduler] Eliminate heap allocations for std::string names and add uint32_t ID API (#13200) 2026-01-14 09:15:31 -05:00
J. Nick Koston
c8cc29a991 [api] Reduce batch RAM usage by 33% via switch dispatch (#13199) 2026-01-14 03:58:06 +00:00
Keith Burzinski
83eebdf15d [infrared] Implement experimental API/Core/component for new component/entity type (#13129)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-01-12 05:01:23 +00:00
J. Nick Koston
cd43b4114e [api] Fire on_client_disconnected trigger after removing client from list (#13088) 2026-01-08 20:36:24 -10:00
J. Nick Koston
2147ddf8c7 [api] Eliminate std::string from ClientInfo struct (#12566)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2026-01-06 21:32:23 +00:00
J. Nick Koston
fc7e55bfdc [api] Avoid heap string copies in Home Assistant state subscription callbacks (#12506) 2026-01-05 07:42:18 -10:00
J. Nick Koston
1d323c2d71 [api] Remove deprecated password authentication (#12819) 2026-01-03 07:14:48 -10:00
J. Nick Koston
167a42aa27 [api] Use StringRef in send_action_response and send_execute_service_response (#12658) 2026-01-02 14:11:45 -10:00
J. Nick Koston
4cb066bcbf [api] Use StringRef in handle_action_response to avoid temporary string (#12655) 2026-01-02 14:05:50 -10:00
Douwe
39926909af [water_heater] (1/4) Implement API/Core/component for new water_heater component (#12498)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-12-21 11:36:34 -10:00
J. Nick Koston
72c74bc0b3 [api] Store Home Assistant state subscriptions in flash instead of heap (#12008) 2025-12-09 16:26:11 +01:00
Jesse Hills
f20aaf3981 [api] Device defined action responses (#12136)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-12-06 09:47:57 -06:00
J. Nick Koston
637cb3f04a [api] Use loop-based reboot timeout check to avoid scheduler heap churn (#12291)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-04 19:14:35 -06:00
J. Nick Koston
f9ad832e7b [esp32_camera] Replace std::function callbacks with CameraListener interface (#12165)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-02 09:59:32 -06:00
J. Nick Koston
71dc402a30 [logger] Replace std::function callbacks with LogListener interface (#12153) 2025-11-28 04:00:33 +00:00
J. Nick Koston
c888becfa7 [api] Optimize APINoiseContext memory usage by removing shared_ptr overhead (#11981) 2025-11-25 06:52:15 +13:00
Flo
09f3f62194 [api] Connected Condition - state_subscription_only flag (#11906)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-11-24 11:49:16 -06:00
J. Nick Koston
7abb6d4998 [core] Implement Global Controller Registry to reduce RAM usage (#11772) 2025-11-09 17:34:08 -06:00
J. Nick Koston
531b27582a [network] Store use_address in RODATA to save RAM (#11707) 2025-11-05 10:52:10 +13:00
Jesse Hills
2c1927fd12 [api] Allow clearing noise psk if dynamically set (#11429) 2025-10-22 14:24:56 +13:00
Jesse Hills
a62c7a03dd [api] Add support for getting action responses from home-assistant (#10948)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-10-08 20:47:36 +13:00
J. Nick Koston
f2aa5a754c [api] Remove ClientInfo::get_combined_info() to eliminate heap fragmentation (#10970) 2025-10-02 12:44:30 +13:00
J. Nick Koston
6018f5f5d1 [api] Add configurable connection limits (#10939) 2025-09-30 22:24:19 +13:00
J. Nick Koston
a56d044d98 [api] Prevent API from overriding noise encryption keys set in YAML (#10927) 2025-09-28 22:42:58 -05:00
Keith Burzinski
9dd6be4061 [zwave_proxy, api] Add notification message when Z-Wave HomeID changes (#10860) 2025-09-27 17:50:18 -05:00
Jesse Hills
63326cbd6d [api] Rename HomeassistantServiceResponse to HomeassistantActionRequest (#10839)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-09-23 17:58:24 -05:00
J. Nick Koston
d0d7abb542 Implement zero-copy for strings in base API calls (#10851) 2025-09-23 16:15:28 -05:00
J. Nick Koston
05f6d01cbe [api] Add conditional compilation for Home Assistant service subscriptions (#9900) 2025-07-27 18:35:35 -10:00
J. Nick Koston
a9d6ece752 [api] Add conditional compilation for Home Assistant state subscriptions (#9898) 2025-07-26 01:28:44 -05:00
J. Nick Koston
c74f12be98 [api] Use C++17 nested namespace syntax (#9856) 2025-07-24 07:15:42 +00:00
J. Nick Koston
5b5982cfdd [api] Reduce memory usage by eliminating duplicate client info strings (#9740)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 11:34:59 +12:00
J. Nick Koston
f5afe1145e Refactor API send_message from template to non-template implementation (#9561) 2025-07-18 10:28:14 +12:00
J. Nick Koston
40935f7ae4 Skip API log message calls for unsubscribed log levels (#9514) 2025-07-16 13:43:55 +12:00
J. Nick Koston
e152690867 Optimize API component LOGCONFIG usage for flash memory savings (#9526) 2025-07-16 13:42:55 +12:00
J. Nick Koston
bfaf2547e3 Reduce API component flash usage by consolidating error logging (#9468) 2025-07-16 13:15:23 +12:00
J. Nick Koston
5c2dea79ef Make API ConnectRequest optional for passwordless connections (#9445) 2025-07-16 13:14:43 +12:00
J. Nick Koston
dd5ba5a90c Conditionally compile API user services to save 4.3KB flash (follow-up to #9262) (#9451) 2025-07-11 19:08:03 -10:00
J. Nick Koston
143bf694c7 Optimize API flash usage by storing message size at compile time (#9447) 2025-07-11 19:38:23 -05:00
J. Nick Koston
ee8ee4e646 Optimize logger callback API by including message length parameter (#9368)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-07 22:00:03 +00:00
J. Nick Koston
b122112d58 Refactor API entity update dispatch to reduce code duplication (#9372) 2025-07-08 08:51:17 +12:00
DT-art1
e49b89a051 Introduce base Camera class to support alternative camera implementations (#9285)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-07-07 15:45:00 +12:00
J. Nick Koston
0bc18a8281 Eliminate API component guard variable to save 8 bytes RAM (#9341) 2025-07-05 23:34:55 -05:00