Commit Graph
23730 Commits
Author SHA1 Message Date
J. Nick Koston c3dee3d307 comments 2026-02-23 21:21:43 -06:00
J. Nick Koston 29416061ea comments 2026-02-23 21:20:38 -06:00
J. Nick Koston 3fd24b779c comments 2026-02-23 21:17:50 -06:00
J. Nick Koston c9c73ec6e9 cleanup 2026-02-23 21:13:16 -06:00
J. Nick Koston a696ed4920 cleanup 2026-02-23 21:10:59 -06:00
J. Nick Koston 3e0cdc2404 cleanup 2026-02-23 21:10:38 -06:00
J. Nick Koston 86642ab9d7 cleanup 2026-02-23 21:04:08 -06:00
J. Nick Koston fd6d0de7a2 cleanup 2026-02-23 21:00:00 -06:00
J. Nick Koston 64364961db [core] Replace lwip_select() with direct rcvevent reads on ESP32
On ESP32, replace lwip_select() in yield_with_select_() with direct
socket event reads via lwip_socket_dbg_get_socket(), reducing poll
cost from 133us to ~7us (18.7x faster). Replace the UDP loopback
wake socket with FreeRTOS task notifications (<2us, ISR-safe).

Benchmarks (ESP32, 4 listen sockets):
- Poll path: 7,087 ns vs 132,402 ns (18.7x faster)
- Wake signal: 1,826 ns vs ~130,000 ns (72x faster, now ISR-safe)
- Binary: yield_with_select_ 108B vs 188B (43% smaller)

