Commit Graph

13266 Commits

Author SHA1 Message Date
J. Nick Koston
e110ac24d5 [rp2040] Use native time_us_64() for millis_64()
RP2040's Pico SDK provides time_us_64() which reads the hardware
timer registers directly, returning native uint64_t microseconds.
This eliminates the need for 32-bit rollover tracking on this
platform.

millis() is now derived from millis_64() (like Zephyr) instead of
the other way around, unifying the time source.

Also removes IRAM_ATTR from all RP2040 HAL functions. On RP2040,
IRAM_ATTR is a no-op: the functions it decorated (millis, micros,
delayMicroseconds, arch_get_cpu_cycle_count) all call into Pico SDK
functions that reside in flash (XIP), so the attribute had no effect.
2026-02-27 09:03:20 -10:00
J. Nick Koston
fad0d9ec30 Merge remote-tracking branch 'upstream/dev' into millis64-zephyr-native
# Conflicts:
#	esphome/core/scheduler.cpp
#	esphome/core/scheduler.h
2026-02-27 08:55:47 -10:00
J. Nick Koston
8698b01bc7 [host] Use native clock_gettime for millis_64() (#14340)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 18:54:13 +00:00
J. Nick Koston
3411ce2150 [core] Fix Application asm label for Mach-O using __USER_LABEL_PREFIX__ (#14334)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-27 08:49:57 -10:00
J. Nick Koston
29e1e8bdfd [wifi] Add LibreTiny component test configs (#14351) 2026-02-27 18:45:20 +00:00
J. Nick Koston
317dd5b2da [ci] Skip memory impact target branch build when tests don't exist (#14316) 2026-02-27 08:42:08 -10:00
J. Nick Koston
67003efcb5 [zephyr] Derive millis() from millis_64() to unify time source 2026-02-27 08:29:15 -10:00
Michael Cassaniti
4ae7633418 [safe_mode] Add feature to explicitly mark a boot as successful (#14306)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-27 13:23:02 -05:00
J. Nick Koston
c3a0eeceec [wifi] Use direct SDK APIs for LibreTiny SSID retrieval (#14349) 2026-02-27 18:17:17 +00:00
J. Nick Koston
8d932ed855 [zephyr] Use native k_uptime_get() for millis_64()
Zephyr's k_uptime_get() returns int64_t milliseconds directly,
eliminating the need for 32-bit rollover tracking on this platform.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:03:46 -10:00
J. Nick Koston
40632cb941 Revert "[zephyr] Use native k_uptime_get() for millis_64()"
This reverts commit 77baa0a187.
2026-02-27 08:03:34 -10:00
J. Nick Koston
77baa0a187 [zephyr] Use native k_uptime_get() for millis_64()
Zephyr's k_uptime_get() returns int64_t milliseconds directly,
eliminating the need for 32-bit rollover tracking on this platform.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:01:43 -10:00
J. Nick Koston
4fe173b644 [wifi] Remove stale TODO comment for ESP8266 callback deferral (#14347) 2026-02-27 17:56:57 +00:00
J. Nick Koston
f4d21e8582 Merge remote-tracking branch 'upstream/dev' into millis64-host-native
# Conflicts:
#	esphome/components/host/core.cpp
#	esphome/core/scheduler.cpp
#	esphome/core/scheduler.h
2026-02-27 07:53:14 -10:00
J. Nick Koston
1c7f769ec7 [core] Add millis_64() HAL function with native ESP32 implementation (#14339) 2026-02-27 07:48:21 -10:00
deirdreobyrne
72ca514cc2 [esp32_hosted] Add configurable SDIO clock frequency (#14319)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Deirdre <obyrne@rk1.lan>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-27 17:25:53 +00:00
J. Nick Koston
20314b4d63 [mdns] Update espressif/mdns to v1.10.0 (#14338) 2026-02-27 17:20:08 +00:00
Kevin Ahrendt
017d1b2872 [audio] Bump microOpus to v0.3.4 (#14346) 2026-02-27 12:12:50 -05:00
Jonathan Swoboda
ef9fc87351 [zigbee] Fix codegen ordering for basic/identify attribute lists (#14343)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 11:17:04 -05:00
J. Nick Koston
0f7ac1726d [core] Extend fast select optimization to LibreTiny platforms (#14254)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 06:03:37 -10:00
whitty
bd3f8e006c [esp32_ble] allow setting of min/max key_size and auth_req_mode (#7138)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-27 06:02:29 -10:00
J. Nick Koston
c7182404a3 [host] Use native clock_gettime for millis_64()
The host platform already uses clock_gettime(CLOCK_MONOTONIC) for
millis(). Use it directly for millis_64() instead of delegating to
the Scheduler's rollover tracking.

This eliminates the MULTI_ATOMICS rollover code path (CAS/atomic)
on host builds and removes the dependency on App.scheduler for
millis_64() to work.
2026-02-26 23:36:22 -10:00
J. Nick Koston
0e05ae56e5 Fix friend declaration for ESP8266 clang-tidy
The fully-qualified friend uint64_t ::esphome::millis_64() syntax
causes 'uint64_t is not a class, namespace, or enumeration' errors
on the ESP8266 clang-tidy toolchain. Use unqualified form which
resolves correctly within the esphome namespace.
2026-02-26 23:18:55 -10:00
J. Nick Koston
33d4f62510 Restore explicit cast for -Wsign-conversion consistency
millis() on the line above casts esp_timer_get_time() to uint32_t.
Match that pattern in millis_64() with static_cast<uint64_t> to
avoid implicit signed-to-unsigned conversion.
2026-02-26 23:05:18 -10:00
J. Nick Koston
554e2ac7f1 Use 1000ULL for consistency, tighten @param comment
- Use 1000ULL divisor in millis_64() to match millis() style and
  avoid implicit signed-to-unsigned conversion
- Clarify next_schedule_in @param: now is unused for 64-bit
  extension on ESP32, but still used for 32-bit paths in call()
2026-02-26 23:03:14 -10:00
J. Nick Koston
2a101832ca Address review feedback
- Remove unnecessary uint64_t cast on esp_timer_get_time() (already
  returns int64_t, always non-negative after boot)
- Fix next_schedule_in @param comment: now is only unused on ESP32,
  used for rollover tracking on other platforms
- Use fully-qualified friend declaration (::esphome::millis_64())
2026-02-26 22:59:29 -10:00
J. Nick Koston
915b32cb33 Fix clang-tidy redundant-declaration warning
Include hal.h directly in scheduler.h instead of forward-declaring
millis_64(), which clang-tidy flags as redundant when both headers
are included in the same translation unit.
2026-02-26 22:52:48 -10:00
J. Nick Koston
420ecb4efd [core] Add millis_64() HAL function with native ESP32 implementation
On ESP32, millis() truncates esp_timer_get_time() to 32-bit, then
Scheduler::millis_64_() reconstructs 64-bit using 193 bytes of
CAS/atomic/lock rollover tracking code. This is unnecessary since
esp_timer_get_time() already provides native 64-bit microseconds.

Add millis_64() as a HAL-level function alongside millis():
- ESP32: native esp_timer_get_time()/1000 (26 bytes, lock-free)
- Other platforms: delegate to Scheduler::millis_64_impl_() which
  retains the existing rollover tracking (renamed from millis_64_)

Saves 344 bytes flash and ~8 bytes RAM on ESP32 by eliminating the
rollover tracking code and associated atomic fields. External callers
(uptime, web_server) now use millis_64() directly instead of
App.scheduler.millis_64().
2026-02-26 22:41:19 -10:00
dependabot[bot]
07406c96e1 Bump actions/upload-artifact from 6.0.0 to 7.0.0 (#14326)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-26 21:35:15 -10:00
Jonathan Swoboda
4044520ccc [esp32_touch] Migrate to new unified touch sensor driver (esp_driver_touch_sens) (#14033)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-26 20:38:36 -10:00
Keith Burzinski
656389f215 [usb_uart] Performance, correctness and reliability improvements (#14333) 2026-02-26 23:41:35 -06:00
J. Nick Koston
04db37a34a [esp8266] Remove forced scanf linkage to save ~8KB flash (#13678)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 17:38:38 -10:00
J. Nick Koston
15846137a6 [rp2040] Update arduino-pico framework from 3.9.4 to 5.5.0 (#14328) 2026-02-26 15:17:52 -10:00
J. Nick Koston
50e7571f4c [web_server_idf] Prefer make_unique_for_overwrite for noninit recv buffer (#14279) 2026-02-26 15:17:25 -10:00
J. Nick Koston
1ccfcfc8d8 [time] Eliminate libc timezone bloat (~9.5KB flash ESP32, ~2% RAM on ESP8266) (#13635)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:12:44 -10:00
George Joseph
527d4964f6 [mipi_dsi] Add more Waveshare panels and comments (#14023) 2026-02-27 11:38:07 +11:00
esphomebot
67ba68a1a0 Update webserver local assets to 20260226-220330 (#14330)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-26 22:21:40 +00:00
lyubomirtraykov
8bd474fd01 [api] Add DEFROSTING to ClimateAction (#13976)
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-02-26 10:27:18 -10:00
Oliver Kleinecke
54edc46c7f [esp_ldo] Add channels 1&2 support and passthrough mode (#14177) 2026-02-27 07:12:52 +11:00
J. Nick Koston
08035261b8 [libretiny] Use C++17 nested namespace syntax (#14325) 2026-02-26 10:02:36 -10:00
J. Nick Koston
e8b45e53fd [libretiny] Use -Os optimization for ESPHome source on BK72xx (SDK remains at -O1) (#14322) 2026-02-26 10:02:25 -10:00
Jonathan Swoboda
d325890148 [cc1101] Transition through IDLE in begin_tx/begin_rx for reliable state changes (#14321)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-26 14:48:05 -05:00
dependabot[bot]
8da1e3ce21 Bump ruff from 0.15.2 to 0.15.3 (#14323)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-26 19:32:53 +00:00
dependabot[bot]
c149be20fc Bump aioesphomeapi from 44.1.0 to 44.2.0 (#14324)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-26 19:31:47 +00:00
J. Nick Koston
4c3bb1596e [wifi] Use memcpy-based insertion sort for scan results (#13960) 2026-02-27 08:14:46 +13:00
J. Nick Koston
1912dcf03d [core] Use placement new for global Application instance (#14052) 2026-02-27 08:07:42 +13:00
J. Nick Koston
ae16c3bae7 Add socket compile tests for libretiny platforms (#14314) 2026-02-26 08:25:36 -10:00
J. Nick Koston
be000eab4e [ci] Add undocumented C++ API change checkbox and auto-label (#14317) 2026-02-26 08:02:52 -10:00
J. Nick Koston
a05d0202e6 [core] ESP32: massively reduce main loop socket polling overhead by replacing select() (#14249) 2026-02-26 06:21:27 -10:00
Jonathan Swoboda
6c253f0c71 [sprinkler] Fix millis overflow and underflow bugs (#14299)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-26 08:40:43 -05:00