mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-10-01 09:16:39 -04:00
GLScope: implemented trigger counts
This commit is contained in:
parent
1c7bab1762
commit
2917f015ea
@ -35,6 +35,7 @@ public:
|
|||||||
bool triggerBothEdges,
|
bool triggerBothEdges,
|
||||||
uint triggerPre,
|
uint triggerPre,
|
||||||
uint triggerDelay,
|
uint triggerDelay,
|
||||||
|
uint triggerCounts,
|
||||||
uint traceSize);
|
uint traceSize);
|
||||||
void setOneShot(bool oneShot);
|
void setOneShot(bool oneShot);
|
||||||
|
|
||||||
@ -59,6 +60,7 @@ private:
|
|||||||
Real getTriggerBothEdges() const { return m_triggerBothEdges; }
|
Real getTriggerBothEdges() const { return m_triggerBothEdges; }
|
||||||
uint getTriggerPre() const { return m_triggerPre; }
|
uint getTriggerPre() const { return m_triggerPre; }
|
||||||
uint getTriggerDelay() const { return m_triggerDelay; }
|
uint getTriggerDelay() const { return m_triggerDelay; }
|
||||||
|
uint getTriggerCounts() const { return m_triggerCounts; }
|
||||||
uint getTraceSize() const { return m_traceSize; }
|
uint getTraceSize() const { return m_traceSize; }
|
||||||
|
|
||||||
static MsgConfigureScopeVis* create(uint triggerIndex,
|
static MsgConfigureScopeVis* create(uint triggerIndex,
|
||||||
@ -68,6 +70,7 @@ private:
|
|||||||
bool triggerBothEdges,
|
bool triggerBothEdges,
|
||||||
uint triggerPre,
|
uint triggerPre,
|
||||||
uint triggerDelay,
|
uint triggerDelay,
|
||||||
|
uint triggerCounts,
|
||||||
uint traceSize)
|
uint traceSize)
|
||||||
{
|
{
|
||||||
return new MsgConfigureScopeVis(triggerIndex,
|
return new MsgConfigureScopeVis(triggerIndex,
|
||||||
@ -77,6 +80,7 @@ private:
|
|||||||
triggerBothEdges,
|
triggerBothEdges,
|
||||||
triggerPre,
|
triggerPre,
|
||||||
triggerDelay,
|
triggerDelay,
|
||||||
|
triggerCounts,
|
||||||
traceSize);
|
traceSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +92,7 @@ private:
|
|||||||
bool m_triggerBothEdges;
|
bool m_triggerBothEdges;
|
||||||
uint m_triggerPre;
|
uint m_triggerPre;
|
||||||
uint m_triggerDelay;
|
uint m_triggerDelay;
|
||||||
|
uint m_triggerCounts;
|
||||||
uint m_traceSize;
|
uint m_traceSize;
|
||||||
|
|
||||||
MsgConfigureScopeVis(uint triggerIndex,
|
MsgConfigureScopeVis(uint triggerIndex,
|
||||||
@ -97,6 +102,7 @@ private:
|
|||||||
bool triggerBothEdges,
|
bool triggerBothEdges,
|
||||||
uint triggerPre,
|
uint triggerPre,
|
||||||
uint triggerDelay,
|
uint triggerDelay,
|
||||||
|
uint triggerCounts,
|
||||||
uint traceSize) :
|
uint traceSize) :
|
||||||
Message(),
|
Message(),
|
||||||
m_triggerIndex(triggerIndex),
|
m_triggerIndex(triggerIndex),
|
||||||
@ -106,6 +112,7 @@ private:
|
|||||||
m_triggerBothEdges(triggerBothEdges),
|
m_triggerBothEdges(triggerBothEdges),
|
||||||
m_triggerPre(triggerPre),
|
m_triggerPre(triggerPre),
|
||||||
m_triggerDelay(triggerDelay),
|
m_triggerDelay(triggerDelay),
|
||||||
|
m_triggerCounts(triggerCounts),
|
||||||
m_traceSize(traceSize)
|
m_traceSize(traceSize)
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
@ -148,6 +155,8 @@ private:
|
|||||||
bool m_armed;
|
bool m_armed;
|
||||||
uint m_triggerDelay[m_nbTriggers]; //!< Trigger delay in number of trace sizes
|
uint m_triggerDelay[m_nbTriggers]; //!< Trigger delay in number of trace sizes
|
||||||
uint m_triggerDelayCount; //!< trace sizes delay counter
|
uint m_triggerDelayCount; //!< trace sizes delay counter
|
||||||
|
uint m_triggerCounts[m_nbTriggers]; //!< Number of trigger events before the actual trigger is kicked off
|
||||||
|
uint m_triggerCount;
|
||||||
int m_sampleRate;
|
int m_sampleRate;
|
||||||
SampleVector::const_iterator m_triggerPoint;
|
SampleVector::const_iterator m_triggerPoint;
|
||||||
Real m_prevArg;
|
Real m_prevArg;
|
||||||
|
@ -52,6 +52,7 @@ private:
|
|||||||
qint32 m_amp2OffsetFine;
|
qint32 m_amp2OffsetFine;
|
||||||
int m_displayGridIntensity;
|
int m_displayGridIntensity;
|
||||||
int m_displayTraceIntensity;
|
int m_displayTraceIntensity;
|
||||||
|
quint32 m_triggerIndex;
|
||||||
qint32 m_triggerChannel;
|
qint32 m_triggerChannel;
|
||||||
qint32 m_triggerLevelCoarse; // percent of full range
|
qint32 m_triggerLevelCoarse; // percent of full range
|
||||||
qint32 m_triggerLevelFine; // percent of coarse
|
qint32 m_triggerLevelFine; // percent of coarse
|
||||||
@ -59,6 +60,7 @@ private:
|
|||||||
bool m_triggerBothEdges;
|
bool m_triggerBothEdges;
|
||||||
qint32 m_triggerPre;
|
qint32 m_triggerPre;
|
||||||
qint32 m_triggerDelay;
|
qint32 m_triggerDelay;
|
||||||
|
qint32 m_triggerCounts;
|
||||||
qint32 m_traceLenMult;
|
qint32 m_traceLenMult;
|
||||||
|
|
||||||
static const qreal amps[11];
|
static const qreal amps[11];
|
||||||
@ -94,6 +96,7 @@ private slots:
|
|||||||
void on_trigPre_valueChanged(int value);
|
void on_trigPre_valueChanged(int value);
|
||||||
void on_trigDelay_valueChanged(int value);
|
void on_trigDelay_valueChanged(int value);
|
||||||
void on_memHistory_valueChanged(int value);
|
void on_memHistory_valueChanged(int value);
|
||||||
|
void on_trigCount_valueChanged(int value);
|
||||||
|
|
||||||
void on_horizView_clicked();
|
void on_horizView_clicked();
|
||||||
void on_vertView_clicked();
|
void on_vertView_clicked();
|
||||||
|
@ -21,6 +21,7 @@ ScopeVis::ScopeVis(GLScope* glScope) :
|
|||||||
m_triggerDelayCount(0),
|
m_triggerDelayCount(0),
|
||||||
m_triggerOneShot(false),
|
m_triggerOneShot(false),
|
||||||
m_armed(false),
|
m_armed(false),
|
||||||
|
m_triggerCount(0),
|
||||||
m_sampleRate(0),
|
m_sampleRate(0),
|
||||||
m_prevArg(0.0),
|
m_prevArg(0.0),
|
||||||
m_firstArg(true)
|
m_firstArg(true)
|
||||||
@ -37,6 +38,7 @@ ScopeVis::ScopeVis(GLScope* glScope) :
|
|||||||
m_triggerPositiveEdge[i] = true;
|
m_triggerPositiveEdge[i] = true;
|
||||||
m_triggerBothEdges[i] = false;
|
m_triggerBothEdges[i] = false;
|
||||||
m_triggerDelay[i] = 0;
|
m_triggerDelay[i] = 0;
|
||||||
|
m_triggerCounts[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,6 +54,7 @@ void ScopeVis::configure(MessageQueue* msgQueue,
|
|||||||
bool triggerBothEdges,
|
bool triggerBothEdges,
|
||||||
uint triggerPre,
|
uint triggerPre,
|
||||||
uint triggerDelay,
|
uint triggerDelay,
|
||||||
|
uint triggerCounts,
|
||||||
uint traceSize)
|
uint traceSize)
|
||||||
{
|
{
|
||||||
Message* cmd = MsgConfigureScopeVis::create(triggerIndex,
|
Message* cmd = MsgConfigureScopeVis::create(triggerIndex,
|
||||||
@ -61,6 +64,7 @@ void ScopeVis::configure(MessageQueue* msgQueue,
|
|||||||
triggerBothEdges,
|
triggerBothEdges,
|
||||||
triggerPre,
|
triggerPre,
|
||||||
triggerDelay,
|
triggerDelay,
|
||||||
|
triggerCounts,
|
||||||
traceSize);
|
traceSize);
|
||||||
msgQueue->push(cmd);
|
msgQueue->push(cmd);
|
||||||
}
|
}
|
||||||
@ -289,6 +293,7 @@ bool ScopeVis::handleMessage(const Message& message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_triggerDelay[index] = conf.getTriggerDelay();
|
m_triggerDelay[index] = conf.getTriggerDelay();
|
||||||
|
m_triggerCounts[index] = conf.getTriggerCounts();
|
||||||
uint newSize = conf.getTraceSize();
|
uint newSize = conf.getTraceSize();
|
||||||
|
|
||||||
if (newSize != m_trace.size())
|
if (newSize != m_trace.size())
|
||||||
@ -309,6 +314,7 @@ bool ScopeVis::handleMessage(const Message& message)
|
|||||||
<< " m_triggerBothEdges: " << (m_triggerBothEdges[index] ? "yes" : "no")
|
<< " m_triggerBothEdges: " << (m_triggerBothEdges[index] ? "yes" : "no")
|
||||||
<< " m_preTrigger: " << m_triggerPre
|
<< " m_preTrigger: " << m_triggerPre
|
||||||
<< " m_triggerDelay: " << m_triggerDelay[index]
|
<< " m_triggerDelay: " << m_triggerDelay[index]
|
||||||
|
<< " m_triggerCounts: " << m_triggerCounts[index]
|
||||||
<< " m_traceSize: " << m_trace.size();
|
<< " m_traceSize: " << m_trace.size();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -395,10 +401,18 @@ void ScopeVis::setOneShot(bool oneShot)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ScopeVis::nextTrigger()
|
bool ScopeVis::nextTrigger()
|
||||||
|
{
|
||||||
|
if (m_triggerCount < m_triggerCounts[m_triggerIndex])
|
||||||
|
{
|
||||||
|
m_triggerCount++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
m_triggerIndex++;
|
m_triggerIndex++;
|
||||||
m_prevTrigger = false;
|
m_prevTrigger = false;
|
||||||
m_triggerDelayCount = 0;
|
m_triggerDelayCount = 0;
|
||||||
|
m_triggerCount = 0;
|
||||||
m_armed = false;
|
m_armed = false;
|
||||||
|
|
||||||
if (m_triggerIndex == m_nbTriggers)
|
if (m_triggerIndex == m_nbTriggers)
|
||||||
@ -416,3 +430,4 @@ bool ScopeVis::nextTrigger()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -29,6 +29,7 @@ GLScopeGUI::GLScopeGUI(QWidget* parent) :
|
|||||||
m_amp2OffsetFine(0),
|
m_amp2OffsetFine(0),
|
||||||
m_displayGridIntensity(1),
|
m_displayGridIntensity(1),
|
||||||
m_displayTraceIntensity(50),
|
m_displayTraceIntensity(50),
|
||||||
|
m_triggerIndex(0),
|
||||||
m_triggerChannel(ScopeVis::TriggerFreeRun),
|
m_triggerChannel(ScopeVis::TriggerFreeRun),
|
||||||
m_triggerLevelCoarse(0),
|
m_triggerLevelCoarse(0),
|
||||||
m_triggerLevelFine(0),
|
m_triggerLevelFine(0),
|
||||||
@ -36,6 +37,7 @@ GLScopeGUI::GLScopeGUI(QWidget* parent) :
|
|||||||
m_triggerBothEdges(false),
|
m_triggerBothEdges(false),
|
||||||
m_triggerPre(0),
|
m_triggerPre(0),
|
||||||
m_triggerDelay(0),
|
m_triggerDelay(0),
|
||||||
|
m_triggerCounts(0),
|
||||||
m_traceLenMult(20)
|
m_traceLenMult(20)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
@ -246,13 +248,14 @@ void GLScopeGUI::applyTriggerSettings()
|
|||||||
m_glScope->setTriggerPre(m_triggerPre/100.0); // [0.0, 1.0]
|
m_glScope->setTriggerPre(m_triggerPre/100.0); // [0.0, 1.0]
|
||||||
|
|
||||||
m_scopeVis->configure(m_messageQueue,
|
m_scopeVis->configure(m_messageQueue,
|
||||||
0, // FIXME
|
0, // FIXME: trigger index
|
||||||
(ScopeVis::TriggerChannel) m_triggerChannel,
|
(ScopeVis::TriggerChannel) m_triggerChannel,
|
||||||
triggerLevel,
|
triggerLevel,
|
||||||
m_triggerPositiveEdge,
|
m_triggerPositiveEdge,
|
||||||
m_triggerBothEdges,
|
m_triggerBothEdges,
|
||||||
preTriggerSamples,
|
preTriggerSamples,
|
||||||
m_triggerDelay,
|
m_triggerDelay,
|
||||||
|
m_triggerCounts,
|
||||||
m_traceLenMult * ScopeVis::m_traceChunkSize);
|
m_traceLenMult * ScopeVis::m_traceChunkSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -748,6 +751,17 @@ void GLScopeGUI::on_memHistory_valueChanged(int value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GLScopeGUI::on_trigCount_valueChanged(int value)
|
||||||
|
{
|
||||||
|
m_triggerCounts = value;
|
||||||
|
|
||||||
|
QString text;
|
||||||
|
text.sprintf("%02d", value);
|
||||||
|
ui->trigCountText->setText(text);
|
||||||
|
|
||||||
|
applyTriggerSettings();
|
||||||
|
}
|
||||||
|
|
||||||
void GLScopeGUI::on_slopePos_clicked()
|
void GLScopeGUI::on_slopePos_clicked()
|
||||||
{
|
{
|
||||||
m_triggerPositiveEdge = true;
|
m_triggerPositiveEdge = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user