diff --git a/.gitmodules b/.gitmodules
index 0e24a44..e69de29 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +0,0 @@
-[submodule "opus-tools"]
- path = opus-tools
- url = https://github.com/xiph/opus-tools.git
-[submodule "rtaudio"]
- path = rtaudio
- url = https://github.com/thestk/rtaudio.git
diff --git a/aboutbox.cpp b/aboutbox.cpp
index fa8a6c1..39d0be7 100644
--- a/aboutbox.cpp
+++ b/aboutbox.cpp
@@ -12,7 +12,7 @@ aboutbox::aboutbox(QWidget *parent) :
ui->logoBtn->setIcon(QIcon(":resources/wfview.png"));
ui->logoBtn->setStyleSheet("Text-align:left");
- ui->topText->setText("wfview version 1.1");
+ ui->topText->setText("wfview version 1.2a");
QString head = QString("
");
QString copyright = QString("Copyright 2017-2021 Elliott H. Liggett, W6EL. All rights reserved. wfview source code is licensed under the GNU GPLv3.");
diff --git a/meter.cpp b/meter.cpp
index 154376b..f316a6b 100644
--- a/meter.cpp
+++ b/meter.cpp
@@ -48,13 +48,24 @@ meter::meter(QWidget *parent) : QWidget(parent)
}
-void meter::setMeterType(meterKind type)
+void meter::clearMeterOnPTTtoggle()
{
- if(type == meterType)
- return;
+ // When a meter changes type, such as the fixed S -- TxPo meter,
+ // there is automatic clearing. However, some meters do not switch on thier own,
+ // and thus we are providing this clearing method. We are careful
+ // not to clear meters that don't make sense to clear (such as Vd and Id)
- meterType = type;
- // clear average and peak vectors:
+
+ if( (meterType == meterALC) || (meterType == meterSWR)
+ || (meterType == meterComp) || (meterType == meterTxMod)
+ || (meterType == meterCenter ))
+ {
+ clearMeter();
+ }
+}
+
+void meter::clearMeter()
+{
current = 0;
average = 0;
peak = 0;
@@ -70,6 +81,16 @@ void meter::setMeterType(meterKind type)
update();
}
+void meter::setMeterType(meterKind type)
+{
+ if(type == meterType)
+ return;
+
+ meterType = type;
+ // clear average and peak vectors:
+ this->clearMeter();
+}
+
meterKind meter::getMeterType()
{
return meterType;
@@ -140,6 +161,9 @@ void meter::paintEvent(QPaintEvent *)
peakRedLevel = 100;
drawScaleComp(&painter);
break;
+ case meterNone:
+ return;
+ break;
default:
label = "DN";
peakRedLevel = 241;
diff --git a/meter.h b/meter.h
index 472408f..d94657c 100644
--- a/meter.h
+++ b/meter.h
@@ -24,6 +24,8 @@ public slots:
void updateDrawing(int num);
void setLevels(int current, int peak, int average);
void setLevel(int current);
+ void clearMeterOnPTTtoggle();
+ void clearMeter();
void setMeterType(meterKind type);
void setMeterShortString(QString);
QString getMeterShortString();
@@ -47,8 +49,6 @@ private:
std::vector avgLevels;
std::vector peakLevels;
-
-
int peakRedLevel=0;
bool drawLabels = true;
int mXstart = 0; // Starting point for S=0.
diff --git a/opus-tools b/opus-tools
deleted file mode 160000
index ae5d6d5..0000000
--- a/opus-tools
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit ae5d6d59e82ef40300a4dece7897499685f87184
diff --git a/pttyhandler.cpp b/pttyhandler.cpp
index b671aa0..c958827 100644
--- a/pttyhandler.cpp
+++ b/pttyhandler.cpp
@@ -8,6 +8,7 @@
#include
#include
#include
+#include
#endif
// Copyright 2017-2021 Elliott H. Liggett & Phil Taylor
diff --git a/rtaudio b/rtaudio
deleted file mode 160000
index c9bf99d..0000000
--- a/rtaudio
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c9bf99d414cf81d19ef0ddd00212a4a58ccd99c6
diff --git a/udphandler.cpp b/udphandler.cpp
index 3d71c05..59fbb66 100644
--- a/udphandler.cpp
+++ b/udphandler.cpp
@@ -736,7 +736,7 @@ udpAudio::udpAudio(QHostAddress local, QHostAddress ip, quint16 audioPort, audio
rxaudio->moveToThread(rxAudioThread);
- rxAudioThread->start();
+ rxAudioThread->start(QThread::TimeCriticalPriority);
connect(this, SIGNAL(setupRxAudio(audioSetup)), rxaudio, SLOT(init(audioSetup)));
@@ -754,8 +754,8 @@ udpAudio::udpAudio(QHostAddress local, QHostAddress ip, quint16 audioPort, audio
txaudio->moveToThread(txAudioThread);
- txAudioThread->start();
-
+ txAudioThread->start(QThread::TimeCriticalPriority);
+
connect(this, SIGNAL(setupTxAudio(audioSetup)), txaudio, SLOT(init(audioSetup)));
connect(txAudioThread, SIGNAL(finished()), txaudio, SLOT(deleteLater()));
diff --git a/udpserver.cpp b/udpserver.cpp
index 8627284..0612a02 100644
--- a/udpserver.cpp
+++ b/udpserver.cpp
@@ -385,7 +385,7 @@ void udpServer::controlReceived()
txAudioThread->setPriority(QThread::TimeCriticalPriority);
txaudio->moveToThread(txAudioThread);
- txAudioThread->start();
+ txAudioThread->start(QThread::TimeCriticalPriority);
connect(this, SIGNAL(setupTxAudio(audioSetup)), txaudio, SLOT(init(audioSetup)));
connect(txAudioThread, SIGNAL(finished()), txaudio, SLOT(deleteLater()));
@@ -402,11 +402,12 @@ void udpServer::controlReceived()
inAudio.samplerate = current->rxSampleRate;
rxaudio = new audioHandler();
- rxAudioThread = new QThread(this);
- rxAudioThread->setPriority(QThread::TimeCriticalPriority);
- rxaudio->moveToThread(rxAudioThread);
- rxAudioThread->start();
+ rxAudioThread = new QThread(this);
+
+ rxaudio->moveToThread(rxAudioThread);
+
+ rxAudioThread->start(QThread::TimeCriticalPriority);
connect(this, SIGNAL(setupRxAudio(audioSetup)), rxaudio, SLOT(init(audioSetup)));
connect(rxAudioThread, SIGNAL(finished()), rxaudio, SLOT(deleteLater()));
diff --git a/wfmain.cpp b/wfmain.cpp
index 5e5a30c..f61a580 100644
--- a/wfmain.cpp
+++ b/wfmain.cpp
@@ -689,14 +689,11 @@ void wfmain::setupMainUI()
ui->meter2selectionCombo->addItem("Center", meterCenter);
ui->meter2Widget->hide();
-#ifdef QT_DEBUG
- // Experimental feature:
ui->meter2selectionCombo->show();
+ ui->meter2selectionCombo->setCurrentIndex((int)prefs.meter2Type);
+
ui->secondaryMeterSelectionLabel->show();
-#else
- ui->meter2selectionCombo->hide();
- ui->secondaryMeterSelectionLabel->hide();
-#endif
+
// Future ideas:
//ui->meter2selectionCombo->addItem("Transmit Audio", meterTxMod);
@@ -1334,6 +1331,7 @@ void wfmain::setDefPrefs()
defPrefs.wftheme = static_cast(QCPColorGradient::gpJet);
defPrefs.confirmExit = true;
defPrefs.confirmPowerOff = true;
+ defPrefs.meter2Type = meterNone;
udpDefPrefs.ipAddress = QString("");
udpDefPrefs.controlLANPort = 50001;
@@ -1367,7 +1365,7 @@ void wfmain::loadSettings()
setWindowState(Qt::WindowActive); // Works around QT bug to returns window+keyboard focus.
prefs.confirmExit = settings->value("ConfirmExit", defPrefs.confirmExit).toBool();
prefs.confirmPowerOff = settings->value("ConfirmPowerOff", defPrefs.confirmPowerOff).toBool();
-
+ prefs.meter2Type = static_cast(settings->value("Meter2Type", defPrefs.meter2Type).toInt());
settings->endGroup();
// Load color schemes:
@@ -1668,6 +1666,7 @@ void wfmain::saveSettings()
settings->setValue("WFLength", prefs.wflength);
settings->setValue("ConfirmExit", prefs.confirmExit);
settings->setValue("ConfirmPowerOff", prefs.confirmPowerOff);
+ settings->setValue("Meter2Type", (int)prefs.meter2Type);
settings->endGroup();
// Radio and Comms: C-IV addr, port to use
@@ -2526,6 +2525,7 @@ void wfmain::doCmd(commandtype cmddata)
{
bool pttrequest = (*std::static_pointer_cast(data));
emit setPTT(pttrequest);
+ ui->meter2Widget->clearMeterOnPTTtoggle();
if(pttrequest)
{
ui->meterSPoWidget->setMeterType(meterPower);
@@ -3126,6 +3126,18 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
// recalculate command timing now that we know the rig better:
calculateTimingParameters();
initPeriodicCommands();
+
+ // Set the second meter here as I suspect we need to be connected for it to work?
+ for (int i = 0; i < ui->meter2selectionCombo->count(); i++)
+ {
+ if (static_cast(ui->meter2selectionCombo->itemData(i).toInt()) == prefs.meter2Type)
+ {
+ // I thought that setCurrentIndex() would call the activated() function for the combobox
+ // but it doesn't, so call it manually.
+ ui->meter2selectionCombo->setCurrentIndex(i);
+ on_meter2selectionCombo_activated(i);
+ }
+ }
}
}
@@ -3341,9 +3353,9 @@ void wfmain::receiveSpectrumData(QByteArray spectrum, double startFreq, double e
void wfmain::receiveSpectrumMode(spectrumMode spectMode)
{
- for(int i=0; i < ui->spectrumModeCombo->count(); i++)
+ for (int i = 0; i < ui->spectrumModeCombo->count(); i++)
{
- if(static_cast(ui->spectrumModeCombo->itemData(i).toInt()) == spectMode)
+ if (static_cast(ui->spectrumModeCombo->itemData(i).toInt()) == spectMode)
{
ui->spectrumModeCombo->blockSignals(true);
ui->spectrumModeCombo->setCurrentIndex(i);
@@ -5363,7 +5375,6 @@ void wfmain::on_meter2selectionCombo_activated(int index)
meterKind oldMeterType;
newMeterType = static_cast(ui->meter2selectionCombo->currentData().toInt());
oldMeterType = ui->meter2Widget->getMeterType();
-
if(newMeterType == oldMeterType)
return;
@@ -5375,11 +5386,14 @@ void wfmain::on_meter2selectionCombo_activated(int index)
if(newMeterType==meterNone)
{
ui->meter2Widget->hide();
+ ui->meter2Widget->setMeterType(newMeterType);
} else {
ui->meter2Widget->show();
ui->meter2Widget->setMeterType(newMeterType);
insertPeriodicCommandUnique(newCmd);
}
+ prefs.meter2Type = newMeterType;
+
(void)index;
}
diff --git a/wfmain.h b/wfmain.h
index 6452eab..155a023 100644
--- a/wfmain.h
+++ b/wfmain.h
@@ -489,6 +489,7 @@ private slots:
void on_rigctldPortTxt_editingFinished();
+
private:
Ui::wfmain *ui;
void closeEvent(QCloseEvent *event);
@@ -716,6 +717,7 @@ private:
int wftheme;
bool confirmExit;
bool confirmPowerOff;
+ meterKind meter2Type;
// plot scheme
} prefs;