From e2cb0edb1088ec8b1f3c53146637e21bf6368f0a Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 28 Mar 2026 08:43:35 -1000 Subject: [PATCH] Preserve ThrottleFilter position in .cpp for cleaner diff --- esphome/components/sensor/filter.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/esphome/components/sensor/filter.cpp b/esphome/components/sensor/filter.cpp index 1a033efd9d..66a9e9555b 100644 --- a/esphome/components/sensor/filter.cpp +++ b/esphome/components/sensor/filter.cpp @@ -246,17 +246,6 @@ bool value_list_matches_any(Sensor *parent, float sensor_value, const Templatabl return false; } -optional throttle_with_priority_new_value(Sensor *parent, float value, const TemplatableValue *values, - size_t count, uint32_t &last_input, uint32_t min_time_between_inputs) { - const uint32_t now = App.get_loop_component_start_time(); - if (last_input == 0 || now - last_input >= min_time_between_inputs || - value_list_matches_any(parent, value, values, count)) { - last_input = now; - return value; - } - return {}; -} - // ThrottleFilter ThrottleFilter::ThrottleFilter(uint32_t min_time_between_inputs) : min_time_between_inputs_(min_time_between_inputs) {} optional ThrottleFilter::new_value(float value) { @@ -268,6 +257,18 @@ optional ThrottleFilter::new_value(float value) { return {}; } +// ThrottleWithPriorityFilter helper (non-template, keeps App access in .cpp) +optional throttle_with_priority_new_value(Sensor *parent, float value, const TemplatableValue *values, + size_t count, uint32_t &last_input, uint32_t min_time_between_inputs) { + const uint32_t now = App.get_loop_component_start_time(); + if (last_input == 0 || now - last_input >= min_time_between_inputs || + value_list_matches_any(parent, value, values, count)) { + last_input = now; + return value; + } + return {}; +} + // DeltaFilter DeltaFilter::DeltaFilter(float min_a0, float min_a1, float max_a0, float max_a1) : min_a0_(min_a0), min_a1_(min_a1), max_a0_(max_a0), max_a1_(max_a1) {}