mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-06-25 05:25:27 -04: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