Non-ESP32 platforms (LibreTiny, ESP8266, RP2040) are unchanged.
2026-02-23 20:47:54 -06:00
J. Nick Koston ad2da0af52 [network] Use C++17 nested namespace syntax (#14248) 2026-02-24 02:00:21 +00:00
J. Nick Koston 7d9d90d3f8 [cse7766] Use C++17 nested namespace syntax (#14247) 2026-02-23 20:50:22 -05:00
J. Nick Koston 70e47f301d [ethernet] Use C++17 nested namespace syntax (#14246) 2026-02-23 20:50:11 -05:00
J. Nick Koston 1614eb9c9c [i2c] Use C++17 nested namespace syntax (#14245) 2026-02-23 20:50:00 -05:00
J. Nick Koston a694003fe3 [usb_host] Use C++17 nested namespace syntax (#14244) 2026-02-23 20:49:48 -05:00
J. Nick Koston 500aa7bf1d [text_sensor] Use C++17 nested namespace syntax (#14243) 2026-02-23 20:49:35 -05:00
J. Nick Koston 63c1496115 [text] Use C++17 nested namespace syntax (#14242) 2026-02-23 20:49:25 -05:00
J. Nick Koston 843d06df3f [switch] Use C++17 nested namespace syntax (#14241) 2026-02-23 20:49:15 -05:00
J. Nick Koston 30cc51eac9 [version] Use C++17 nested namespace syntax (#14240) 2026-02-23 20:49:00 -05:00
J. Nick Koston 856760943b Merge branch 'cse7766-cpp17-namespace' into integration 2026-02-23 18:35:14 -06:00
J. Nick Koston 2d7988c911 Merge branch 'ethernet-cpp17-namespace' into integration 2026-02-23 18:35:09 -06:00
J. Nick Koston 18b587dc93 [cse7766] Use C++17 nested namespace syntax 2026-02-23 18:34:27 -06:00
J. Nick Koston dba69d4c0a [ethernet] Use C++17 nested namespace syntax 2026-02-23 18:33:07 -06:00
J. Nick Koston 311720e467 Merge branch 'i2c-cpp17-namespace' into integration 2026-02-23 18:32:37 -06:00
J. Nick Koston 5c8de42486 Merge branch 'usb-host-cpp17-namespace' into integration 2026-02-23 18:32:31 -06:00
J. Nick Koston aff94c6502 [i2c] Use C++17 nested namespace syntax 2026-02-23 18:32:00 -06:00
J. Nick Koston 40e18ca1b9 [usb_host] Use C++17 nested namespace syntax and constexpr 2026-02-23 18:30:45 -06:00
J. Nick Koston b2a63fd117 Merge branch 'text-cpp17-namespace' into integration 2026-02-23 18:29:02 -06:00
J. Nick Koston 815192cf9c Merge branch 'text-sensor-cpp17-namespace' into integration 2026-02-23 18:28:57 -06:00
J. Nick Koston e47fe0704d [text_sensor] Use C++17 nested namespace syntax 2026-02-23 18:27:49 -06:00
J. Nick Koston 3cede50a1b [text] Use C++17 nested namespace syntax 2026-02-23 18:26:44 -06:00
J. Nick Koston 16ef86c368 Merge remote-tracking branch 'origin/switch-cpp17-namespace' into integration 2026-02-23 18:25:20 -06:00
J. Nick Koston 8470d53c5f [switch] Use constexpr for restore mode masks 2026-02-23 18:24:49 -06:00
J. Nick Koston 60e5e55ccc [switch] Use C++17 nested namespace syntax 2026-02-23 18:23:58 -06:00
J. Nick Koston 8b2fc9660c Merge branch 'version-cpp17-namespace' into integration 2026-02-23 18:20:51 -06:00
J. Nick Koston 249b0555a9 [version] Use C++17 nested namespace syntax 2026-02-23 18:20:08 -06:00
Jonathan SwobodaandCopilot ebf1047da7 [core] Move build_info_data.h out of application.h to fix incremental rebuilds (#14230)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-23 18:51:56 -05:00
J. Nick Koston 1fd75a9abf Merge branch 'light-fast-lerp' into integration 2026-02-23 17:40:17 -06:00
J. Nick Koston 3d036d941e [light] Replace std::lerp with lightweight lerp_fast in LightColorValues::lerp
std::lerp includes NaN/infinity edge-case handling per C++20 spec which
adds ~200 bytes of overhead per call. With 10 fields interpolated, this
bloated the symbol to 2,038 bytes on BK72xx. Since all light color values
are pre-clamped finite floats, a simple a + t * (b - a) is sufficient.

Reduces LightColorValues::lerp from 2,038 B to 286 B on BK72xx.
Also saves 16 bytes on ESP8266.
2026-02-23 17:37:37 -06:00
J. Nick Koston 7f6bb6a8ac Merge remote-tracking branch 'origin/light-fast-lerp' into integration 2026-02-23 17:23:50 -06:00
J. Nick Koston 8db3f67be4 [light] Replace std::lerp with lightweight fast_lerp in LightColorValues::lerp
std::lerp includes NaN/infinity edge-case handling per C++20 spec, which
generates ~200 bytes of overhead per call. With 10 fields interpolated,
this bloated the symbol to 2,038 bytes. Since all light color values are
pre-clamped finite floats, a simple a + t * (b - a) is sufficient.

Reduces LightColorValues::lerp from 2,038 B to 286 B (86% reduction).
2026-02-23 17:22:21 -06:00
J. Nick Koston eefff2ff32 Merge branch 'posix_tz_avoid_linking_scanf' into integration 2026-02-23 17:09:06 -06:00
J. Nick Koston 42a97aee65 Merge branch 'dev' into light-gamma-lut 2026-02-23 17:05:12 -06:00
J. Nick KostonandClaude Opus 4.6 869678953d [core] Add pow10_int helper, replace powf in normalize_accuracy and sensor filters (#14114)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:03:24 +13:00
J. Nick Koston fb9f45a994 Merge branch 'remove_posix_tz_parser' into integration 2026-02-23 16:52:03 -06:00
J. Nick Koston 0aa43b0c4f tweak 2026-02-23 16:51:46 -06:00
J. Nick Koston 28c6fbdc9e [api] Mark timezone string field as deprecated in GetTimeResponse
parsed_timezone struct should be used instead. The string field will be
removed before 2027.1.0.
2026-02-23 16:50:53 -06:00
J. Nick Koston b4817c424d [api] Skip timezone update when parsed struct is not populated
Old clients (before 2026.3.0) send only the timezone string without the
parsed_timezone struct, so all fields default to zero. Without this check,
the device would overwrite its codegen-configured timezone with UTC.

Keep the codegen timezone when the struct is unpopulated (all zeros).
For actual UTC this also skips, which is harmless since UTC is the default.
2026-02-23 16:49:29 -06:00
J. Nick Koston 70bcbfaae6 Merge branch 'remove_posix_tz_parser' into integration 2026-02-23 16:43:21 -06:00
J. Nick Koston 199288b813 [time] Fix test namespace for RecalcTimestampLocal and TimezoneOffset tests
Move tests that use make_us_central(), set_global_tz(), ParsedTimezone,
and DSTRuleType into esphome::time::testing namespace where those symbols
are declared.
2026-02-23 16:41:20 -06:00
J. Nick Koston 8374ccf7b5 [time] Remove C++ POSIX TZ string parser (bridge code)
Remove the runtime POSIX TZ string parser and all associated bridge code
now that timezone data is sent as pre-parsed structs via protobuf.

Removed:
- parse_posix_tz() and internal parsing helpers (skip_tz_name, parse_offset,
  parse_dst_rule, parse_uint, parse_transition_time)
- RealTimeClock::set_timezone() overloads and apply_timezone_()
- API connection fallback path for string-based timezone

Kept:
- All conversion functions (epoch_to_local_tm, is_in_dst, calculate_dst_transition)
- Internal helpers used by conversion functions
- localtime_r/localtime overrides
- Tests for all permanent functions
2026-02-23 16:34:14 -06:00