diff --git a/sdrbase/dsp/scopevisng.cpp b/sdrbase/dsp/scopevisng.cpp index 414f1069d..d3f439cd8 100644 --- a/sdrbase/dsp/scopevisng.cpp +++ b/sdrbase/dsp/scopevisng.cpp @@ -381,8 +381,77 @@ bool ScopeVisNG::handleMessage(const Message& message) else if (MsgConfigureScopeVisNG::match(message)) { MsgConfigureScopeVisNG& conf = (MsgConfigureScopeVisNG&) message; + m_traceSize = conf.getTraceSize(); + std::vector::iterator it = m_traces.begin(); + for (; it != m_traces.end(); ++it) { + it->resize(m_traceSize); + } + + m_traceDiscreteMemory.resize(m_traceSize); + + qDebug() << "ScopeVisNG::handleMessage: MsgConfigureScopeVisNG: m_traceSize: " << m_traceSize; + return true; } + else if (MsgScopeVisNGAddTrigger::match(message)) + { + MsgScopeVisNGAddTrigger& conf = (MsgScopeVisNGAddTrigger&) message; + m_triggerConditions.push_back(TriggerCondition(conf.getTriggerData())); + return true; + } + else if (MsgScopeVisNGChangeTrigger::match(message)) + { + MsgScopeVisNGChangeTrigger& conf = (MsgScopeVisNGChangeTrigger&) message; + int triggerIndex = conf.getTriggerIndex(); + if (triggerIndex < m_triggerConditions.size()) { + m_triggerConditions[triggerIndex].setData(conf.getTriggerData()); + } + + return true; + } + else if (MsgScopeVisNGRemoveTrigger::match(message)) + { + MsgScopeVisNGRemoveTrigger& conf = (MsgScopeVisNGRemoveTrigger&) message; + int triggerIndex = conf.getTriggerIndex(); + + if (triggerIndex < m_triggerConditions.size()) { + m_triggerConditions.erase(m_triggerConditions.begin() + triggerIndex); + } + + return true; + } + else if (MsgScopeVisNGAddTrace::match(message)) + { + MsgScopeVisNGAddTrace& conf = (MsgScopeVisNGAddTrace&) message; + m_traces.push_back(Trace(conf.getTraceData(), m_traceSize)); + return true; + } + else if (MsgScopeVisNGChangeTrace::match(message)) + { + MsgScopeVisNGChangeTrace& conf = (MsgScopeVisNGChangeTrace&) message; + int traceIndex = conf.getTraceIndex(); + + if (traceIndex < m_traces.size()) { + m_traces[traceIndex].setData(conf.getTraceData()); + } + + return true; + } + else if (MsgScopeVisNGRemoveTrace::match(message)) + { + MsgScopeVisNGRemoveTrace& conf = (MsgScopeVisNGRemoveTrace&) message; + int traceIndex = conf.getTraceIndex(); + + if (traceIndex < m_traces.size()) { + m_traces.erase(m_traces.begin() + traceIndex); + } + + return true; + } + else + { + return false; + } } diff --git a/sdrbase/dsp/scopevisng.h b/sdrbase/dsp/scopevisng.h index 2d9be90b5..2898283b0 100644 --- a/sdrbase/dsp/scopevisng.h +++ b/sdrbase/dsp/scopevisng.h @@ -148,6 +148,8 @@ private: return new MsgScopeVisNGAddTrigger(triggerData); } + const TriggerData& getTriggerData() const { return m_triggerData; } + private: TriggerData m_triggerData; @@ -167,6 +169,9 @@ private: return new MsgScopeVisNGChangeTrigger(triggerData, triggerIndex); } + const TriggerData& getTriggerData() const { return m_triggerData; } + uint32_t getTriggerIndex() const { return m_triggerIndex; } + private: TriggerData m_triggerData; uint32_t m_triggerIndex; @@ -188,6 +193,8 @@ private: return new MsgScopeVisNGRemoveTrigger(triggerIndex); } + uint32_t getTriggerIndex() const { return m_triggerIndex; } + private: uint32_t m_triggerIndex; @@ -207,6 +214,8 @@ private: return new MsgScopeVisNGAddTrace(traceData); } + const TraceData& getTraceData() const { return m_traceData; } + private: TraceData m_traceData; @@ -226,6 +235,9 @@ private: return new MsgScopeVisNGChangeTrace(traceData, traceIndex); } + const TraceData& getTraceData() const { return m_traceData; } + uint32_t getTraceIndex() const { return m_traceIndex; } + private: TraceData m_traceData; uint32_t m_traceIndex; @@ -247,6 +259,8 @@ private: return new MsgScopeVisNGRemoveTrace(traceIndex); } + uint32_t getTraceIndex() const { return m_traceIndex; } + private: uint32_t m_traceIndex; @@ -499,7 +513,7 @@ private: m_traceCount(0) { m_projector = new Projector(m_traceData.m_projectionType); - m_trace = new float[2*traceSize]; + m_trace = new float[2*m_traceSize]; } ~Trace() diff --git a/sdrbase/gui/glscopenggui.cpp b/sdrbase/gui/glscopenggui.cpp index ebc21edae..e3a9bb5b6 100644 --- a/sdrbase/gui/glscopenggui.cpp +++ b/sdrbase/gui/glscopenggui.cpp @@ -87,6 +87,86 @@ bool GLScopeNGGUI::deserialize(const QByteArray& data) } } +void GLScopeNGGUI::on_onlyX_toggled(bool checked) +{ + if (checked) + { + ui->onlyY->setChecked(false); + ui->horizontalXY->setChecked(false); + ui->verticalXY->setChecked(false); + ui->polar->setChecked(false); + m_glScope->setDisplayMode(GLScopeNG::DisplayX); + } +} + +void GLScopeNGGUI::on_onlyY_toggled(bool checked) +{ + if (checked) + { + ui->onlyX->setChecked(false); + ui->horizontalXY->setChecked(false); + ui->verticalXY->setChecked(false); + ui->polar->setChecked(false); + m_glScope->setDisplayMode(GLScopeNG::DisplayY); + } +} + +void GLScopeNGGUI::on_horizontalXY_toggled(bool checked) +{ + if (checked) + { + ui->onlyX->setChecked(false); + ui->onlyY->setChecked(false); + ui->verticalXY->setChecked(false); + ui->polar->setChecked(false); + m_glScope->setDisplayMode(GLScopeNG::DisplayXYH); + } +} + +void GLScopeNGGUI::on_verticalXY_toggled(bool checked) +{ + ui->onlyX->setChecked(false); + ui->onlyY->setChecked(false); + ui->horizontalXY->setChecked(false); + ui->polar->setChecked(false); + m_glScope->setDisplayMode(GLScopeNG::DisplayXYV); +} + +void GLScopeNGGUI::on_polar_toggled(bool checked) +{ + ui->onlyX->setChecked(false); + ui->onlyY->setChecked(false); + ui->horizontalXY->setChecked(false); + ui->verticalXY->setChecked(false); + m_glScope->setDisplayMode(GLScopeNG::DisplayPol); +} + +void GLScopeNGGUI::on_traceIntensity_valueChanged(int value) +{ + +} + +void GLScopeNGGUI::on_gridIntensity_valueChanged(int value) +{ + +} + +void GLScopeNGGUI::on_time_valueChanged(int value) +{ + +} + +void GLScopeNGGUI::on_timeOfs_valueChanged(int value) +{ + +} + +void GLScopeNGGUI::on_traceLen_valueChanged(int value) +{ + +} + + void GLScopeNGGUI::applySettings() { } diff --git a/sdrbase/gui/glscopenggui.h b/sdrbase/gui/glscopenggui.h index 5af47b1ae..d0f4da94c 100644 --- a/sdrbase/gui/glscopenggui.h +++ b/sdrbase/gui/glscopenggui.h @@ -60,6 +60,16 @@ private: private slots: void on_scope_sampleRateChanged(int value); + void on_onlyX_toggled(bool checked); + void on_onlyY_toggled(bool checked); + void on_horizontalXY_toggled(bool checked); + void on_verticalXY_toggled(bool checked); + void on_polar_toggled(bool checked); + void on_traceIntensity_valueChanged(int value); + void on_gridIntensity_valueChanged(int value); + void on_time_valueChanged(int value); + void on_timeOfs_valueChanged(int value); + void on_traceLen_valueChanged(int value); }; diff --git a/sdrbase/gui/glscopenggui.ui b/sdrbase/gui/glscopenggui.ui index 9cc4c9d66..4c17cc2f6 100644 --- a/sdrbase/gui/glscopenggui.ui +++ b/sdrbase/gui/glscopenggui.ui @@ -240,6 +240,12 @@ Trace intensity + + 100 + + + 1 + @@ -253,6 +259,12 @@ Grid intensity + + 100 + + + 1 +