Commit Graph

22904 Commits

Author SHA1 Message Date
J. Nick Koston 730effe2a5 Merge branch 'fix_logger_uart_event_queue' into integration 2026-02-20 20:31:19 -06:00
J. Nick Koston da5f67af69 Reduce logger UART RX buffer to minimum
The logger only writes to UART, never reads. Previously it used
tx_buffer_size (512 bytes) for both RX and TX buffers. Since ESP-IDF
requires rx_buffer_size > UART_HW_FIFO_LEN (128), use the minimum
of 129 bytes instead of 512, saving ~383 bytes of heap.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:30:29 -06:00
J. Nick Koston addd80684b Merge remote-tracking branch 'upstream/uptime_use_millis_64' into integration 2026-02-20 20:22:35 -06:00
J. Nick Koston 7a58a3ef56 [uptime] Use scheduler millis_64() for rollover-safe uptime tracking
Expose the scheduler's existing 64-bit millisecond tracking as a public
API and use it in the uptime sensors, replacing their manual rollover
handling.

Co-Authored-By: J. Nick Koston <nick@koston.org>
2026-02-20 20:19:49 -06:00
J. Nick Koston 75ab691776 Merge branch 'fix_logger_uart_event_queue' into integration 2026-02-20 19:50:36 -06:00
J. Nick Koston 5de56714c0 Merge branch 'setup_heap_stats' into integration 2026-02-20 19:31:55 -06:00
J. Nick Koston c6c01f85af [setup_heap_stats] Add component to track per-component heap allocation during boot
Tracks heap usage per component during both construction and setup() phases.
Logs deltas inline as components are registered and set up, then prints a
sorted summary after setup() completes. Storage is freed after the summary.

