Commit Graph
22023 Commits
Author SHA1 Message Date
J. Nick Koston 5e8f9c938e Merge branch 'scheduler_uint32t_core_filters' into integration 2026-02-09 06:45:29 -06:00
J. Nick Koston 4b92465afd [scheduler] Fix stale bitfield comments for name_type_ 2026-02-09 06:39:03 -06:00
J. Nick Koston 65c2b29678 Merge remote-tracking branch 'origin/integration' into integration 2026-02-09 06:33:05 -06:00
J. Nick Koston a6345eea08 Merge branch 'scheduler_uint32t_core_filters' into integration 2026-02-09 06:32:01 -06:00
J. Nick Koston 78ddacd766 [scheduler] Update NameType comment to mention internal numeric IDs 2026-02-09 06:26:53 -06:00
J. Nick Koston dd2c5838e1 [scheduler] Use enum class for InternalSchedulerID to avoid materialized constant
The struct + constexpr namespace approach caused the compiler to
materialize POLLING_UPDATE as a 4-byte symbol. An enum class with
uint32_t underlying type gives the same type safety but enum values
are true compile-time constants that never get materialized.
2026-02-09 06:25:55 -06:00
J. Nick Koston d9f7c26b16 Revert "[scheduler] Inline all trivial Scheduler forwarding methods"
This reverts commit d2728f2ccd.
2026-02-09 06:24:49 -06:00
J. Nick Koston d2728f2ccd [scheduler] Inline all trivial Scheduler forwarding methods
Move all set_timeout, cancel_timeout, set_interval, cancel_interval
overloads (const char*, uint32_t, std::string) from scheduler.cpp to
inline in scheduler.h. These are all trivial one-liner forwarding calls
to set_timer_common_ or cancel_item_ and benefit from inlining at
call sites rather than being separate symbols.
2026-02-09 06:16:49 -06:00
J. Nick Koston 769d4e4444 [scheduler] Inline InternalSchedulerID overloads to eliminate code size overhead
Move the 4 Scheduler InternalSchedulerID methods from .cpp to inline
in the header. They're trivial one-liners that extract .id and forward
to set_timer_common_/cancel_item_, so the compiler can fold them into
call sites instead of emitting separate function bodies.
2026-02-09 06:07:49 -06:00
J. Nick Koston 3d2b9641a4 [scheduler] Add integration test for internal vs numeric ID isolation
Verifies that NUMERIC_ID_INTERNAL and NUMERIC_ID are completely
independent matching namespaces — same uint32_t value on the same
component does not collide. Tests that cancelling one type does not
affect the other, and that string names also don't cross-match.
2026-02-09 06:05:13 -06:00
J. Nick Koston ed3acd582e [scheduler] Make core timer ID collisions impossible with type-safe internal IDs
Previously, PollingComponent used the string "update" and DelayAction
used "delay" as scheduler names. If a component subclassing
PollingComponent or using DelayAction also happened to use these same
strings for its own timers, the core timer would be silently cancelled
— a subtle bug that would be extremely hard to track down.

This introduces InternalSchedulerID, a type-safe wrapper that routes
through a new NUMERIC_ID_INTERNAL NameType. Since the scheduler
matches by (component, name_type, id, type), internal IDs can never
collide with component-level NUMERIC_ID or string-based names, even
if the underlying uint32_t values overlap.

