1
0
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:
f4exb 2015-06-23 22:52:27 +02:00
parent a463b1fbc6
commit b7ed6bd0ce
6 changed files with 66 additions and 10 deletions

View File

@ -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);

View File

@ -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();

View File

@ -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 {

View File

@ -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);

View File

@ -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))

View File

@ -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>