diff --git a/server/src/hardware/decoder/decoder.cpp b/server/src/hardware/decoder/decoder.cpp index 7f5337e4..604c2206 100644 --- a/server/src/hardware/decoder/decoder.cpp +++ b/server/src/hardware/decoder/decoder.cpp @@ -453,7 +453,7 @@ void Decoder::changed(DecoderChangeFlags changes, uint32_t functionNumber) // Stop scheduled unlatch for current function, check other functions rescheduleLatchedFunctionTimer(); } - else if(f && f->value == true && f->timeoutSeconds.value() > 0) + else if(f && f->value == true && f->hasTimeout() > 0) { if(m_currentLatchedFunction == NO_FUNCTION) { @@ -482,7 +482,7 @@ void Decoder::rescheduleLatchedFunctionTimer() for(const auto& f : *functions) { - if(f->timeoutSeconds.value() > 0 && f->value == true) + if(f->hasTimeout() > 0 && f->value == true) { const auto scheduledTimout = f->getScheduledTimeout(); if(m_currentLatchedFunction == NO_FUNCTION || scheduledTimout < m_firstTimeout) diff --git a/server/src/hardware/decoder/decoderfunction.cpp b/server/src/hardware/decoder/decoderfunction.cpp index 630b820e..118fa2b4 100644 --- a/server/src/hardware/decoder/decoderfunction.cpp +++ b/server/src/hardware/decoder/decoderfunction.cpp @@ -48,7 +48,7 @@ DecoderFunction::DecoderFunction(Decoder& decoder, uint8_t _number) : value{this, "value", false, PropertyFlags::ReadWrite | PropertyFlags::StoreState, [this](bool newValue) { - if(timeoutSeconds.value() > 0 && newValue) + if(hasTimeout() > 0 && newValue) m_scheduledTimeout = std::chrono::steady_clock::now() + std::chrono::seconds(timeoutSeconds.value()); else m_scheduledTimeout = {}; diff --git a/server/src/hardware/decoder/decoderfunction.hpp b/server/src/hardware/decoder/decoderfunction.hpp index 0ec3885c..71638cc0 100644 --- a/server/src/hardware/decoder/decoderfunction.hpp +++ b/server/src/hardware/decoder/decoderfunction.hpp @@ -74,6 +74,8 @@ class DecoderFunction : public Object { return m_scheduledTimeout; } + + inline bool hasTimeout() const { return timeoutSeconds.value() > 0; } }; #endif