1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-12-22 17:45:48 -05:00

Added one shot trigger option

This commit is contained in:
f4exb 2015-07-14 02:18:55 +02:00
parent c32f2b72f7
commit 9161e867c9
5 changed files with 52 additions and 2 deletions

View File

@ -22,6 +22,7 @@ public:
ScopeVis(GLScope* glScope = NULL); ScopeVis(GLScope* glScope = NULL);
void configure(MessageQueue* msgQueue, TriggerChannel triggerChannel, Real triggerLevel, bool triggerPositiveEdge); void configure(MessageQueue* msgQueue, TriggerChannel triggerChannel, Real triggerLevel, bool triggerPositiveEdge);
void setOneShot(bool oneShot);
void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly); void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
void start(); void start();
@ -72,6 +73,7 @@ private:
TriggerChannel m_triggerChannel; TriggerChannel m_triggerChannel;
Real m_triggerLevel; Real m_triggerLevel;
bool m_triggerPositiveEdge; bool m_triggerPositiveEdge;
bool m_triggerOneShot;
bool m_armed; bool m_armed;
int m_sampleRate; int m_sampleRate;

View File

@ -79,6 +79,7 @@ private slots:
void on_trigMode_currentIndexChanged(int index); void on_trigMode_currentIndexChanged(int index);
void on_slopePos_clicked(); void on_slopePos_clicked();
void on_slopeNeg_clicked(); void on_slopeNeg_clicked();
void on_oneShot_clicked();
void on_trigLevel_valueChanged(int value); void on_trigLevel_valueChanged(int value);
}; };

View File

@ -16,6 +16,7 @@ ScopeVis::ScopeVis(GLScope* glScope) :
m_triggerChannel(TriggerFreeRun), m_triggerChannel(TriggerFreeRun),
m_triggerLevel(0.0), m_triggerLevel(0.0),
m_triggerPositiveEdge(true), m_triggerPositiveEdge(true),
m_triggerOneShot(false),
m_armed(false), m_armed(false),
m_sampleRate(0) m_sampleRate(0)
{ {
@ -49,6 +50,12 @@ void ScopeVis::feed(SampleVector::const_iterator begin, SampleVector::const_iter
} }
else else
{ {
if(m_triggerState == WaitForReset)
{
if (!m_triggerOneShot) {
m_triggerState = Untriggered;
}
}
if(m_triggerState == Untriggered) if(m_triggerState == Untriggered)
{ {
while(begin < end) while(begin < end)
@ -80,7 +87,11 @@ void ScopeVis::feed(SampleVector::const_iterator begin, SampleVector::const_iter
if(m_fill >= m_trace.size()) { if(m_fill >= m_trace.size()) {
m_glScope->newTrace(m_trace, m_sampleRate); m_glScope->newTrace(m_trace, m_sampleRate);
m_fill = 0; m_fill = 0;
m_triggerState = Untriggered; if (m_triggerOneShot) {
m_triggerState = WaitForReset;
} else {
m_triggerState = Untriggered;
}
} }
} }
} }
@ -168,3 +179,8 @@ bool ScopeVis::triggerCondition(SampleVector::const_iterator& it)
return false; return false;
} }
} }
void ScopeVis::setOneShot(bool oneShot)
{
m_triggerOneShot = oneShot;
}

View File

@ -426,6 +426,11 @@ void GLScopeGUI::on_slopeNeg_clicked()
applyTriggerSettings(); applyTriggerSettings();
} }
void GLScopeGUI::on_oneShot_clicked()
{
m_scopeVis->setOneShot(ui->oneShot->isChecked());
}
bool GLScopeGUI::handleMessage(Message* cmd) bool GLScopeGUI::handleMessage(Message* cmd)
{ {
return false; return false;

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>807</width> <width>807</width>
<height>67</height> <height>69</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -625,6 +625,32 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QToolButton" name="oneShot">
<property name="toolTip">
<string>One shot</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../resources/res.qrc">
<normaloff>:/display1_w.png</normaloff>:/display1_w.png</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>