mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 01:39:05 -05:00
Channel Analyzer: added button to control grid itensity and serialize/deserialize scope settings
This commit is contained in:
parent
a463b1fbc6
commit
b7ed6bd0ce
@ -50,6 +50,7 @@ public:
|
|||||||
void setTimeOfsProMill(int timeOfsProMill);
|
void setTimeOfsProMill(int timeOfsProMill);
|
||||||
void setMode(Mode mode);
|
void setMode(Mode mode);
|
||||||
void setOrientation(Qt::Orientation orientation);
|
void setOrientation(Qt::Orientation orientation);
|
||||||
|
void setDisplayGridIntensity(int intensity);
|
||||||
|
|
||||||
void newTrace(const std::vector<Complex>& trace, int sampleRate);
|
void newTrace(const std::vector<Complex>& trace, int sampleRate);
|
||||||
|
|
||||||
@ -93,6 +94,7 @@ private:
|
|||||||
// graphics stuff
|
// graphics stuff
|
||||||
QRectF m_glScopeRect1;
|
QRectF m_glScopeRect1;
|
||||||
QRectF m_glScopeRect2;
|
QRectF m_glScopeRect2;
|
||||||
|
int m_displayGridIntensity;
|
||||||
|
|
||||||
void initializeGL();
|
void initializeGL();
|
||||||
void resizeGL(int width, int height);
|
void resizeGL(int width, int height);
|
||||||
|
@ -43,6 +43,7 @@ private:
|
|||||||
qint32 m_timeBase;
|
qint32 m_timeBase;
|
||||||
qint32 m_timeOffset;
|
qint32 m_timeOffset;
|
||||||
qint32 m_amplification;
|
qint32 m_amplification;
|
||||||
|
int m_displayGridIntensity;
|
||||||
|
|
||||||
void applySettings();
|
void applySettings();
|
||||||
|
|
||||||
@ -52,6 +53,7 @@ private slots:
|
|||||||
void on_time_valueChanged(int value);
|
void on_time_valueChanged(int value);
|
||||||
void on_timeOfs_valueChanged(int value);
|
void on_timeOfs_valueChanged(int value);
|
||||||
void on_dataMode_currentIndexChanged(int index);
|
void on_dataMode_currentIndexChanged(int index);
|
||||||
|
void on_gridIntensity_valueChanged(int index);
|
||||||
|
|
||||||
void on_horizView_clicked();
|
void on_horizView_clicked();
|
||||||
void on_vertView_clicked();
|
void on_vertView_clicked();
|
||||||
|
@ -55,6 +55,7 @@ QByteArray ChannelAnalyzerGUI::serialize() const
|
|||||||
s.writeS32(5, ui->lowCut->value());
|
s.writeS32(5, ui->lowCut->value());
|
||||||
s.writeS32(6, ui->spanLog2->value());
|
s.writeS32(6, ui->spanLog2->value());
|
||||||
s.writeBool(7, ui->ssb->isChecked());
|
s.writeBool(7, ui->ssb->isChecked());
|
||||||
|
s.writeBlob(8, ui->scopeGUI->serialize());
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,6 +88,8 @@ bool ChannelAnalyzerGUI::deserialize(const QByteArray& data)
|
|||||||
setNewRate(tmp);
|
setNewRate(tmp);
|
||||||
d.readBool(7, &tmpBool, false);
|
d.readBool(7, &tmpBool, false);
|
||||||
ui->ssb->setChecked(tmpBool);
|
ui->ssb->setChecked(tmpBool);
|
||||||
|
d.readBlob(8, &bytetmp);
|
||||||
|
ui->scopeGUI->deserialize(bytetmp);
|
||||||
applySettings();
|
applySettings();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,7 +24,8 @@ GLScope::GLScope(QWidget* parent) :
|
|||||||
m_amp(1.0),
|
m_amp(1.0),
|
||||||
m_timeBase(1),
|
m_timeBase(1),
|
||||||
m_timeOfsProMill(0),
|
m_timeOfsProMill(0),
|
||||||
m_triggerChannel(ScopeVis::TriggerFreeRun)
|
m_triggerChannel(ScopeVis::TriggerFreeRun),
|
||||||
|
m_displayGridIntensity(5)
|
||||||
{
|
{
|
||||||
setAttribute(Qt::WA_OpaquePaintEvent);
|
setAttribute(Qt::WA_OpaquePaintEvent);
|
||||||
connect(&m_timer, SIGNAL(timeout()), this, SLOT(tick()));
|
connect(&m_timer, SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
@ -80,6 +81,15 @@ void GLScope::setOrientation(Qt::Orientation orientation)
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GLScope::setDisplayGridIntensity(int intensity)
|
||||||
|
{
|
||||||
|
m_displayGridIntensity = intensity;
|
||||||
|
if (m_displayGridIntensity > 100) {
|
||||||
|
m_displayGridIntensity = 100;
|
||||||
|
}
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void GLScope::newTrace(const std::vector<Complex>& trace, int sampleRate)
|
void GLScope::newTrace(const std::vector<Complex>& trace, int sampleRate)
|
||||||
{
|
{
|
||||||
if(!m_mutex.tryLock(2))
|
if(!m_mutex.tryLock(2))
|
||||||
@ -151,7 +161,7 @@ void GLScope::paintGL()
|
|||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
glLineWidth(1.0f);
|
glLineWidth(1.0f);
|
||||||
glColor4f(1, 1, 1, 0.05f);
|
glColor4f(1, 1, 1, m_displayGridIntensity / 100.0);
|
||||||
for(int i = 1; i < 10; i++) {
|
for(int i = 1; i < 10; i++) {
|
||||||
glBegin(GL_LINE_LOOP);
|
glBegin(GL_LINE_LOOP);
|
||||||
glVertex2f(0, i * 0.1);
|
glVertex2f(0, i * 0.1);
|
||||||
@ -238,7 +248,7 @@ void GLScope::paintGL()
|
|||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
glLineWidth(1.0f);
|
glLineWidth(1.0f);
|
||||||
glColor4f(1, 1, 1, 0.05f);
|
glColor4f(1, 1, 1, m_displayGridIntensity / 100.0);
|
||||||
for(int i = 1; i < 10; i++) {
|
for(int i = 1; i < 10; i++) {
|
||||||
glBegin(GL_LINE_LOOP);
|
glBegin(GL_LINE_LOOP);
|
||||||
glVertex2f(0, i * 0.1);
|
glVertex2f(0, i * 0.1);
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include "util/simpleserializer.h"
|
#include "util/simpleserializer.h"
|
||||||
#include "ui_glscopegui.h"
|
#include "ui_glscopegui.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
GLScopeGUI::GLScopeGUI(QWidget* parent) :
|
GLScopeGUI::GLScopeGUI(QWidget* parent) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
@ -17,7 +18,8 @@ GLScopeGUI::GLScopeGUI(QWidget* parent) :
|
|||||||
m_displayOrientation(Qt::Horizontal),
|
m_displayOrientation(Qt::Horizontal),
|
||||||
m_timeBase(1),
|
m_timeBase(1),
|
||||||
m_timeOffset(0),
|
m_timeOffset(0),
|
||||||
m_amplification(0)
|
m_amplification(0),
|
||||||
|
m_displayGridIntensity(1)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
}
|
}
|
||||||
@ -42,6 +44,7 @@ void GLScopeGUI::resetToDefaults()
|
|||||||
m_timeBase = 1;
|
m_timeBase = 1;
|
||||||
m_timeOffset = 0;
|
m_timeOffset = 0;
|
||||||
m_amplification = 0;
|
m_amplification = 0;
|
||||||
|
m_displayGridIntensity = 5;
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,6 +57,7 @@ QByteArray GLScopeGUI::serialize() const
|
|||||||
s.writeS32(3, m_timeBase);
|
s.writeS32(3, m_timeBase);
|
||||||
s.writeS32(4, m_timeOffset);
|
s.writeS32(4, m_timeOffset);
|
||||||
s.writeS32(5, m_amplification);
|
s.writeS32(5, m_amplification);
|
||||||
|
s.writeS32(6, m_displayGridIntensity);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
@ -73,6 +77,7 @@ bool GLScopeGUI::deserialize(const QByteArray& data)
|
|||||||
d.readS32(3, &m_timeBase, 1);
|
d.readS32(3, &m_timeBase, 1);
|
||||||
d.readS32(4, &m_timeOffset, 0);
|
d.readS32(4, &m_timeOffset, 0);
|
||||||
d.readS32(5, &m_amplification, 0);
|
d.readS32(5, &m_amplification, 0);
|
||||||
|
d.readS32(6, &m_displayGridIntensity, 5);
|
||||||
if(m_timeBase < 0)
|
if(m_timeBase < 0)
|
||||||
m_timeBase = 1;
|
m_timeBase = 1;
|
||||||
applySettings();
|
applySettings();
|
||||||
@ -98,6 +103,7 @@ void GLScopeGUI::applySettings()
|
|||||||
ui->time->setValue(m_timeBase);
|
ui->time->setValue(m_timeBase);
|
||||||
ui->timeOfs->setValue(m_timeOffset);
|
ui->timeOfs->setValue(m_timeOffset);
|
||||||
ui->amp->setValue(m_amplification);
|
ui->amp->setValue(m_amplification);
|
||||||
|
ui->gridIntensity->setSliderPosition(m_displayGridIntensity);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLScopeGUI::on_amp_valueChanged(int value)
|
void GLScopeGUI::on_amp_valueChanged(int value)
|
||||||
@ -181,6 +187,13 @@ void GLScopeGUI::on_vertView_clicked()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GLScopeGUI::on_gridIntensity_valueChanged(int index)
|
||||||
|
{
|
||||||
|
m_displayGridIntensity = index;
|
||||||
|
if(m_glScope != NULL)
|
||||||
|
m_glScope->setDisplayGridIntensity(m_displayGridIntensity);
|
||||||
|
}
|
||||||
|
|
||||||
bool GLScopeGUI::handleMessage(Message* cmd)
|
bool GLScopeGUI::handleMessage(Message* cmd)
|
||||||
{
|
{
|
||||||
if(DSPSignalNotification::match(cmd))
|
if(DSPSignalNotification::match(cmd))
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>798</width>
|
<width>807</width>
|
||||||
<height>40</height>
|
<height>34</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -61,27 +61,30 @@
|
|||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Grid intensity</string>
|
||||||
|
</property>
|
||||||
<property name="sizeAdjustPolicy">
|
<property name="sizeAdjustPolicy">
|
||||||
<enum>QComboBox::AdjustToContentsOnFirstShow</enum>
|
<enum>QComboBox::AdjustToContentsOnFirstShow</enum>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>I+Q Level (linear)</string>
|
<string>I+Q (linear)</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Magnitude (linear) + Phase</string>
|
<string>Mag (linear) + Phi</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Magnitude (dB) + Phase</string>
|
<string>Mag (dB) + Phi</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Derived 1st + 2nd order</string>
|
<string>Derived 1+2nd </string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@ -310,6 +313,29 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="ampLine">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDial" name="gridIntensity">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
<property name="pageStep">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
Loading…
Reference in New Issue
Block a user