Commit Graph
28320 Commits
Author SHA1 Message Date
J. Nick Koston 55e236ba3d Merge remote-tracking branch 'upstream/delay-action-drop-component' into integration 2026-04-29 11:08:22 -05:00
J. Nick Koston e6f86b343c Merge remote-tracking branch 'upstream/binary-sensor-filters-drop-component' into integration 2026-04-29 11:08:17 -05:00
J. Nick Koston 88248b4417 Merge branch 'scheduler-self-keyed-api' into delay-action-drop-component 2026-04-29 11:07:56 -05:00
J. Nick Koston 441d32add6 Merge branch 'scheduler-self-keyed-api' into binary-sensor-filters-drop-component 2026-04-29 11:07:44 -05:00
J. Nick Koston 54d0727437 Merge branch 'dev' into scheduler-self-keyed-api 2026-04-29 11:06:32 -05:00
J. Nick Koston e3fdea8ce1 [scheduler] Address Copilot feedback: %p type, NameType doc, test docstring
- Strip const for the %p varargs call (the format spec takes void*, not
  const void*; same representation everywhere but pedantically correct).
- Mention SELF_POINTER in the NameType discriminator comment.
- Update test docstring to match the actual const void * signatures.
2026-04-29 11:06:04 -05:00
Jonathan Swoboda bae6b51652 [kamstrup_kmp][toshiba] Fix signed/unsigned comparisons against sizeof (#16135) 2026-04-29 11:33:57 -04:00
Jonathan Swoboda 557c3d4436 [aqi] Use std::max initializer-list for non-negative AQI clamp (#16134) 2026-04-29 11:33:29 -04:00
J. Nick Koston d9e336a744 Merge remote-tracking branch 'upstream/delay-action-drop-component' into integration 2026-04-29 10:21:58 -05:00
J. Nick Koston f3b92010a6 Merge remote-tracking branch 'upstream/binary-sensor-filters-drop-component' into integration 2026-04-29 10:21:54 -05:00
J. Nick Koston ba34021e8e Merge remote-tracking branch 'upstream/sensor-filters-drop-component' into integration 2026-04-29 10:21:49 -05:00
J. Nick Koston e22c84d438 Merge branch 'scheduler-self-keyed-api' into delay-action-drop-component 2026-04-29 10:17:34 -05:00
J. Nick Koston 58b4970ff7 Merge branch 'scheduler-self-keyed-api' into binary-sensor-filters-drop-component 2026-04-29 10:17:29 -05:00
J. Nick Koston 71ecd7334a Merge branch 'scheduler-self-keyed-api' into sensor-filters-drop-component 2026-04-29 10:17:21 -05:00
J. Nick Koston 17173ba3a3 [scheduler] Make get_name() return SELF_POINTER slot too
So debug-only iteration logs in Scheduler::call() (the periodic items dump
and the per-item Running line) print the actual self pointer instead of
'self:(nil)'. Both STATIC_STRING and SELF_POINTER use the same pointer
union member, so a single accessor is the natural shape; drop the
unused get_self() helper that was added for this and update the union
member comments to mention SELF_POINTER and NUMERIC_ID_INTERNAL.
2026-04-29 10:15:30 -05:00
Jonathan Swoboda bacee89bca [mixer_speaker] NOLINT bugprone-unchecked-optional-access in audio_mixer_task (#16130) 2026-04-29 10:56:13 -04:00
J. Nick Koston 439d66f0f7 [sensor] Drop Component from filter classes, use self-keyed scheduler 2026-04-29 09:37:29 -05:00
J. Nick Koston cebdecdcf4 [binary_sensor] Drop Component from filter classes, use self-keyed scheduler 2026-04-29 09:37:23 -05:00
J. Nick Koston 248b7c7cbf [core] DelayAction: drop Component inheritance, use self-keyed scheduler 2026-04-29 09:37:15 -05:00
J. Nick Koston 9745a3299e [scheduler] Address review feedback (const void *, %p cast, buffer size) 2026-04-29 09:34:45 -05:00
Jonathan Swoboda 2157d11913 [haier] Fix bugprone-unchecked-optional-access; switch HardwareInfo to char[9] (#16124) 2026-04-29 14:26:53 +00:00
J. Nick Koston 241d7797e3 [scheduler] Add self-keyed timer API for callers without a Component 2026-04-29 09:18:09 -05:00
Jonathan Swoboda 42b8597719 [api] Extend NOLINT to cover bugprone-random-generator-seed in MAC varint test (#16120) 2026-04-29 13:58:19 +00:00
Jonathan Swoboda 2bd28eee9d [tormatic] Use .value() for checked optional access in read_gate_status_ (#16121) 2026-04-29 09:51:31 -04:00
J. Nick Koston 0a497d3c22 [light] Fold LightControlAction fields into a single stateless lambda (#16118) 2026-04-29 08:35:17 -05:00
J. Nick Koston dc48f2df13 Merge remote-tracking branch 'origin/cover-action-bitmask' into integration 2026-04-29 07:41:16 -05:00
J. Nick Koston ef5af95c17 Merge remote-tracking branch 'origin/light-action-fold-fields-into-lambda' into integration 2026-04-29 07:41:12 -05:00
J. Nick Koston 01a4769a5d Merge remote-tracking branch 'origin/climate-control-action-bitmask' into integration 2026-04-29 07:41:08 -05:00
Jonathan Swoboda 79da2b9704 [time] Fix bugprone-unchecked-optional-access in CronTrigger::check_time_ (#16107) 2026-04-29 08:30:46 -04:00
Jonathan Swoboda ae5b211c89 [api] Avoid JsonDocument copy-and-swap operator= in ActionResponse ctor (#16106) 2026-04-29 08:30:35 -04:00
J. Nick Koston 4e921f8127 [cover] Use ApplyField dataclass for the apply-lambda field list 2026-04-29 07:09:55 -05:00
J. Nick Koston 964cfaa730 [cover] Extract build_apply_lambda_action helper, add typing, use kwargs 2026-04-29 07:06:55 -05:00
J. Nick Koston f7c8df8234 [cover] Address review feedback (const ref args, drop mask numbering) 2026-04-29 06:56:18 -05:00
J. Nick Koston a7a45a556b [climate] Address review feedback (const ref args, utf-8 byte length, comments) 2026-04-29 06:54:23 -05:00
J. Nick Koston 83a634b58d [light] Take trigger args as const ref in ApplyFn; drop hard-coded byte sizes 2026-04-29 06:52:29 -05:00
J. Nick Koston 22a70e3139 [cover] Use FIELDS table to match light/climate codegen pattern 2026-04-29 06:40:09 -05:00
J. Nick Koston d0f4e89ef3 [cover] Fold ControlAction/CoverPublishAction fields into stateless lambdas 2026-04-29 06:37:52 -05:00
J. Nick Koston c9db304887 [climate] Pass codegen-known length for static custom_fan_mode/custom_preset 2026-04-29 06:32:11 -05:00
J. Nick Koston a35aecefee [climate] Fold ControlAction fields into a single stateless lambda 2026-04-29 06:30:46 -05:00
J. Nick Koston 040f4874b0 [light] Fold LightControlAction fields into a single stateless lambda 2026-04-29 06:26:20 -05:00
J. Nick Koston 95db609bd5 Merge remote-tracking branch 'upstream/inline-micros-esp32' into integration
# Conflicts:
#	esphome/core/hal.h
2026-04-29 06:24:33 -05:00
J. Nick Koston 34b66dca55 Merge remote-tracking branch 'upstream/dev' into integration
# Conflicts:
#	esphome/external_files.py
#	tests/components/wifi/test.esp8266-ard.yaml
2026-04-29 06:21:06 -05:00
J. Nick Koston 4e517b422d [esp8266] NOLINT redundant-declaration on system_soft_wdt_feed forward decl
clang-tidy flagged the forward decl in hal_esp8266.h because <user_interface.h>
also declares the function (when included via SDK headers). Both decls are
identical `extern "C"` so the redundancy is harmless; suppress the warning
on the hal_esp8266.h side.
2026-04-29 06:08:04 -05:00
J. Nick Koston 6f79312fa7 Merge branch 'dev' into cover-action-bitmask 2026-04-29 05:42:09 -05:00
J. Nick Koston 1ea7d20d98 Merge branch 'dev' into climate-control-action-bitmask 2026-04-29 05:42:01 -05:00
J. Nick Koston 0f128d2f15 [esp8266] Inline delayMicroseconds/arch_feed_wdt/progmem_read_* in hal_esp8266.h
These wrappers were one-line forwarders to platform primitives:

  delayMicroseconds(us)   -> delay_microseconds_safe(us)
  arch_feed_wdt()         -> system_soft_wdt_feed()
  progmem_read_byte(p)    -> pgm_read_byte(p)
  progmem_read_ptr(p)     -> pgm_read_ptr(p) cast
  progmem_read_uint16(p)  -> pgm_read_word(p)

Mark them __attribute__((always_inline)) inline in hal_esp8266.h so the
wrapper call/return is eliminated at every call site, and remove the
out-of-line definitions from components/esp8266/core.cpp.

The IRAM_ATTR previously on delayMicroseconds() was decorative — its
body calls delay_microseconds_safe() which lives in flash, so an IRAM
ISR caller already jumped from SRAM into flash. Inlining is no worse
than the prior code (same reasoning as the libretiny IRAM_ATTR note in
the parent commit's PR description).

The dispatcher hal.h now gates its delayMicroseconds/arch_feed_wdt
declarations behind #ifndef USE_ESP8266 so clang-tidy does not flag
them as redundant on top of the inline definitions.
2026-04-29 05:37:48 -05:00
J. Nick Koston 83252df908 [core] Split hal.h into per-platform headers under core/hal/
Mirror the wake.{h,cpp} → wake/wake_<platform>.{h,cpp} decomposition
that PR #15978 did. After this change esphome/core/hal.h is a thin
dispatcher and each platform's HAL bits (IRAM_ATTR / PROGMEM macros,
in_isr_context(), the inline yield/delay/micros/millis/millis_64
wrappers, plus ESP8266's progmem_read_*) live in their own header
under esphome/core/hal/.

Scope is headers only — there is no esphome/core/hal.cpp today (every
out-of-line implementation lives in esphome/components/<platform>/core.cpp
alongside platform-specific concerns) so no new .cpp files are added
and no FILTER_SOURCE_FILES entries are needed in core/config.py.
recursive_sources=True on the core manifest already picks up the new
.h files automatically.

No public API moves, no symbol renames, no behavior change. Pure code
motion. The only observable difference is the dispatcher #errors when
no USE_* is set (today an unknown platform silently fell through to
the else branch with empty IRAM_ATTR/PROGMEM); this matches wake.h's
behavior.
2026-04-29 05:16:27 -05:00
J. Nick Koston 063fec1796 Merge branch 'dev' into inline-micros-esp32 2026-04-29 05:14:57 -05:00
J. Nick Koston 8ceada8d04 [core] Download external_files in parallel (#16021) 2026-04-29 14:32:30 +12:00
J. Nick Koston 49c7a6928e [script] Fix cpp_unit_test crash for non-MULTI_CONF platform components (#16104) 2026-04-29 14:32:13 +12:00