MCPcopy Create free account
hub / github.com/FastLED/FastLED / onEndFrame

Method onEndFrame

src/fl/sensors/potentiometer.cpp.hpp:128–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126}
127
128void Potentiometer::Listener::onEndFrame() {
129 // Read current value
130 u16 new_value = mOwner->mPot.read();
131 mOwner->mCurrentValue = new_value;
132
133 // Calculate absolute difference from last triggered value
134 u16 diff;
135 if (new_value > mOwner->mLastValue) {
136 diff = new_value - mOwner->mLastValue;
137 } else {
138 diff = mOwner->mLastValue - new_value;
139 }
140
141 // Check if change exceeds hysteresis threshold
142 const bool changed_beyond_hysteresis = (diff >= mOwner->mHysteresis);
143
144 mOwner->mChangedThisFrame = changed_beyond_hysteresis;
145
146 if (changed_beyond_hysteresis) {
147 mOwner->mLastValue = new_value;
148
149 // Invoke callbacks with Potentiometer reference
150 mOwner->mOnChangeCallbacks.invoke(*mOwner);
151
152 // Invoke callbacks with normalized float value
153 float normalized_value = mOwner->normalized();
154 mOwner->mOnChangeNormalizedCallbacks.invoke(normalized_value);
155 } else {
156 // Value didn't change beyond hysteresis
157 mOwner->mChangedThisFrame = false;
158 }
159}
160
161Potentiometer::Listener::Listener(Potentiometer *owner) : mOwner(owner) {
162 addToEngineEventsOnce();

Callers

nothing calls this directly

Calls 3

normalizedMethod · 0.80
readMethod · 0.45
invokeMethod · 0.45

Tested by

no test coverage detected