Also migrates binary_sensor filters, MultiClickTrigger, and sensor
filters from string-based to uint32_t scheduler IDs. Each filter is
its own Component instance so IDs are scoped per-instance with no
collision risk.
2026-02-09 05:50:41 -06:00
J. Nick Koston ba2ac54932 Merge branches 'cse7766_batch_read', 'ld2410_batch_read', 'ld2412_batch_read', 'ld2420_batch_read', 'ld2450_batch_read', 'modbus_batch_read', 'nextion_batch_read', 'pylontech_batch_read', 'seeed_mr_batch_read', 'dsmr_batch_read', 'tuya_batch_read', 'dlms_meter_batch_read', 'pipsolar_batch_read', 'rd03d_batch_read', 'rf_bridge_batch_read' and 'dfplayer_batch_read' into integration 2026-02-09 04:35:39 -06:00
J. Nick Koston a0f736b7aa Future-proof available() check to handle negative return values 2026-02-09 04:35:11 -06:00
J. Nick Koston 21f270677b Future-proof available() check to handle negative return values 2026-02-09 04:34:49 -06:00
J. Nick Koston d6e692e302 Future-proof available() check to handle negative return values 2026-02-09 04:34:32 -06:00
J. Nick Koston 991ce396a9 Future-proof available() check to handle negative return values 2026-02-09 04:34:14 -06:00
J. Nick Koston 68dfb844bd Future-proof available() check to handle negative return values 2026-02-09 04:32:14 -06:00
J. Nick Koston 9742880bf7 Add comment explaining available() <= 0 check 2026-02-09 04:31:16 -06:00
J. Nick Koston 13f9726534 Add comment explaining available() <= 0 check 2026-02-09 04:30:59 -06:00
J. Nick Koston dd07e25a8f Future-proof available() check to handle negative return values 2026-02-09 04:30:15 -06:00
J. Nick Koston a875a2fb9b Future-proof available() check to handle negative return values 2026-02-09 04:29:37 -06:00
tronikos fb93283720 [water_heater] Add state masking to distinguish explicit commands from no-change (#13879) 2026-02-09 03:52:49 -06:00
J. Nick Koston bed01da345 [api] Guard varint parsing against overlong encodings (#13870) 2026-02-09 03:45:40 -06:00
J. Nick Koston 422f413680 [lps22] Replace set_retry with set_interval to avoid heap allocation (#13841) 2026-02-09 03:26:44 -06:00
J. Nick Koston c3c0c40524 [mqtt] Return friendly_name_() by const reference to avoid string copies (#13810) 2026-02-09 03:26:29 -06:00
J. Nick Koston 46f8302d8f [mqtt] Use stack buffer for discovery topic to avoid heap allocation (#13812) 2026-02-09 03:26:15 -06:00
J. Nick Koston e24528c842 [analyze-memory] Attribute CSWTCH symbols from SDK archives (#13850) 2026-02-09 03:25:59 -06:00
J. Nick Koston 5370687001 [wizard] Use secrets module for fallback AP password generation (#13864) 2026-02-09 03:25:41 -06:00
J. Nick Koston 6ee185c58a [dashboard] Use resolve/relative_to for download path validation (#13867) 2026-02-09 03:25:23 -06:00
J. Nick Koston eb6a6f8d0d [web_server_idf] Remove unused host() method (#13869) 2026-02-09 03:25:05 -06:00
J. Nick Koston 140ec0639c [api] Elide empty message construction in protobuf dispatch (#13871) 2026-02-09 03:24:45 -06:00
Clyde Stubbs 756f1c6b7e [lvgl] Fix crash with unconfigured top_layer (#13846) 2026-02-08 21:53:43 -05:00
J. Nick Koston 6469863aea Merge remote-tracking branch 'origin/libs_analyze_memory' into integration 2026-02-08 15:04:43 -06:00
J. Nick Koston 8f032d5213 wip 2026-02-08 15:04:33 -06:00
J. Nick Koston 4efaaedb05 Merge remote-tracking branch 'origin/libs_analyze_memory' into integration 2026-02-08 15:01:18 -06:00
J. Nick Koston 12c369cb09 wip 2026-02-08 15:01:01 -06:00
J. Nick Koston e56d1a6ee9 Merge remote-tracking branch 'origin/libs_analyze_memory' into integration 2026-02-08 14:57:18 -06:00
J. Nick Koston b728ebd5fb tweaks 2026-02-08 14:56:57 -06:00
J. Nick Koston 5caa54761b tweaks 2026-02-08 14:51:11 -06:00
J. Nick Koston 4efdfda8fb wip 2026-02-08 14:34:37 -06:00
J. Nick Koston 6099dd3065 wip 2026-02-08 14:34:00 -06:00
J. Nick Koston 30558262d8 fix dupes 2026-02-08 14:27:09 -06:00
J. Nick Koston 6dd7f45cc9 tweak 2026-02-08 14:12:35 -06:00
tomaszduda23 28b9487b25 [nrf52,logger] fix printk (#13874) 2026-02-08 17:52:05 +00:00
J. Nick Koston 17664750b7 tweak 2026-02-08 11:20:54 -06:00
J. Nick Koston 95e92716d9 tweak 2026-02-08 11:19:38 -06:00
J. Nick Koston 0f1ece6bdc [analyze-memory] Attribute PlatformIO library symbols via nm archive scanning 2026-02-08 11:14:34 -06:00
J. Nick Koston 43d7b1027b Merge remote-tracking branch 'origin/libretiny_1120' into integration 2026-02-08 10:32:15 -06:00
J. Nick Koston 2eac6b06b7 revert workarounds now that libretiny v1.12.1 is released 2026-02-08 10:28:14 -06:00
J. Nick Koston 140629a323 Merge branch 'merge_read_message' into integration 2026-02-08 10:19:57 -06:00