1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-09-28 15:56:33 -04:00

WFM demod: added display of channel power in dB. Changed minus radio button for a iconified toggle button

This commit is contained in:
f4exb 2015-10-04 07:14:44 +02:00
parent 438df2975e
commit 52dafd994b
4 changed files with 266 additions and 209 deletions

View File

@ -43,6 +43,8 @@ public:
virtual void stop(); virtual void stop();
virtual bool handleMessage(const Message& cmd); virtual bool handleMessage(const Message& cmd);
Real getMagSq() const { return m_movingAverage.average(); }
private: private:
class MsgConfigureWFMDemod : public Message { class MsgConfigureWFMDemod : public Message {
MESSAGE_CLASS_DECLARATION MESSAGE_CLASS_DECLARATION

View File

@ -8,7 +8,9 @@
#include "gui/glspectrum.h" #include "gui/glspectrum.h"
#include "plugin/pluginapi.h" #include "plugin/pluginapi.h"
#include "util/simpleserializer.h" #include "util/simpleserializer.h"
#include "util/db.h"
#include "gui/basicchannelsettingswidget.h" #include "gui/basicchannelsettingswidget.h"
#include "mainwindow.h"
#include "wfmdemod.h" #include "wfmdemod.h"
#include "wfmdemodgui.h" #include "wfmdemodgui.h"
@ -143,7 +145,7 @@ void WFMDemodGUI::viewChanged()
applySettings(); applySettings();
} }
void WFMDemodGUI::on_deltaMinus_clicked(bool minus) void WFMDemodGUI::on_deltaMinus_toggled(bool minus)
{ {
int deltaFrequency = m_channelMarker.getCenterFrequency(); int deltaFrequency = m_channelMarker.getCenterFrequency();
bool minusDelta = (deltaFrequency < 0); bool minusDelta = (deltaFrequency < 0);
@ -226,6 +228,8 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this); m_threadedChannelizer = new ThreadedSampleSink(m_channelizer, this);
DSPEngine::instance()->addThreadedSink(m_threadedChannelizer); DSPEngine::instance()->addThreadedSink(m_threadedChannelizer);
connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
//m_channelMarker = new ChannelMarker(this); //m_channelMarker = new ChannelMarker(this);
m_channelMarker.setColor(Qt::blue); m_channelMarker.setColor(Qt::blue);
m_channelMarker.setBandwidth(12500); m_channelMarker.setBandwidth(12500);
@ -288,3 +292,8 @@ void WFMDemodGUI::enterEvent(QEvent*)
blockApplySettings(false); blockApplySettings(false);
} }
void WFMDemodGUI::tick()
{
Real powDb = CalcDb::dbPower(m_wfmDemod->getMagSq());
ui->channelPower->setText(QString::number(powDb, 'f', 1));
}

View File

