diff --git a/plugins/channelrx/demodfreedv/freedvdemod.cpp b/plugins/channelrx/demodfreedv/freedvdemod.cpp index 1129d5b84..2b75f8ddb 100644 --- a/plugins/channelrx/demodfreedv/freedvdemod.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemod.cpp @@ -61,6 +61,7 @@ FreeDVDemod::FreeDVDemod(DeviceSourceAPI *deviceAPI) : m_audioActive(false), m_sampleSink(0), m_audioFifo(24000), + m_modemSampleRate(48000), m_settingsMutex(QMutex::Recursive) { setObjectName(m_channelId); @@ -445,13 +446,8 @@ void FreeDVDemod::applySettings(const FreeDVDemodSettings& settings, bool force) { qDebug() << "FreeDVDemod::applySettings:" << " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset - << " m_rfBandwidth: " << settings.m_rfBandwidth - << " m_lowCutoff: " << settings.m_lowCutoff << " m_volume: " << settings.m_volume << " m_spanLog2: " << settings.m_spanLog2 - << " m_audioBinaual: " << settings.m_audioBinaural - << " m_audioFlipChannels: " << settings.m_audioFlipChannels - << " m_dsb: " << settings.m_dsb << " m_audioMute: " << settings.m_audioMute << " m_agcActive: " << settings.m_agc << " m_agcClamping: " << settings.m_agcClamping @@ -466,46 +462,6 @@ void FreeDVDemod::applySettings(const FreeDVDemodSettings& settings, bool force) if((m_settings.m_inputFrequencyOffset != settings.m_inputFrequencyOffset) || force) { reverseAPIKeys.append("inputFrequencyOffset"); } - if((m_settings.m_rfBandwidth != settings.m_rfBandwidth) || force) { - reverseAPIKeys.append("rfBandwidth"); - } - if((m_settings.m_lowCutoff != settings.m_lowCutoff) || force) { - reverseAPIKeys.append("lowCutoff"); - } - - if((m_settings.m_rfBandwidth != settings.m_rfBandwidth) || - (m_settings.m_lowCutoff != settings.m_lowCutoff) || force) - { - float band, lowCutoff; - - band = settings.m_rfBandwidth; - lowCutoff = settings.m_lowCutoff; - - if (band < 0) { - band = -band; - lowCutoff = -lowCutoff; - m_usb = false; - } else { - m_usb = true; - } - - if (band < 100.0f) - { - band = 100.0f; - lowCutoff = 0; - } - - m_Bandwidth = band; - m_LowCutoff = lowCutoff; - - m_settingsMutex.lock(); - m_interpolator.create(16, m_inputSampleRate, m_Bandwidth * 1.5f, 2.0f); - m_interpolatorDistanceRemain = 0; - m_interpolatorDistance = (Real) m_inputSampleRate / (Real) m_audioSampleRate; - SSBFilter->create_filter(m_LowCutoff / (float) m_audioSampleRate, m_Bandwidth / (float) m_audioSampleRate); - DSBFilter->create_dsb_filter((2.0f * m_Bandwidth) / (float) m_audioSampleRate); - m_settingsMutex.unlock(); - } if ((m_settings.m_volume != settings.m_volume) || force) { @@ -588,15 +544,6 @@ void FreeDVDemod::applySettings(const FreeDVDemodSettings& settings, bool force) if ((m_settings.m_spanLog2 != settings.m_spanLog2) || force) { reverseAPIKeys.append("spanLog2"); } - if ((m_settings.m_audioBinaural != settings.m_audioBinaural) || force) { - reverseAPIKeys.append("audioBinaural"); - } - if ((m_settings.m_audioFlipChannels != settings.m_audioFlipChannels) || force) { - reverseAPIKeys.append("audioFlipChannels"); - } - if ((m_settings.m_dsb != settings.m_dsb) || force) { - reverseAPIKeys.append("dsb"); - } if ((m_settings.m_audioMute != settings.m_audioMute) || force) { reverseAPIKeys.append("audioMute"); } @@ -605,9 +552,6 @@ void FreeDVDemod::applySettings(const FreeDVDemodSettings& settings, bool force) } m_spanLog2 = settings.m_spanLog2; - m_audioBinaual = settings.m_audioBinaural; - m_audioFlipChannels = settings.m_audioFlipChannels; - m_dsb = settings.m_dsb; m_audioMute = settings.m_audioMute; m_agcActive = settings.m_agc; @@ -672,27 +616,12 @@ int FreeDVDemod::webapiSettingsPutPatch( settings.m_inputFrequencyOffset = response.getSsbDemodSettings()->getInputFrequencyOffset(); frequencyOffsetChanged = true; } - if (channelSettingsKeys.contains("rfBandwidth")) { - settings.m_rfBandwidth = response.getSsbDemodSettings()->getRfBandwidth(); - } - if (channelSettingsKeys.contains("lowCutoff")) { - settings.m_lowCutoff = response.getSsbDemodSettings()->getLowCutoff(); - } if (channelSettingsKeys.contains("volume")) { settings.m_volume = response.getSsbDemodSettings()->getVolume(); } if (channelSettingsKeys.contains("spanLog2")) { settings.m_spanLog2 = response.getSsbDemodSettings()->getSpanLog2(); } - if (channelSettingsKeys.contains("audioBinaural")) { - settings.m_audioBinaural = response.getSsbDemodSettings()->getAudioBinaural() != 0; - } - if (channelSettingsKeys.contains("audioFlipChannels")) { - settings.m_audioFlipChannels = response.getSsbDemodSettings()->getAudioFlipChannels() != 0; - } - if (channelSettingsKeys.contains("dsb")) { - settings.m_dsb = response.getSsbDemodSettings()->getDsb() != 0; - } if (channelSettingsKeys.contains("audioMute")) { settings.m_audioMute = response.getSsbDemodSettings()->getAudioMute() != 0; } @@ -758,13 +687,8 @@ void FreeDVDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& r { response.getSsbDemodSettings()->setAudioMute(settings.m_audioMute ? 1 : 0); response.getSsbDemodSettings()->setInputFrequencyOffset(settings.m_inputFrequencyOffset); - response.getSsbDemodSettings()->setRfBandwidth(settings.m_rfBandwidth); - response.getSsbDemodSettings()->setLowCutoff(settings.m_lowCutoff); response.getSsbDemodSettings()->setVolume(settings.m_volume); response.getSsbDemodSettings()->setSpanLog2(settings.m_spanLog2); - response.getSsbDemodSettings()->setAudioBinaural(settings.m_audioBinaural ? 1 : 0); - response.getSsbDemodSettings()->setAudioFlipChannels(settings.m_audioFlipChannels ? 1 : 0); - response.getSsbDemodSettings()->setDsb(settings.m_dsb ? 1 : 0); response.getSsbDemodSettings()->setAudioMute(settings.m_audioMute ? 1 : 0); response.getSsbDemodSettings()->setAgc(settings.m_agc ? 1 : 0); response.getSsbDemodSettings()->setAgcClamping(settings.m_agcClamping ? 1 : 0); @@ -811,27 +735,12 @@ void FreeDVDemod::webapiReverseSendSettings(QList& channelSettingsKeys, if (channelSettingsKeys.contains("inputFrequencyOffset") || force) { swgSSBDemodSettings->setInputFrequencyOffset(settings.m_inputFrequencyOffset); } - if (channelSettingsKeys.contains("rfBandwidth") || force) { - swgSSBDemodSettings->setRfBandwidth(settings.m_rfBandwidth); - } - if (channelSettingsKeys.contains("lowCutoff") || force) { - swgSSBDemodSettings->setLowCutoff(settings.m_lowCutoff); - } if (channelSettingsKeys.contains("volume") || force) { swgSSBDemodSettings->setVolume(settings.m_volume); } if (channelSettingsKeys.contains("spanLog2") || force) { swgSSBDemodSettings->setSpanLog2(settings.m_spanLog2); } - if (channelSettingsKeys.contains("audioBinaural") || force) { - swgSSBDemodSettings->setAudioBinaural(settings.m_audioBinaural ? 1 : 0); - } - if (channelSettingsKeys.contains("audioFlipChannels") || force) { - swgSSBDemodSettings->setAudioFlipChannels(settings.m_audioFlipChannels ? 1 : 0); - } - if (channelSettingsKeys.contains("dsb") || force) { - swgSSBDemodSettings->setDsb(settings.m_dsb ? 1 : 0); - } if (channelSettingsKeys.contains("audioMute") || force) { swgSSBDemodSettings->setAudioMute(settings.m_audioMute ? 1 : 0); } diff --git a/plugins/channelrx/demodfreedv/freedvdemod.h b/plugins/channelrx/demodfreedv/freedvdemod.h index 4eec60f21..642d8376f 100644 --- a/plugins/channelrx/demodfreedv/freedvdemod.h +++ b/plugins/channelrx/demodfreedv/freedvdemod.h @@ -125,6 +125,7 @@ public: virtual bool deserialize(const QByteArray& data); uint32_t getAudioSampleRate() const { return m_audioSampleRate; } + uint32_t getModemSampleRate() const { return m_modemSampleRate; } double getMagSq() const { return m_magsq; } bool getAudioActive() const { return m_audioActive; } @@ -313,6 +314,7 @@ private: uint m_audioBufferFill; AudioFifo m_audioFifo; quint32 m_audioSampleRate; + quint32 m_modemSampleRate; QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp index 7e2c731ef..fd899c84e 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp @@ -144,26 +144,6 @@ void FreeDVDemodGUI::channelMarkerHighlightedByCursor() setHighlighted(m_channelMarker.getHighlighted()); } -void FreeDVDemodGUI::on_audioBinaural_toggled(bool binaural) -{ - m_audioBinaural = binaural; - m_settings.m_audioBinaural = binaural; - applySettings(); -} - -void FreeDVDemodGUI::on_audioFlipChannels_toggled(bool flip) -{ - m_audioFlipChannels = flip; - m_settings.m_audioFlipChannels = flip; - applySettings(); -} - -void FreeDVDemodGUI::on_dsb_toggled(bool dsb) -{ - ui->flipSidebands->setEnabled(!dsb); - applyBandwidths(5 - ui->spanLog2->value()); -} - void FreeDVDemodGUI::on_deltaFrequency_changed(qint64 value) { m_channelMarker.setCenterFrequency(value); @@ -171,16 +151,13 @@ void FreeDVDemodGUI::on_deltaFrequency_changed(qint64 value) applySettings(); } -void FreeDVDemodGUI::on_BW_valueChanged(int value) +void FreeDVDemodGUI::on_freeDVMode_currentIndexChanged(int index) { - (void) value; - applyBandwidths(5 - ui->spanLog2->value()); -} - -void FreeDVDemodGUI::on_lowCut_valueChanged(int value) -{ - (void) value; - applyBandwidths(5 - ui->spanLog2->value()); + m_settings.m_freeDVMode = (FreeDVDemodSettings::FreeDVMode) index; + m_channelMarker.setBandwidth(FreeDVDemodSettings::getHiCutoff(m_settings.m_freeDVMode) * 2); + m_channelMarker.setLowCutoff(FreeDVDemodSettings::getLowCutoff(m_settings.m_freeDVMode)); + m_channelMarker.setSidebands(ChannelMarker::usb); + applySettings(); } void FreeDVDemodGUI::on_volume_valueChanged(int value) @@ -241,15 +218,6 @@ void FreeDVDemodGUI::on_spanLog2_valueChanged(int value) applyBandwidths(5 - ui->spanLog2->value()); } -void FreeDVDemodGUI::on_flipSidebands_clicked(bool checked) -{ - (void) checked; - int bwValue = ui->BW->value(); - int lcValue = ui->lowCut->value(); - ui->BW->setValue(-bwValue); - ui->lowCut->setValue(-lcValue); -} - void FreeDVDemodGUI::onMenuDialogCalled(const QPoint &p) { BasicChannelSettingsDialog dialog(&m_channelMarker, this); @@ -379,132 +347,138 @@ void FreeDVDemodGUI::applySettings(bool force) void FreeDVDemodGUI::applyBandwidths(int spanLog2, bool force) { - bool dsb = ui->dsb->isChecked(); - //int spanLog2 = ui->spanLog2->value(); - m_spectrumRate = m_freeDVDemod->getAudioSampleRate() / (1<BW->value(); - int lw = ui->lowCut->value(); - int bwMax = m_freeDVDemod->getAudioSampleRate() / (100*(1<getModemSampleRate() / (1<getModemSampleRate() / (100*(1<BW->setTickInterval(tickInterval); - ui->lowCut->setTickInterval(tickInterval); - - bw = bw < -bwMax ? -bwMax : bw > bwMax ? bwMax : bw; - - if (bw < 0) { - lw = lw < bw+1 ? bw+1 : lw < 0 ? lw : 0; - } else if (bw > 0) { - lw = lw > bw-1 ? bw-1 : lw < 0 ? 0 : lw; - } else { - lw = 0; - } - - if (dsb) - { - bw = bw < 0 ? -bw : bw; - lw = 0; - } + << " bwMax: " << bwMax; QString spanStr = QString::number(bwMax/10.0, 'f', 1); - QString bwStr = QString::number(bw/10.0, 'f', 1); - QString lwStr = QString::number(lw/10.0, 'f', 1); - if (dsb) - { - ui->BWText->setText(tr("%1%2k").arg(QChar(0xB1, 0x00)).arg(bwStr)); - ui->spanText->setText(tr("%1%2k").arg(QChar(0xB1, 0x00)).arg(spanStr)); - ui->scaleMinus->setText("0"); - ui->scaleCenter->setText(""); - ui->scalePlus->setText(tr("%1").arg(QChar(0xB1, 0x00))); - ui->lsbLabel->setText(""); - ui->usbLabel->setText(""); - ui->glSpectrum->setCenterFrequency(0); - ui->glSpectrum->setSampleRate(2*m_spectrumRate); - ui->glSpectrum->setSsbSpectrum(false); - ui->glSpectrum->setLsbDisplay(false); - } - else - { - ui->BWText->setText(tr("%1k").arg(bwStr)); - ui->spanText->setText(tr("%1k").arg(spanStr)); - ui->scaleMinus->setText("-"); - ui->scaleCenter->setText("0"); - ui->scalePlus->setText("+"); - ui->lsbLabel->setText("LSB"); - ui->usbLabel->setText("USB"); - ui->glSpectrum->setCenterFrequency(m_spectrumRate/2); - ui->glSpectrum->setSampleRate(m_spectrumRate); - ui->glSpectrum->setSsbSpectrum(true); - ui->glSpectrum->setLsbDisplay(bw < 0); - } + ui->spanText->setText(tr("%1k").arg(spanStr)); + ui->glSpectrum->setCenterFrequency(m_spectrumRate/2); + ui->glSpectrum->setSampleRate(m_spectrumRate); + ui->glSpectrum->setSsbSpectrum(true); + ui->glSpectrum->setLsbDisplay(false); - ui->lowCutText->setText(tr("%1k").arg(lwStr)); - - - ui->BW->blockSignals(true); - ui->lowCut->blockSignals(true); - - ui->BW->setMaximum(bwMax); - ui->BW->setMinimum(dsb ? 0 : -bwMax); - ui->BW->setValue(bw); - - ui->lowCut->setMaximum(dsb ? 0 : bwMax); - ui->lowCut->setMinimum(dsb ? 0 : -bwMax); - ui->lowCut->setValue(lw); - - ui->lowCut->blockSignals(false); - ui->BW->blockSignals(false); - - ui->channelPowerMeter->setRange(FreeDVDemodSettings::m_minPowerThresholdDB, 0); - - m_settings.m_dsb = dsb; m_settings.m_spanLog2 = spanLog2; - m_settings.m_rfBandwidth = bw * 100; - m_settings.m_lowCutoff = lw * 100; applySettings(force); - bool wasBlocked = blockApplySettings(true); - m_channelMarker.setBandwidth(bw * 200); - m_channelMarker.setSidebands(dsb ? ChannelMarker::dsb : bw < 0 ? ChannelMarker::lsb : ChannelMarker::usb); - ui->dsb->setIcon(bw < 0 ? m_iconDSBLSB: m_iconDSBUSB); - if (!dsb) { m_channelMarker.setLowCutoff(lw * 100); } - blockApplySettings(wasBlocked); +// bool dsb = ui->dsb->isChecked(); +// //int spanLog2 = ui->spanLog2->value(); +// m_spectrumRate = m_freeDVDemod->getAudioSampleRate() / (1<BW->value(); +// int lw = ui->lowCut->value(); +// int bwMax = m_freeDVDemod->getAudioSampleRate() / (100*(1<BW->setTickInterval(tickInterval); +// ui->lowCut->setTickInterval(tickInterval); +// +// bw = bw < -bwMax ? -bwMax : bw > bwMax ? bwMax : bw; +// +// if (bw < 0) { +// lw = lw < bw+1 ? bw+1 : lw < 0 ? lw : 0; +// } else if (bw > 0) { +// lw = lw > bw-1 ? bw-1 : lw < 0 ? 0 : lw; +// } else { +// lw = 0; +// } +// +// if (dsb) +// { +// bw = bw < 0 ? -bw : bw; +// lw = 0; +// } +// +// QString spanStr = QString::number(bwMax/10.0, 'f', 1); +// QString bwStr = QString::number(bw/10.0, 'f', 1); +// QString lwStr = QString::number(lw/10.0, 'f', 1); +// +// if (dsb) +// { +// ui->BWText->setText(tr("%1%2k").arg(QChar(0xB1, 0x00)).arg(bwStr)); +// ui->spanText->setText(tr("%1%2k").arg(QChar(0xB1, 0x00)).arg(spanStr)); +// ui->scaleMinus->setText("0"); +// ui->scaleCenter->setText(""); +// ui->scalePlus->setText(tr("%1").arg(QChar(0xB1, 0x00))); +// ui->lsbLabel->setText(""); +// ui->usbLabel->setText(""); +// ui->glSpectrum->setCenterFrequency(0); +// ui->glSpectrum->setSampleRate(2*m_spectrumRate); +// ui->glSpectrum->setSsbSpectrum(false); +// ui->glSpectrum->setLsbDisplay(false); +// } +// else +// { +// ui->BWText->setText(tr("%1k").arg(bwStr)); +// ui->spanText->setText(tr("%1k").arg(spanStr)); +// ui->scaleMinus->setText("-"); +// ui->scaleCenter->setText("0"); +// ui->scalePlus->setText("+"); +// ui->lsbLabel->setText("LSB"); +// ui->usbLabel->setText("USB"); +// ui->glSpectrum->setCenterFrequency(m_spectrumRate/2); +// ui->glSpectrum->setSampleRate(m_spectrumRate); +// ui->glSpectrum->setSsbSpectrum(true); +// ui->glSpectrum->setLsbDisplay(bw < 0); +// } +// +// ui->lowCutText->setText(tr("%1k").arg(lwStr)); +// +// +// ui->BW->blockSignals(true); +// ui->lowCut->blockSignals(true); +// +// ui->BW->setMaximum(bwMax); +// ui->BW->setMinimum(dsb ? 0 : -bwMax); +// ui->BW->setValue(bw); +// +// ui->lowCut->setMaximum(dsb ? 0 : bwMax); +// ui->lowCut->setMinimum(dsb ? 0 : -bwMax); +// ui->lowCut->setValue(lw); +// +// ui->lowCut->blockSignals(false); +// ui->BW->blockSignals(false); +// +// ui->channelPowerMeter->setRange(FreeDVDemodSettings::m_minPowerThresholdDB, 0); +// +// m_settings.m_dsb = dsb; +// m_settings.m_spanLog2 = spanLog2; +// m_settings.m_rfBandwidth = bw * 100; +// m_settings.m_lowCutoff = lw * 100; +// +// applySettings(force); +// +// bool wasBlocked = blockApplySettings(true); +// m_channelMarker.setBandwidth(bw * 200); +// m_channelMarker.setSidebands(dsb ? ChannelMarker::dsb : bw < 0 ? ChannelMarker::lsb : ChannelMarker::usb); +// ui->dsb->setIcon(bw < 0 ? m_iconDSBLSB: m_iconDSBUSB); +// if (!dsb) { m_channelMarker.setLowCutoff(lw * 100); } +// blockApplySettings(wasBlocked); } void FreeDVDemodGUI::displaySettings() { m_channelMarker.blockSignals(true); m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset); - m_channelMarker.setBandwidth(m_settings.m_rfBandwidth * 2); m_channelMarker.setTitle(m_settings.m_title); - m_channelMarker.setLowCutoff(m_settings.m_lowCutoff); - - ui->flipSidebands->setEnabled(!m_settings.m_dsb); - - if (m_settings.m_dsb) { - m_channelMarker.setSidebands(ChannelMarker::dsb); - } else { - if (m_settings.m_rfBandwidth < 0) { - m_channelMarker.setSidebands(ChannelMarker::lsb); - ui->dsb->setIcon(m_iconDSBLSB); - } else { - m_channelMarker.setSidebands(ChannelMarker::usb); - ui->dsb->setIcon(m_iconDSBUSB); - } - } - + m_channelMarker.setBandwidth(FreeDVDemodSettings::getHiCutoff(m_settings.m_freeDVMode) * 2); + m_channelMarker.setLowCutoff(FreeDVDemodSettings::getLowCutoff(m_settings.m_freeDVMode)); + m_channelMarker.setSidebands(ChannelMarker::usb); m_channelMarker.blockSignals(false); m_channelMarker.setColor(m_settings.m_rgbColor); // activate signal on the last setting only @@ -517,45 +491,19 @@ void FreeDVDemodGUI::displaySettings() ui->agc->setChecked(m_settings.m_agc); ui->agcClamping->setChecked(m_settings.m_agcClamping); - ui->audioBinaural->setChecked(m_settings.m_audioBinaural); - ui->audioFlipChannels->setChecked(m_settings.m_audioFlipChannels); ui->audioMute->setChecked(m_settings.m_audioMute); ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); // Prevent uncontrolled triggering of applyBandwidths ui->spanLog2->blockSignals(true); - ui->dsb->blockSignals(true); - ui->BW->blockSignals(true); - - ui->dsb->setChecked(m_settings.m_dsb); ui->spanLog2->setValue(5 - m_settings.m_spanLog2); - - ui->BW->setValue(m_settings.m_rfBandwidth / 100.0); - QString s = QString::number(m_settings.m_rfBandwidth/1000.0, 'f', 1); - - if (m_settings.m_dsb) - { - ui->BWText->setText(tr("%1%2k").arg(QChar(0xB1, 0x00)).arg(s)); - } - else - { - ui->BWText->setText(tr("%1k").arg(s)); - } - ui->spanLog2->blockSignals(false); - ui->dsb->blockSignals(false); - ui->BW->blockSignals(false); - - // The only one of the four signals triggering applyBandwidths will trigger it once only with all other values - // set correctly and therefore validate the settings and apply them to dependent widgets - ui->lowCut->setValue(m_settings.m_lowCutoff / 100.0); - ui->lowCutText->setText(tr("%1k").arg(m_settings.m_lowCutoff / 1000.0)); ui->volume->setValue(m_settings.m_volume * 10.0); ui->volumeText->setText(QString("%1").arg(m_settings.m_volume, 0, 'f', 1)); ui->agcTimeLog2->setValue(m_settings.m_agcTimeLog2); - s = QString::number((1<agcTimeLog2->value()), 'f', 0); + QString s = QString::number((1<agcTimeLog2->value()), 'f', 0); ui->agcTimeText->setText(s); ui->agcPowerThreshold->setValue(m_settings.m_agcPowerThreshold); diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.h b/plugins/channelrx/demodfreedv/freedvdemodgui.h index fd2dc0828..cc26e49ca 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.h +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.h @@ -96,11 +96,7 @@ private: private slots: void on_deltaFrequency_changed(qint64 value); - void on_audioBinaural_toggled(bool binaural); - void on_audioFlipChannels_toggled(bool flip); - void on_dsb_toggled(bool dsb); - void on_BW_valueChanged(int value); - void on_lowCut_valueChanged(int value); + void on_freeDVMode_currentIndexChanged(int index); void on_volume_valueChanged(int value); void on_agc_toggled(bool checked); void on_agcClamping_toggled(bool checked); @@ -109,7 +105,6 @@ private slots: void on_agcThresholdGate_valueChanged(int value); void on_audioMute_toggled(bool checked); void on_spanLog2_valueChanged(int value); - void on_flipSidebands_clicked(bool checked); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); void handleInputMessages(); diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.ui b/plugins/channelrx/demodfreedv/freedvdemodgui.ui index f28c54b12..0408f5ae1 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.ui +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.ui @@ -7,7 +7,7 @@ 0 0 412 - 190 + 476 @@ -29,7 +29,7 @@ - SSB Demodulator + FreeDV Demodulator @@ -168,80 +168,35 @@ - + + + 6 + - + - Toggle btw Mono and Binaural I/Q audio - - - ... - - - - :/mono.png - :/stereo.png:/mono.png - - - true - - - - - - - Flip left/right audio channels - - - ... - - - - :/flip_lr.png - :/flip_rl.png:/flip_lr.png - - - true - - - - - - - Qt::Vertical - - - - - - - Flip sideband in SSB mode (LSB->USB or USB->LSB) - - - - - - - :/flip_sidebands.png:/flip_sidebands.png - - - - - - - DSB/SSB toggle - - - ... - - - - :/usb.png - :/dsb.png:/usb.png - - - true + FreeDV mode + + + 2400A + + + + + 1600 + + + + + 800XA + + + + + 700D + + @@ -260,7 +215,7 @@ - + 0 0 @@ -281,377 +236,6 @@ - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Span - - - - - - - Demod frequency span - - - 0 - - - 4 - - - 1 - - - 2 - - - 2 - - - Qt::Horizontal - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - 6.0k - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Low cut - - - - - - - - 16777215 - 16 - - - - Highpass filter cutoff frequency (SSB) - - - -60 - - - 60 - - - 1 - - - 3 - - - Qt::Horizontal - - - false - - - QSlider::NoTicks - - - 5 - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - 0.3k - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - Hi cut - - - - - - - - 16777215 - 16 - - - - Lowpass filter cutoff frequency - - - -60 - - - 60 - - - 1 - - - 30 - - - Qt::Horizontal - - - QSlider::TicksBelow - - - 5 - - - - - - - - 50 - 0 - - - - - 50 - 16777215 - - - - 3.0k - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - 50 - 0 - - - - - 50 - 10 - - - - - 8 - - - - f: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 10 - 10 - - - - - 8 - - - - - - - - - - - - - 8 - - - - LSB - - - Qt::AlignCenter - - - - - - - - 12 - 10 - - - - - 8 - - - - 0 - - - Qt::AlignCenter - - - - - - - - 8 - - - - USB - - - Qt::AlignCenter - - - - - - - - 10 - 10 - - - - - 8 - - - - + - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 50 - 0 - - - - - 50 - 10 - - - - - - - - - @@ -898,6 +482,76 @@ + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + Span + + + + + + + Demod frequency span + + + 0 + + + 4 + + + 1 + + + 2 + + + 2 + + + Qt::Horizontal + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 6.0k + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + @@ -986,11 +640,6 @@ QToolButton
gui/buttonswitch.h
- - TickedSlider - QSlider -
gui/tickedslider.h
-
diff --git a/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp b/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp index c56522742..8cd2792df 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp @@ -38,17 +38,12 @@ FreeDVDemodSettings::FreeDVDemodSettings() : void FreeDVDemodSettings::resetToDefaults() { - m_audioBinaural = false; - m_audioFlipChannels = false; - m_dsb = false; m_audioMute = false; m_agc = false; m_agcClamping = false; m_agcPowerThreshold = -40; m_agcThresholdGate = 4; m_agcTimeLog2 = 7; - m_rfBandwidth = 3000; - m_lowCutoff = 300; m_volume = 3.0; m_spanLog2 = 3; m_inputFrequencyOffset = 0; @@ -67,7 +62,6 @@ QByteArray FreeDVDemodSettings::serialize() const { SimpleSerializer s(1); s.writeS32(1, m_inputFrequencyOffset); - s.writeS32(2, m_rfBandwidth / 100.0); s.writeS32(3, m_volume * 10.0); if (m_spectrumGUI) { @@ -75,11 +69,7 @@ QByteArray FreeDVDemodSettings::serialize() const } s.writeU32(5, m_rgbColor); - s.writeS32(6, m_lowCutoff / 100.0); s.writeS32(7, m_spanLog2); - s.writeBool(8, m_audioBinaural); - s.writeBool(9, m_audioFlipChannels); - s.writeBool(10, m_dsb); s.writeBool(11, m_agc); s.writeS32(12, m_agcTimeLog2); s.writeS32(13, m_agcPowerThreshold); @@ -116,7 +106,6 @@ bool FreeDVDemodSettings::deserialize(const QByteArray& data) d.readS32(1, &m_inputFrequencyOffset, 0); d.readS32(2, &tmp, 30); - m_rfBandwidth = tmp * 100.0; d.readS32(3, &tmp, 30); m_volume = tmp / 10.0; @@ -127,11 +116,7 @@ bool FreeDVDemodSettings::deserialize(const QByteArray& data) d.readU32(5, &m_rgbColor); d.readS32(6, &tmp, 30); - m_lowCutoff = tmp * 100.0; d.readS32(7, &m_spanLog2, 3); - d.readBool(8, &m_audioBinaural, false); - d.readBool(9, &m_audioFlipChannels, false); - d.readBool(10, &m_dsb, false); d.readBool(11, &m_agc, false); d.readS32(12, &m_agcTimeLog2, 7); d.readS32(13, &m_agcPowerThreshold, -40); diff --git a/plugins/channelrx/demodfreedv/freedvdemodsettings.h b/plugins/channelrx/demodfreedv/freedvdemodsettings.h index f05ca1b36..1fe8ef4a9 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodsettings.h +++ b/plugins/channelrx/demodfreedv/freedvdemodsettings.h @@ -34,13 +34,8 @@ struct FreeDVDemodSettings } FreeDVMode; qint32 m_inputFrequencyOffset; - Real m_rfBandwidth; - Real m_lowCutoff; Real m_volume; int m_spanLog2; - bool m_audioBinaural; - bool m_audioFlipChannels; - bool m_dsb; bool m_audioMute; bool m_agc; bool m_agcClamping; diff --git a/plugins/channeltx/modfreedv/freedvmodgui.cpp b/plugins/channeltx/modfreedv/freedvmodgui.cpp index d46b78140..2b052e2f7 100644 --- a/plugins/channeltx/modfreedv/freedvmodgui.cpp +++ b/plugins/channeltx/modfreedv/freedvmodgui.cpp @@ -424,14 +424,11 @@ void FreeDVModGUI::applyBandwidths(int spanLog2, bool force) { m_spectrumRate = m_freeDVMod->getModemSampleRate() / (1<getModemSampleRate() / (100*(1<