From e8708d00fd791a9b5c8f36641357f56cf8b0d307 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 22 Jul 2015 01:45:57 +0200 Subject: [PATCH] Corrected intempestive trigger on pre-trigger delay condition --- sdrbase/dsp/scopevis.cpp | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/sdrbase/dsp/scopevis.cpp b/sdrbase/dsp/scopevis.cpp index dc208cb7c..a08f5f7c8 100644 --- a/sdrbase/dsp/scopevis.cpp +++ b/sdrbase/dsp/scopevis.cpp @@ -82,25 +82,28 @@ void ScopeVis::feed(SampleVector::const_iterator begin, SampleVector::const_iter while(begin < end) { bool trigger = triggerCondition(begin); - if ((trigger ^ !m_triggerPositiveEdge) && (m_tracebackCount > m_triggerPre)) + if (m_tracebackCount > m_triggerPre) { - if (m_armed) - { - m_triggerState = Triggered; - m_armed = false; - m_triggerPoint = begin; - // fill beginning of m_trace with delayed samples from the trace memory FIFO. Increment m_fill accordingly. - if (m_triggerPre) { // do this process only if there is a pre-trigger delay - std::copy(m_traceback.end() - m_triggerPre - 1, m_traceback.end() - 1, m_trace.begin()); - m_fill = m_triggerPre; // Increment m_fill accordingly (from 0). - } - break; + if (trigger ^ !m_triggerPositiveEdge) + { + if (m_armed) + { + m_triggerState = Triggered; + m_armed = false; + m_triggerPoint = begin; + // fill beginning of m_trace with delayed samples from the trace memory FIFO. Increment m_fill accordingly. + if (m_triggerPre) { // do this process only if there is a pre-trigger delay + std::copy(m_traceback.end() - m_triggerPre - 1, m_traceback.end() - 1, m_trace.begin()); + m_fill = m_triggerPre; // Increment m_fill accordingly (from 0). + } + break; + } } - } - else - { - m_armed = true; - } + else + { + m_armed = true; + } + } ++begin; } }