Commit Graph
25184 Commits
Author SHA1 Message Date
J. Nick Koston bd91d4831e Merge remote-tracking branch 'upstream/preferences-compile-out-loop' into integration 2026-03-18 16:27:36 -10:00
J. Nick Koston da2f86bfab fix 2026-03-18 16:27:21 -10:00
J. Nick Koston b08f730aeb Merge remote-tracking branch 'upstream/preferences-compile-out-loop' into integration 2026-03-18 16:10:35 -10:00
J. Nick Koston 0594e22e3a [preferences] Compile out loop() when flash_write_interval is non-zero
The write_interval == 0 case (sync every loop) is only used on host
or for testing. For the vast majority of real devices using the default
60s interval, loop() and the runtime branch are unnecessary overhead.

Use a compile-time define to separate the two modes so that:
- Normal case: no loop() override, no write_interval_ member, just set_interval
- Zero interval case: loop() syncs every iteration, no interval needed
2026-03-18 16:08:24 -10:00
J. Nick Koston 99042463d0 Merge remote-tracking branch 'upstream/inline-get-use-address' into integration 2026-03-18 15:51:18 -10:00
J. Nick Koston 0f9158d37b [network] Inline get_use_address() to eliminate function call overhead
Move get_use_address()/set_use_address() definitions to headers for
wifi, ethernet, and openthread components so the compiler can inline
them. Also inline network::get_use_address() in the header, matching
the existing pattern used by network::is_connected().

This allows the compiler to collapse the two-level indirection
(network::get_use_address -> component->get_use_address -> field load)
into a single pointer dereference at each call site.