@ -36,13 +36,14 @@ public:
private slots: private slots:
void viewChanged(); void viewChanged();
void on_deltaFrequency_changed(quint64 value); void on_deltaFrequency_changed(quint64 value);
void on_deltaMinus_clicked(bool minus); void on_deltaMinus_toggled(bool minus);
void on_rfBW_valueChanged(int value); void on_rfBW_valueChanged(int value);
void on_afBW_valueChanged(int value); void on_afBW_valueChanged(int value);
void on_volume_valueChanged(int value); void on_volume_valueChanged(int value);
void on_squelch_valueChanged(int value); void on_squelch_valueChanged(int value);
void onWidgetRolled(QWidget* widget, bool rollDown); void onWidgetRolled(QWidget* widget, bool rollDown);
void onMenuDoubleClicked(); void onMenuDoubleClicked();
void tick();
private: private:
Ui::WFMDemodGUI* ui; Ui::WFMDemodGUI* ui;

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>302</width> <width>302</width>
<height>138</height> <height>399</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -18,14 +18,17 @@
<rect> <rect>
<x>35</x> <x>35</x>
<y>35</y> <y>35</y>
<width>242</width> <width>106</width>
<height>96</height> <height>349</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Settings</string> <string>Settings</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin"> <property name="leftMargin">
<number>2</number> <number>2</number>
</property> </property>
@ -38,212 +41,252 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
<property name="spacing"> <item>
<number>3</number> <layout class="QHBoxLayout" name="deltaFreqiencyLayout">
</property> <item>
<item row="3" column="1"> <widget class="QToolButton" name="deltaMinus">
<widget class="QSlider" name="volume"> <property name="text">
<property name="maximum"> <string>...</string>
<number>100</number> </property>
</property> <property name="icon">
<property name="value"> <iconset>
<number>20</number> <selectedoff>:/plus.png</selectedoff>
</property> <selectedon>:/minus.png</selectedon>
<property name="orientation"> </iconset>
<enum>Qt::Horizontal</enum> </property>
</property> <property name="checkable">
</widget> <bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="ValueDial" name="deltaFrequency" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>16</height>
</size>
</property>
<property name="font">
<font>
<family>Monospace</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="cursor">
<cursorShape>SizeVerCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="toolTip">
<string>Demod shift frequency from center in Hz</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="deltaUnits">
<property name="text">
<string>Hz </string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="channelPower">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string>0.0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="channelPowerUnits">
<property name="text">
<string> dB</string>
</property>
</widget>
</item>
</layout>
</item> </item>
<item row="1" column="1"> <item>
<widget class="QSlider" name="rfBW"> <layout class="QHBoxLayout" name="rfBandwidthLayout">
<property name="maximum"> <item>
<number>8</number> <widget class="QLabel" name="label">
</property> <property name="text">
<property name="pageStep"> <string>RF BW</string>
<number>1</number> </property>
</property> </widget>
<property name="value"> </item>
<number>4</number> <item>
</property> <widget class="QSlider" name="rfBW">
<property name="orientation"> <property name="maximum">
<enum>Qt::Horizontal</enum> <number>8</number>
</property> </property>
</widget> <property name="pageStep">
<number>1</number>
</property>
<property name="value">
<number>4</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="rfBWText">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>12.5kHz</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item> </item>
<item row="0" column="0"> <item>
<widget class="QRadioButton" name="deltaMinus"> <layout class="QHBoxLayout" name="afBandwidthLayout">
<property name="layoutDirection"> <item>
<enum>Qt::RightToLeft</enum> <widget class="QLabel" name="label_2">
</property> <property name="text">
<property name="text"> <string>AF BW</string>
<string>Minus</string> </property>
</property> </widget>
</widget> </item>
<item>
<widget class="QSlider" name="afBW">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>20</number>
</property>
<property name="pageStep">
<number>1</number>
</property>
<property name="value">
<number>3</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="afBWText">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>3 kHz</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item> </item>
<item row="4" column="0"> <item>
<widget class="QLabel" name="label_4"> <layout class="QHBoxLayout" name="volumeLayout">
<property name="text"> <item>
<string>Squelch</string> <widget class="QLabel" name="label_3">
</property> <property name="text">
</widget> <string>Vol</string>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="volume">
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>20</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="volumeText">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>2.0</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item> </item>
<item row="2" column="0"> <item>
<widget class="QLabel" name="label_2"> <layout class="QHBoxLayout" name="squelchLayout">
<property name="text"> <item>
<string>AF Bandwidth</string> <widget class="QLabel" name="label_4">
</property> <property name="text">
</widget> <string>Sq</string>
</item> </property>
<item row="4" column="1"> </widget>
<widget class="QSlider" name="squelch"> </item>
<property name="minimum"> <item>
<number>-100</number> <widget class="QSlider" name="squelch">
</property> <property name="minimum">
<property name="maximum"> <number>-100</number>
<number>0</number> </property>
</property> <property name="maximum">
<property name="value"> <number>0</number>
<number>-40</number> </property>
</property> <property name="value">
<property name="orientation"> <number>-40</number>
<enum>Qt::Horizontal</enum> </property>
</property> <property name="orientation">
</widget> <enum>Qt::Horizontal</enum>
</item> </property>
<item row="1" column="2"> </widget>
<widget class="QLabel" name="rfBWText"> </item>
<property name="minimumSize"> <item>
<size> <widget class="QLabel" name="squelchText">
<width>50</width> <property name="minimumSize">
<height>0</height> <size>
</size> <width>50</width>
</property> <height>0</height>
<property name="text"> </size>
<string>12.5kHz</string> </property>
</property> <property name="text">
<property name="alignment"> <string>-40dB</string>
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property>
</property> <property name="alignment">
</widget> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</item> </property>
<item row="1" column="0"> </widget>
<widget class="QLabel" name="label"> </item>
<property name="text"> </layout>
<string>RF Bandwidth</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="afBWText">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>3 kHz</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSlider" name="afBW">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>20</number>
</property>
<property name="pageStep">
<number>1</number>
</property>
<property name="value">
<number>3</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="squelchText">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>-40dB</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Volume</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="volumeText">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>2.0</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="ValueDial" name="deltaFrequency" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>16</height>
</size>
</property>
<property name="font">
<font>
<family>Monospace</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="cursor">
<cursorShape>SizeVerCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="toolTip">
<string>Demod shift frequency from center in Hz</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="deltaUnits">
<property name="text">
<string>Hz</string>
</property>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
@ -262,6 +305,8 @@
<container>1</container> <container>1</container>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources/> <resources>
<include location="../../../sdrbase/resources/res.qrc"/>
</resources>
<connections/> <connections/>
</ui> </ui>