mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05:00 
			
		
		
		
	Scope: comments and fixes mostly doubling trace size so that enough memory is present before trigger
This commit is contained in:
		
							parent
							
								
									02a6cee99f
								
							
						
					
					
						commit
						c1511d255e
					
				@ -219,6 +219,15 @@ void ScopeVis::setMemoryIndex(uint32_t memoryIndex)
 | 
				
			|||||||
void ScopeVis::feed(const SampleVector::const_iterator& cbegin, const SampleVector::const_iterator& end, bool positiveOnly)
 | 
					void ScopeVis::feed(const SampleVector::const_iterator& cbegin, const SampleVector::const_iterator& end, bool positiveOnly)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    (void) positiveOnly;
 | 
					    (void) positiveOnly;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (m_currentTraceMemoryIndex > 0) { // in memory mode live trace is suspended
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!m_mutex.tryLock(0)) { // prevent conflicts with configuration process
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (m_freeRun) {
 | 
					    if (m_freeRun) {
 | 
				
			||||||
        m_triggerPoint = cbegin;
 | 
					        m_triggerPoint = cbegin;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -228,41 +237,36 @@ void ScopeVis::feed(const SampleVector::const_iterator& cbegin, const SampleVect
 | 
				
			|||||||
    else if (m_triggerState == TriggerUntriggered) {
 | 
					    else if (m_triggerState == TriggerUntriggered) {
 | 
				
			||||||
        m_triggerPoint = end;
 | 
					        m_triggerPoint = end;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else if ((m_triggerWaitForReset) || (m_currentTraceMemoryIndex > 0)) {
 | 
					    else if (m_triggerWaitForReset) {
 | 
				
			||||||
        m_triggerPoint = end;
 | 
					        m_triggerPoint = end;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
        m_triggerPoint = cbegin;
 | 
					        m_triggerPoint = cbegin;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ((m_triggerWaitForReset) || (m_currentTraceMemoryIndex > 0)) {
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if(!m_mutex.tryLock(2)) // prevent conflicts with configuration process
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    SampleVector::const_iterator begin(cbegin);
 | 
					    SampleVector::const_iterator begin(cbegin);
 | 
				
			||||||
    int triggerPointToEnd;
 | 
					    int triggerPointToEnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (begin < end)
 | 
					    while (begin < end)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (begin + m_traceSize > end)
 | 
					        if (begin + m_traceSize > end) // buffer smaller than trace size (end - bagin) < m_traceSize
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            triggerPointToEnd = -1;
 | 
					            triggerPointToEnd = -1;
 | 
				
			||||||
            processTrace(begin, end, triggerPointToEnd);
 | 
					            processTrace(begin, end, triggerPointToEnd); // use all buffer
 | 
				
			||||||
            if (triggerPointToEnd >= 0) {
 | 
					            if (triggerPointToEnd >= 0) {
 | 
				
			||||||
                m_triggerPoint = end - triggerPointToEnd;
 | 
					                m_triggerPoint = end - triggerPointToEnd;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            begin = end;
 | 
					
 | 
				
			||||||
 | 
					            begin = end; // effectively breaks out the loop
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else
 | 
					        else // trace size fits in buffer
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            triggerPointToEnd = -1;
 | 
					            triggerPointToEnd = -1;
 | 
				
			||||||
            processTrace(begin, begin + m_traceSize, triggerPointToEnd);
 | 
					            processTrace(begin, begin + m_traceSize, triggerPointToEnd); // use part of buffer to fit trace size
 | 
				
			||||||
            if (triggerPointToEnd >= 0) {
 | 
					            if (triggerPointToEnd >= 0) {
 | 
				
			||||||
                m_triggerPoint = begin + m_traceSize -triggerPointToEnd;
 | 
					                m_triggerPoint = begin + m_traceSize -triggerPointToEnd;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            begin += m_traceSize;
 | 
					            begin += m_traceSize;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -723,7 +723,7 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    		for (std::vector<TraceBackBuffer>::iterator it = m_traceBackBuffers.begin(); it != m_traceBackBuffers.end(); ++it)
 | 
					    		for (std::vector<TraceBackBuffer>::iterator it = m_traceBackBuffers.begin(); it != m_traceBackBuffers.end(); ++it)
 | 
				
			||||||
    		{
 | 
					    		{
 | 
				
			||||||
                it->resize(m_traceSize); // was multiplied by 4
 | 
					                it->resize(2*m_traceSize); // was multiplied by 4
 | 
				
			||||||
    		}
 | 
					    		}
 | 
				
			||||||
    	}
 | 
					    	}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user