This is a diagnostic tool - not intended for production use. It was used to
discover the logger's unused UART event queue allocation (#14168).
2026-02-20 19:29:41 -06:00
J. Nick Koston 0e38acd67a [api] Warn when clients connect with outdated API version (#14145) 2026-02-20 19:21:56 -06:00
J. Nick Koston a3f279c1cf [usb_host] Implement disable_loop/enable_loop pattern for USB components (#14163) 2026-02-20 19:21:14 -06:00
J. Nick Koston 35037d1a5b [core] Deduplicate base64 encode/decode logic (#14143)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:20:58 -06:00
J. Nick Koston d206c75b0b [logger] Fix loop disable optimization using wrong preprocessor guard (#14158) 2026-02-20 19:20:44 -06:00
J. Nick Koston 0fa7ba6837 [logger] Remove unused UART event queue allocation
The logger's uart_driver_install() was allocating a 10-item FreeRTOS
event queue but passing nullptr as the queue handle, meaning nothing
could ever read from it. Setting the queue size to 0 saves ~212 bytes
of heap.
2026-02-20 19:18:38 -06:00
J. Nick Koston 3855701f60 Merge branch 'loop_monitored_socket_cleanups' into integration 2026-02-20 18:21:18 -06:00
J. Nick Koston 5ea4b5b74b Improve comments explaining why explicit close() is unnecessary before delete 2026-02-20 18:20:56 -06:00
J. Nick Koston 4dd2b532c9 Merge branch 'loop_monitored_socket_cleanups' into integration 2026-02-20 18:18:12 -06:00
J. Nick Koston 9fc291e98f Address review: rename close_socket_ to destroy_socket_, use log helper for reuseaddr, clarify destructor behavior 2026-02-20 18:10:52 -06:00
J. Nick Koston f389314945 Address review comments: clarify socket type comments, use log helper for reuseaddr 2026-02-20 18:06:38 -06:00
J. Nick Koston 7a6df910e5 [api,ota,captive_portal] Use raw pointer for listen sockets to reduce flash
Replace std::unique_ptr<Socket> with raw Socket* for listen sockets
that are created once in setup() and live for the program lifetime.

The unique_ptr move-assign generates dead code to destroy the previous
value (which is always nullptr in setup), including a virtual destructor
call through the vtable that the compiler cannot eliminate because
__uniq_ptr_impl::reset is not inlined.

Changes:
- Use .release() to extract raw pointer from socket factory return
- Add socket_failed_/server_failed_ helpers that combine error logging,
  cleanup, and mark_failed into a single call
- Convert error messages to LOG_STR for flash storage on ESP8266
- Socket destructor already calls close(), so explicit close() before
  delete is unnecessary

Saves 20 bytes on ESP32-IDF, 180 bytes on ESP8266.
2026-02-20 17:57:23 -06:00
J. Nick Koston 09ac3bc1cb Merge remote-tracking branch 'origin/fix_logger_loop_disable' into integration 2026-02-20 17:04:06 -06:00
J. Nick Koston f13a62c5a2 Merge origin/dev into fix_logger_loop_disable
Resolve conflict in defines.h - keep both new NRF52 defines
(USE_LOGGER_EARLY_MESSAGE, USE_LOGGER_WAIT_FOR_CDC from dev) and
existing defines (USE_LOGGER_UART_SELECTION_USB_CDC, USE_LOGGER_USB_CDC
from this branch).
2026-02-20 17:02:01 -06:00
tomaszduda23 1d3054ef5e [nrf52,logger] Early debug (#11685) 2026-02-20 16:12:50 -06:00
Jonathan Swoboda db6aa58f40 [max7219digit] Fix typo in action names (#14162)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 16:06:46 -05:00
J. Nick Koston 974897125e Merge remote-tracking branch 'origin/integration' into integration 2026-02-20 14:57:05 -06:00
J. Nick Koston 29cbc3f452 Merge branch 'usb_host_disable_loop' into integration 2026-02-20 14:56:33 -06:00
J. Nick Koston b756ef952a [usb_host] Implement disable_loop/enable_loop pattern for USB components
Reduce CPU usage when USB components are idle by disabling the
component loop when there are no events or data to process. The
loop is re-enabled from USB task callbacks via
enable_loop_soon_any_context() when new events or data arrive.

- Extract process_usb_events_() from USBClient::loop() returning
  bool so subclasses can combine with their own work checks for a
  single disable_loop() decision
- Add enable_loop_soon_any_context() calls in client_event_cb and
  USB data input callback
- Start with loop disabled in setup(), enabled by first event
- Reorder USBClient members by thread-safety context
- Reorder TransferStatus fields for optimal struct packing
- Fix missing early return after mark_failed() in setup()
2026-02-20 14:55:58 -06:00
J. Nick Koston 0d49fa4d2a Merge branch 'usb_host_disable_loop' into integration 2026-02-20 14:26:37 -06:00
J. Nick Koston 1c697f01c5 [usb_host] Implement disable_loop/enable_loop pattern for USB components
Reduce CPU usage when USB components are idle by disabling the
component loop when there are no events or data to process. The
loop is re-enabled from USB task callbacks via
enable_loop_soon_any_context() when new events or data arrive.

- Extract process_usb_events_() from USBClient::loop() returning
  bool so subclasses can combine with their own work checks for a
  single disable_loop() decision
- Add enable_loop_soon_any_context() calls in client_event_cb and
  USB data input callback
- Start with loop disabled in setup(), enabled by first event
- Reorder USBClient members by thread-safety context
- Reorder TransferStatus fields for optimal struct packing
- Fix missing early return after mark_failed() in setup()
2026-02-20 14:20:49 -06:00
Pawelo 48115eca18 [safe_mode] Extract RTC_KEY constant for shared use (#14121)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2026-02-20 14:08:31 -06:00
dependabot[bot] edfc3e3501 Bump ruff from 0.15.1 to 0.15.2 (#14159)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-20 19:32:41 +00:00
dependabot[bot] 1a37632891 Bump pylint from 4.0.4 to 4.0.5 (#14160)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-20 19:27:45 +00:00
dependabot[bot] b85a49cdb3 Bump github/codeql-action from 4.32.3 to 4.32.4 (#14161)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-20 13:27:15 -06:00
J. Nick Koston 4c70f2001a Merge branch 'fix_logger_loop_disable' into integration 2026-02-20 13:21:08 -06:00
J. Nick Koston 4a4fd8b92c [logger] Fix loop disable optimization using wrong preprocessor guard
The logger loop disable optimization was guarded by USE_LOGGER_USB_CDC,
which is a platform capability flag defined whenever the platform
supports USB CDC. This meant the optimization was disabled on all
ESP32-S2, S3, C3, C5, C6, C61, H2, and P4 variants regardless of
whether USB CDC was actually selected as the hardware UART.

Changed all guards to use USE_LOGGER_UART_SELECTION_USB_CDC which is
only defined when USB CDC is the selected hardware UART. Also changed
the guard logic from || to && so the loop only stays permanently active
when both Zephyr AND USB CDC is selected (the only case that needs
cdc_loop_() to poll port readiness).

Additionally set USE_LOGGER_UART_SELECTION_USB_CDC in the Zephyr
codepath when USB CDC is selected, and updated defines.h for static
analysis coverage.
2026-02-20 13:18:07 -06:00
J. Nick Koston fbc818221e Merge branch 'web_server_64_bit_time' into integration 2026-02-20 11:41:51 -06:00
Jonathan Swoboda 9c0eed8a67 [e131] Remove dead LWIP TCP code path from loop() (#14155)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-20 17:03:39 +00:00
Jonathan Swoboda 887375ebef Merge branch 'release' into dev 2026-02-20 11:24:25 -05:00
Jonathan Swoboda 49356f4132 Merge pull request #14151 from esphome/bump-2026.2.1
2026.2.1
2026.2.1
2026-02-20 11:24:11 -05:00
Jonathan Swoboda 403235e2d4 [wifi] Add band_mode configuration for ESP32-C5 dual-band WiFi (#14148)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 11:20:29 -05:00
Jonathan Swoboda 9ce01fc369 [esp32] Add engineering_sample option for ESP32-P4 (#14139)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 11:20:05 -05:00
J. Nick Koston b0a35559b3 [esp32] Bump ESP-IDF to 5.5.3.1, revert GATTS workaround (#14147) 2026-02-20 10:19:01 -06:00
Jonathan Swoboda 8aaf0b8d85 Bump version to 2026.2.1 2026-02-20 10:17:12 -05:00
Jonathan Swoboda 28d510191c [ld2410/ld2450] Replace header sync with buffer size increase for frame resync (#14138)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:17:12 -05:00
Jonathan Swoboda 4c8e0575f9 [ld2420] Increase MAX_LINE_LENGTH to allow footer-based resync (#14137)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:17:12 -05:00
Jonathan Swoboda 49afe53a2c [ld2410] Add frame header synchronization to readline_() (#14136)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:17:12 -05:00
Jonathan Swoboda d19c1b689a [ld2450] Add frame header synchronization to fix initialization regression (#14135)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-20 10:17:12 -05:00
Jonathan Swoboda e7e1acc0a2 [pulse_counter] Fix PCNT glitch filter calculation off by 1000x (#14132)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:17:12 -05:00
J. Nick Koston 7bdeb32a8a [uart] Always call pin setup for UART0 default pins on ESP-IDF (#14130) 2026-02-20 10:17:12 -05:00
Jonathan Swoboda f412ab4f8b [wifi] Sync output_power with PHY max TX power to prevent brownout (#14118)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:17:12 -05:00
Jonathan Swoboda 0fc09462ff [safe_mode] Log brownout as reset reason on OTA rollback (#14113)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:17:12 -05:00
J. Nick Koston d78496321e [esp32_ble] Enable CONFIG_BT_RELEASE_IRAM on ESP32-C2 (#14109)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:17:12 -05:00