Saves 24 bytes of flash on ESP32-S3.
2026-03-18 15:50:38 -10:00
Jonathan SwobodaandClaude Opus 4.6 403ba262c6 [openthread] Guard InstanceLock against uninitialized semaphore (#14940)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 21:23:47 -04:00
J. Nick Koston 5ffe824fff Merge remote-tracking branch 'upstream/dev' into integration 2026-03-18 14:13:41 -10:00
Jonathan SwobodaandClaude Opus 4.6 f8be27ce6d [ble_client] Fix RSSI sensor reporting same value for all clients (#14939)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 20:10:42 -04:00
J. Nick Koston a50d70c8d3 [core] Remove call_loop_ wrapper and call loop() directly (#14931) 2026-03-18 14:08:03 -10:00
J. Nick KostonandCopilot Autofix powered by AI 4d86049c21 [ota] Pack deferred state args into uint32 to avoid heap allocation (#14922)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 14:06:55 -10:00
J. Nick Koston 44037c4f9b [http_request] Prevent double update task launch (#14910) 2026-03-18 14:06:41 -10:00
J. Nick Koston 3ecda92278 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-18 14:06:13 -10:00
J. Nick Koston 5856d05701 [core] Devirtualize PollingComponent::set_update_interval (#14938) 2026-03-18 14:05:57 -10:00
J. Nick Koston 9ee124b088 Merge remote-tracking branch 'swoboda1337/fix-ble-rssi-multi-client' into integration 2026-03-18 13:21:28 -10:00
Jonathan SwobodaandClaude Opus 4.6 eebf27e239 [ble_client] Fix RSSI sensor reporting same value for all clients
When multiple ble_client RSSI sensors were configured, they all reported
the same RSSI value because the GAP event handler did not filter by
remote device address. Add an address check so each sensor only processes
RSSI events matching its parent client's device.

Fixes https://github.com/esphome/esphome/issues/14898

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 19:09:03 -04:00
J. Nick Koston 2a74d10388 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-18 13:02:18 -10:00
J. Nick Koston a2a048e3bf [ld2412] Inline trivial gate threshold number setters (#14937) 2026-03-18 13:02:07 -10:00
J. Nick Koston dd131fab04 Merge branch 'devirtualize-set-update-interval' into integration 2026-03-18 12:56:08 -10:00
J. Nick Koston 6c0dd9947c [sds011] Pop update_interval before register_component
The sds011 component handles update_interval via its own
set_update_interval_min method. Pop it from config before
register_component to prevent generating a set_update_interval
call on the Component base class.
2026-03-18 12:53:26 -10:00
J. Nick Koston 352e887d77 Merge remote-tracking branch 'upstream/devirtualize-set-update-interval' into integration 2026-03-18 12:50:21 -10:00
J. Nick Koston 2ab54174e9 [core] Devirtualize PollingComponent::set_update_interval
Remove the virtual keyword from set_update_interval and inline the
trivial setter in the header. No component in the tree actually
overrides this on PollingComponent — the only apparent override was
in sds011 which extends Component (not PollingComponent), so it was
just a name-hiding no-op that is also removed here.

This allows the compiler to inline the setter at all 8 call sites
generated by register_component, eliminating function call overhead
and removing a vtable entry.
2026-03-18 12:49:42 -10:00
J. Nick Koston 1be3e07679 Merge branch 'ld2412-inline-setters' into integration 2026-03-18 12:45:29 -10:00
J. Nick Koston dd44e92cb8 [ld2412] Inline trivial gate threshold number setters
Move set_gate_move_threshold_number and set_gate_still_threshold_number
definitions into the header. These are single-line array assignments
called 14 times each (once per gate), and inlining them eliminates
function call overhead, saving ~52 bytes of flash.
2026-03-18 12:45:01 -10:00
J. Nick Koston 1f2cbc3b34 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-18 12:39:05 -10:00
Kevin Ahrendt 9f4c773963 [media_source] Add request helpers for smart sources (#14936) 2026-03-18 12:34:16 -10:00
Kevin Ahrendt ef0eef8117 [const] Move shared volume constants to components/const (#14935) 2026-03-18 21:57:33 +00:00
Jonathan Swoboda 097e6eb41f [i2s_audio] Remove legacy I2S driver support (#14932) 2026-03-18 11:42:56 -10:00
J. Nick Koston 12b8805878 Merge remote-tracking branch 'origin/api-psk-sbo-fix' into integration 2026-03-18 11:10:41 -10:00
J. Nick Koston 405bb60b0d Merge remote-tracking branch 'origin/ota-sbo-fix' into integration 2026-03-18 11:10:31 -10:00
J. Nick Koston c9e96fc848 Merge branch 'dev' into ota-sbo-fix 2026-03-18 10:59:17 -10:00
J. Nick Koston 7cc3bf6425 [ota] Move notify_state_deferred_ out of header to avoid inlining at 8 call sites 2026-03-18 10:54:46 -10:00
J. Nick Koston 8ee6392b01 [ota] Add static_assert for OTAState packing assumption 2026-03-18 10:45:57 -10:00
Jonathan Swoboda 73a49493a2 [vbus][shelly_dimmer][st7789v][modbus_controller] Fix integer overflows, off-by-one, and coordinate swap (#14916) 2026-03-18 16:43:42 -04:00
Jonathan Swoboda 4a93d5b544 [vl53l0x][ld2420][ble_client][inkplate] Fix state corruption, crash, OOB read, and shift UB (#14919) 2026-03-18 16:42:53 -04:00
J. Nick Koston d06c81fb0f Remove unused active_psk parameter from update_noise_psk_
Now that the timeout lambda re-reads from preferences instead of
capturing the PSK, the active_psk parameter is no longer used.
2026-03-18 10:42:35 -10:00
Jonathan Swoboda cc0655a904 [bedjet][light][i2s_audio][ld2412] Fix uninitialized pointers, div-by-zero, and buffer validation (#14925) 2026-03-18 16:42:13 -04:00
J. Nick Koston 0959c35753 Merge remote-tracking branch 'upstream/float-to-raw-optimization' into integration 2026-03-18 10:30:22 -10:00
Jesse Hills a859cb3cce Merge branch 'beta' into dev 2026-03-19 09:20:26 +13:00
Jesse Hills 9e4e2d78dc Merge pull request #14926 from esphome/bump-2026.3.0b5
2026.3.0b5
2026.3.0b5
2026-03-19 09:19:50 +13:00
J. Nick Koston 85be827bb0 Use union instead of memcpy in float_to_raw — xtensa-gcc doesn't optimize memcpy in all contexts 2026-03-18 10:16:37 -10:00
J. Nick Koston e7d1d08fa1 Use memcpy instead of __builtin_bit_cast for ESP8266 compat 2026-03-18 10:12:04 -10:00
J. Nick Koston 856a0b0c83 [api] Use integer comparison for float zero checks in protobuf encoding
Replace floating-point comparison (value != 0.0f) with integer bit-pattern
check via a shared float_to_raw() helper in both encode_float() and
calc_float(). This avoids software float library calls on platforms without
hardware FPU (ESP8266, some LibreTiny chips) and ensures both functions
use identical zero-check logic so size calculation always matches encoding.
2026-03-18 10:04:59 -10:00
J. Nick Koston 80192ad0d0 Merge remote-tracking branch 'upstream/remove-call-loop-wrapper' into integration 2026-03-18 09:58:33 -10:00
J. Nick KostonandCopilot Autofix powered by AI 273419a237 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 09:51:59 -10:00
J. Nick KostonandCopilot Autofix powered by AI 97f2fa7e9d Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 09:51:25 -10:00
J. Nick Koston 810f2f4b0d Remove call_loop_ wrapper and call loop() directly 2026-03-18 09:50:22 -10:00
Jonathan Swoboda 47909d5299 [hub75] Bump esp-hub75 to 0.3.5 (#14915) 2026-03-18 09:47:14 -10:00
J. Nick Koston d5731b3700 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-18 09:45:16 -10:00
J. Nick Koston fc03e7d2cd Merge remote-tracking branch 'upstream/callback-drop-captures' into integration 2026-03-18 09:44:58 -10:00