1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-08-25 08:52:26 -04:00

New scope: focused trigger change

This commit is contained in:
f4exb 2017-02-11 10:36:10 +01:00
parent 76cdb94d34
commit c8aa0dc4b8
3 changed files with 54 additions and 6 deletions

View File

@ -24,6 +24,7 @@ MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgConfigureScopeVisNG, Message)
MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGAddTrigger, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGAddTrigger, Message)
MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGChangeTrigger, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGChangeTrigger, Message)
MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGRemoveTrigger, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGRemoveTrigger, Message)
MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGFocusOnTrigger, Message)
MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGAddTrace, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGAddTrace, Message)
MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGChangeTrace, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGChangeTrace, Message)
MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGRemoveTrace, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGRemoveTrace, Message)
@ -113,6 +114,12 @@ void ScopeVisNG::removeTrigger(uint32_t triggerIndex)
getInputMessageQueue()->push(cmd); getInputMessageQueue()->push(cmd);
} }
void ScopeVisNG::focusOnTrigger(uint32_t triggerIndex)
{
Message* cmd = MsgScopeVisNGFocusOnTrigger::create(triggerIndex);
getInputMessageQueue()->push(cmd);
}
void ScopeVisNG::feed(const SampleVector::const_iterator& cbegin, const SampleVector::const_iterator& end, bool positiveOnly) void ScopeVisNG::feed(const SampleVector::const_iterator& cbegin, const SampleVector::const_iterator& end, bool positiveOnly)
{ {
@ -512,12 +519,27 @@ bool ScopeVisNG::handleMessage(const Message& message)
return true; return true;
} }
else if (MsgScopeVisNGFocusOnTrigger::match(message))
{
MsgScopeVisNGFocusOnTrigger& conf = (MsgScopeVisNGFocusOnTrigger&) message;
int triggerIndex = conf.getTriggerIndex();
if (triggerIndex < m_triggerConditions.size())
{
m_focusedTriggerIndex = triggerIndex;
computeDisplayTriggerLevels();
m_glScope->updateDisplay();
}
return true;
}
else if (MsgScopeVisNGAddTrace::match(message)) else if (MsgScopeVisNGAddTrace::match(message))
{ {
MsgScopeVisNGAddTrace& conf = (MsgScopeVisNGAddTrace&) message; MsgScopeVisNGAddTrace& conf = (MsgScopeVisNGAddTrace&) message;
m_traces.addTrace(conf.getTraceData(), m_traceSize); m_traces.addTrace(conf.getTraceData(), m_traceSize);
initTraceBuffers(); initTraceBuffers();
updateMaxTraceDelay(); updateMaxTraceDelay();
computeDisplayTriggerLevels();
m_glScope->updateDisplay(); m_glScope->updateDisplay();
return true; return true;
} }
@ -527,6 +549,7 @@ bool ScopeVisNG::handleMessage(const Message& message)
bool doComputeTriggerLevelsOnDisplay = m_traces.isVerticalDisplayChange(conf.getTraceData(), conf.getTraceIndex()); bool doComputeTriggerLevelsOnDisplay = m_traces.isVerticalDisplayChange(conf.getTraceData(), conf.getTraceIndex());
m_traces.changeTrace(conf.getTraceData(), conf.getTraceIndex()); m_traces.changeTrace(conf.getTraceData(), conf.getTraceIndex());
updateMaxTraceDelay(); updateMaxTraceDelay();
if (doComputeTriggerLevelsOnDisplay) computeDisplayTriggerLevels();
m_glScope->updateDisplay(); m_glScope->updateDisplay();
return true; return true;
} }
@ -535,6 +558,7 @@ bool ScopeVisNG::handleMessage(const Message& message)
MsgScopeVisNGRemoveTrace& conf = (MsgScopeVisNGRemoveTrace&) message; MsgScopeVisNGRemoveTrace& conf = (MsgScopeVisNGRemoveTrace&) message;
m_traces.removeTrace(conf.getTraceIndex()); m_traces.removeTrace(conf.getTraceIndex());
updateMaxTraceDelay(); updateMaxTraceDelay();
computeDisplayTriggerLevels();
m_glScope->updateDisplay(); m_glScope->updateDisplay();
return true; return true;
} }
@ -585,7 +609,7 @@ void ScopeVisNG::computeDisplayTriggerLevels()
for (; itData != m_traces.m_tracesData.end(); ++itData) for (; itData != m_traces.m_tracesData.end(); ++itData)
{ {
if (m_triggerConditions[m_focusedTriggerIndex].m_projector->getProjectionType() == itData->m_projectionType) if ((m_focusedTriggerIndex < m_triggerConditions.size()) && (m_triggerConditions[m_focusedTriggerIndex].m_projector->getProjectionType() == itData->m_projectionType))
{ {
float level = m_triggerConditions[m_focusedTriggerIndex].m_triggerData.m_triggerLevel; float level = m_triggerConditions[m_focusedTriggerIndex].m_triggerData.m_triggerLevel;
float levelPowerLin = level + 1.0f; float levelPowerLin = level + 1.0f;

View File

@ -108,6 +108,7 @@ public:
void addTrigger(const TriggerData& triggerData); void addTrigger(const TriggerData& triggerData);
void changeTrigger(const TriggerData& triggerData, uint32_t triggerIndex); void changeTrigger(const TriggerData& triggerData, uint32_t triggerIndex);
void removeTrigger(uint32_t triggerIndex); void removeTrigger(uint32_t triggerIndex);
void focusOnTrigger(uint32_t triggerIndex);
void getTriggerData(TriggerData& triggerData, uint32_t triggerIndex) void getTriggerData(TriggerData& triggerData, uint32_t triggerIndex)
{ {
@ -230,6 +231,27 @@ private:
{} {}
}; };
// ---------------------------------------------
class MsgScopeVisNGFocusOnTrigger : public Message {
MESSAGE_CLASS_DECLARATION
public:
static MsgScopeVisNGFocusOnTrigger* create(
uint32_t triggerIndex)
{
return new MsgScopeVisNGFocusOnTrigger(triggerIndex);
}
uint32_t getTriggerIndex() const { return m_triggerIndex; }
private:
uint32_t m_triggerIndex;
MsgScopeVisNGFocusOnTrigger(uint32_t triggerIndex) :
m_triggerIndex(triggerIndex)
{}
};
// --------------------------------------------- // ---------------------------------------------
class MsgScopeVisNGAddTrace : public Message { class MsgScopeVisNGAddTrace : public Message {
MESSAGE_CLASS_DECLARATION MESSAGE_CLASS_DECLARATION

View File

@ -67,16 +67,16 @@ void GLScopeNGGUI::setBuddies(MessageQueue* messageQueue, ScopeVisNG* scopeVis,
ui->trigOneShot->setEnabled(false); ui->trigOneShot->setEnabled(false);
ui->freerun->setChecked(true); ui->freerun->setChecked(true);
// Add a trace
ScopeVisNG::TraceData traceData;
fillTraceData(traceData);
m_scopeVis->addTrace(traceData);
// Add a trigger // Add a trigger
ScopeVisNG::TriggerData triggerData; ScopeVisNG::TriggerData triggerData;
fillTriggerData(triggerData); fillTriggerData(triggerData);
m_scopeVis->addTrigger(triggerData); m_scopeVis->addTrigger(triggerData);
// Add a trace
ScopeVisNG::TraceData traceData;
fillTraceData(traceData);
m_scopeVis->addTrace(traceData);
setEnabled(true); setEnabled(true);
connect(m_glScope, SIGNAL(sampleRateChanged(int)), this, SLOT(on_scope_sampleRateChanged(int))); connect(m_glScope, SIGNAL(sampleRateChanged(int)), this, SLOT(on_scope_sampleRateChanged(int)));
@ -272,6 +272,8 @@ void GLScopeNGGUI::on_trig_valueChanged(int value)
<< " m_triggerLevel" << triggerData.m_triggerLevel; << " m_triggerLevel" << triggerData.m_triggerLevel;
setTriggerUI(triggerData); setTriggerUI(triggerData);
m_scopeVis->focusOnTrigger(value);
} }
void GLScopeNGGUI::on_trigAdd_clicked(bool checked) void GLScopeNGGUI::on_trigAdd_clicked(bool checked)