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;