Commit Graph
26282 Commits
Author SHA1 Message Date
J. Nick Koston 4f7cb2407c Merge remote-tracking branch 'origin/fix-preferences-log-spam' into integration 2026-03-30 22:40:38 -10:00
J. Nick Koston 7396b1163e Keep failed writes at ESP_LOGE level 2026-03-30 22:40:29 -10:00
J. Nick Koston 6bad85d3e2 Merge remote-tracking branch 'origin/fix-preferences-log-spam' into integration 2026-03-30 22:39:11 -10:00
J. Nick Koston 49ea0f2578 [preferences] Reduce log verbosity for unchanged NVS/FDB writes 2026-03-30 22:38:18 -10:00
J. Nick Koston a3913b98ba [wifi] Move LibreTiny WiFi STA state to member variable (#15305) 2026-03-30 17:05:48 -10:00
Guillermo Ruffino ef65e47bc5 [schema] generator fixes (#15276) 2026-03-31 13:08:50 +13:00
Jonathan Swoboda 53b2a03c80 [multiple] Fix -Wformat and -Wextra warnings across 33 component files (#15321) 2026-03-30 18:56:05 -04:00
dependabot[bot] 58df755d8b Bump requests from 2.33.0 to 2.33.1 (#15324) 2026-03-30 12:27:30 -10:00
Ardumine c5eb0eb984 [internal_temperature] Add nRF52 Zephyr support (#15297) 2026-03-31 10:50:11 +13:00
Clyde Stubbs f25fa71235 [lvgl] Fix align_to directives (#15311) 2026-03-31 07:25:15 +11:00
J. Nick Koston 8561a8c495 [core] Suppress component source overflow warnings in testing mode (#15320) 2026-03-30 08:48:04 -10:00
J. Nick Koston 38fdd86384 Revert "[core] Expand component source index to 9 bits (511 max)"
This reverts commit fcfcb4ed72.
2026-03-30 08:42:23 -10:00
J. Nick Koston 9ac9814955 Merge remote-tracking branch 'upstream/component-source-9bit' into integration 2026-03-30 08:36:35 -10:00
J. Nick Koston ee6ad1aa8b Merge branch 'wifi-libretiny-state-member' into integration 2026-03-30 08:36:13 -10:00
J. Nick KostonandClaude Opus 4.6 459288fb1a Merge upstream/dev, resolve conflict keeping LibreTiny sta_state_ guard
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 08:35:24 -10:00
J. Nick Koston fcfcb4ed72 [core] Expand component source index to 9 bits (511 max)
Bitfield component_source_index_ (9 bits) and warn_if_blocking_over_
(7 bits) into the same 16 bits. This doubles the max unique component
source names from 255 to 511 without increasing Component size.

The blocking warn threshold max drops from 2550ms to 1270ms which is
more than sufficient since it starts at 50ms and ratchets up.

Fixes test warnings when many components are compiled together:
WARNING Too many unique component source names (max 255)
2026-03-30 08:30:55 -10:00
J. Nick Koston 8688ef7125 [benchmark] Fix decode benchmarks being optimized away by compiler (#15293) 2026-03-30 08:24:48 -10:00
J. Nick Koston 46ea61666e [wifi] Replace FreeRTOS queue with LockFreeQueue on ESP-IDF (#15306) 2026-03-30 08:24:34 -10:00
J. Nick Koston 8969eb76e9 [wifi] Avoid redundant SDK calls in WiFi loop on ESP8266 (#15303) 2026-03-30 08:24:17 -10:00
J. Nick Koston ffee4c22b3 [esp32_ble] Devirtualize BLE event handler dispatch (#15310) 2026-03-30 08:21:58 -10:00
J. Nick Koston ad3f6ae313 [automation] Remove actions_end_ pointer from ActionList to save RAM (#15283) 2026-03-30 08:20:52 -10:00
Keith Burzinski b579758c46 [dht] Code clean-up (#15271) 2026-03-30 13:15:37 -05:00
Keith Burzinski 45e6d49d36 [shtcx] Code clean-up (#15261) 2026-03-30 13:15:27 -05:00
Keith Burzinski ddb188e8f0 [bme68x_bsec2] Fix warning spam, code clean-up (#15258) 2026-03-30 13:15:13 -05:00
Keith Burzinski 1a86e88373 [thermostat] Fix stale max_runtime_exceeded causing spurious supplemental heating/cooling (#15274) 2026-03-30 13:15:02 -05:00
Bonne EgglestonandJ. Nick Koston 31574a427b [modbus] Share helper functions across modbus components - part A (#15291)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-03-30 06:56:47 -10:00
Edward Firmo 1bc6a8d956 [nextion] Fix queue age check using inconsistent time sources (#15317) 2026-03-30 06:54:09 -10:00
J. Nick Koston d420e7bc23 [modbus_controller] Fix off-by-one bounds check in byte_from_hex_str (#15301) 2026-03-30 08:57:27 -04:00
J. Nick Koston ce045d1671 Merge branch 'devirtualize-ble-handlers' into integration 2026-03-29 23:15:01 -10:00
J. Nick Koston 1441f4ebd7 Clarify docstring for _add_callback 2026-03-29 23:14:29 -10:00
J. Nick Koston e87b8f6886 Add add_ non-template trampoline to StaticCallbackManager 2026-03-29 23:13:30 -10:00
J. Nick Koston 68f4d92ad3 Add add_ non-template trampoline to StaticCallbackManager 2026-03-29 23:13:18 -10:00
J. Nick Koston e35efcbf91 Merge branch 'devirtualize-ble-handlers' into integration 2026-03-29 22:58:18 -10:00
J. Nick Koston 33230e1c94 Add type annotations to _add_callback 2026-03-29 22:51:23 -10:00
J. Nick Koston 888405790f Fix static storage duration capture warnings in lambdas
Use braced scope with local variable to avoid capturing static
storage duration variables directly in lambda captures.
2026-03-29 22:51:09 -10:00
J. Nick Koston d05ac6eae4 Revert unnecessary comment/docstring changes 2026-03-29 22:47:28 -10:00
dependabot[bot] cd3c2ae77e Bump aioesphomeapi from 44.8.0 to 44.8.1 (#15309)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-29 22:45:46 -10:00
J. Nick Koston 5850931d27 [esp32_ble] Devirtualize BLE event handler dispatch
Replace virtual handler interfaces (GAPEventHandler, GAPScanEventHandler,
GATTcEventHandler, GATTsEventHandler, BLEStatusEventHandler) with
StaticCallbackManager-based dispatch using lambda callbacks.

This eliminates vtable lookups and MI this-pointer adjustment thunks
on every BLE event dispatch in the hot path. Each lambda captures a
single pointer (fits in Callback inline storage, no heap allocation)
and the StaticCallbackManager avoids std::vector template bloat.

Breaking change: external components inheriting from the virtual handler
classes need to switch to add_*_callback() registration instead.
2026-03-29 22:45:25 -10:00
J. Nick Koston b1fca86df1 Merge remote-tracking branch 'upstream/fix-ble-scan-restart-after-ota-failure' into integration 2026-03-29 22:11:21 -10:00
J. Nick Koston dc9718b167 [esp32_ble_tracker] Restart BLE scan after OTA failure
When OTA starts, stop_scan() is called which clears the scan_continuous_
flag. If OTA fails or aborts, the scan was never restarted because
scan_continuous_ was already false. This left the device without BLE
scanning until reboot.

Save the scan_continuous_ state before stopping and restore it on
OTA_ERROR or OTA_ABORT to resume scanning.
2026-03-29 21:32:38 -10:00
Edward Firmoandpre-commit-ci-lite[bot] 95b0e60617 [nextion] Add accessor const qualifiers, return by ref, and deprecate get_wave_chan_id() (#15204)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-03-30 02:20:04 -05:00
Edward Firmo ffbbe5eab3 [nextion] Fix log level for command processing limit message (#15302) 2026-03-30 01:55:40 -05:00
J. Nick Koston fec11d38d1 Merge remote-tracking branch 'upstream/wifi-idf-fast-path-queue' into integration 2026-03-29 19:41:29 -10:00
J. Nick Koston 346e6b40da [wifi] Replace FreeRTOS queue with LockFreeQueue on ESP-IDF
Replace the FreeRTOS xQueue (xQueueCreate/xQueueSend/xQueueReceive)
used for WiFi event passing with a lock-free SPSC queue. This avoids
the FreeRTOS kernel spinlock overhead on every loop iteration when
checking for events — the common case is an empty queue.

The LockFreeQueue::pop() fast path is just two atomic loads and a
comparison, vs xQueueReceive which takes a spinlock, checks the
queue, and releases the spinlock even when empty.

WiFi events are rare (connect/disconnect/scan) so heap allocation
for event data is retained — no EventPool needed unlike the BLE
path which processes hundreds of events per second.

This matches the lock-free pattern already used by esp32_ble.
2026-03-29 19:40:39 -10:00
J. Nick Koston 48466956c6 Merge branch 'wifi-idf-fast-path-queue' into integration
# Conflicts:
#	esphome/components/wifi/wifi_component.h
#	esphome/components/wifi/wifi_component_esp_idf.cpp
2026-03-29 19:39:33 -10:00
J. Nick Koston 51b4b8e743 [wifi] Replace FreeRTOS queue with LockFreeQueue on ESP-IDF
Replace the FreeRTOS xQueue (xQueueCreate/xQueueSend/xQueueReceive)
used for WiFi event passing with a lock-free SPSC queue. This avoids
the FreeRTOS kernel spinlock overhead on every loop iteration when
checking for events — the common case is an empty queue.

The LockFreeQueue::pop() fast path is just two atomic loads and a
comparison, vs xQueueReceive which takes a spinlock, checks the
queue, and releases the spinlock even when empty.

WiFi events are rare (connect/disconnect/scan) so heap allocation
for event data is retained — no EventPool needed unlike the BLE
path which processes hundreds of events per second.

This matches the lock-free pattern already used by esp32_ble.
2026-03-29 19:34:56 -10:00
J. Nick Koston 99232ba4f5 Merge branch 'wifi-idf-fast-path-queue' into integration
# Conflicts:
#	esphome/components/wifi/wifi_component_esp_idf.cpp
2026-03-29 19:23:35 -10:00
J. Nick Koston 09fc3bb9f5 [wifi] Replace FreeRTOS queue with LockFreeQueue on ESP-IDF
Replace the FreeRTOS xQueue (xQueueCreate/xQueueSend/xQueueReceive)
used for WiFi event passing with a lock-free SPSC queue. This avoids
the FreeRTOS kernel spinlock overhead on every loop iteration when
checking for events — the common case is an empty queue.

The LockFreeQueue::pop() fast path is just two atomic loads and a
comparison, vs xQueueReceive which takes a spinlock, checks the
queue, and releases the spinlock even when empty.

WiFi events are rare (connect/disconnect/scan) so heap allocation
for event data is retained — no EventPool needed unlike the BLE
path which processes hundreds of events per second.

This matches the lock-free pattern already used by esp32_ble.
2026-03-29 19:22:09 -10:00
J. Nick Koston 4e255ffe0d Merge branch 'wifi-idf-fast-path-queue' into integration
# Conflicts:
#	esphome/components/wifi/wifi_component_esp_idf.cpp
2026-03-29 19:17:06 -10:00
J. Nick Koston ac2f837c7f Use relaxed memory ordering for event pending flag
The flag is just a hint — xQueueReceive with its own internal
synchronization is the source of truth. Relaxed ordering avoids
unnecessary fence cost on ESP targets. Worst case is missing an
event for one loop iteration.
2026-03-29 19:16:03 -10:00