diff --git a/plugins/channelrx/demodfreedv/freedvdemod.cpp b/plugins/channelrx/demodfreedv/freedvdemod.cpp
index 8b22fa3ac..f8a8c8a4b 100644
--- a/plugins/channelrx/demodfreedv/freedvdemod.cpp
+++ b/plugins/channelrx/demodfreedv/freedvdemod.cpp
@@ -454,6 +454,10 @@ void FreeDVDemod::applyFreeDVMode(FreeDVDemodSettings::FreeDVMode mode)
switch(mode)
{
+ case FreeDVDemodSettings::FreeDVMode700C:
+ fdv_mode = FREEDV_MODE_700C;
+ m_scaleFactor = SDR_RX_SCALEF / 3.2f;
+ break;
case FreeDVDemodSettings::FreeDVMode700D:
fdv_mode = FREEDV_MODE_700D;
m_scaleFactor = SDR_RX_SCALEF / 3.2f;
diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.ui b/plugins/channelrx/demodfreedv/freedvdemodgui.ui
index 0408f5ae1..9d3ec4217 100644
--- a/plugins/channelrx/demodfreedv/freedvdemodgui.ui
+++ b/plugins/channelrx/demodfreedv/freedvdemodgui.ui
@@ -192,6 +192,11 @@
800XA
+ -
+
+ 700C
+
+
-
700D
diff --git a/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp b/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp
index 8cd2792df..381930b48 100644
--- a/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp
+++ b/plugins/channelrx/demodfreedv/freedvdemodsettings.cpp
@@ -162,9 +162,10 @@ int FreeDVDemodSettings::getHiCutoff(FreeDVMode freeDVMode)
case FreeDVMode800XA: // C4FM NB
return 2400.0;
break;
+ case FreeDVMode700C: // OFDM
case FreeDVMode700D: // OFDM
case FreeDVMode1600: // OFDM
- return 2200.0;
+ return 2400.0;
break;
case FreeDVMode2400A: // C4FM WB
default:
@@ -180,9 +181,10 @@ int FreeDVDemodSettings::getLowCutoff(FreeDVMode freeDVMode)
case FreeDVMode800XA: // C4FM NB
return 400.0;
break;
+ case FreeDVMode700C: // OFDM
case FreeDVMode700D: // OFDM
case FreeDVMode1600: // OFDM
- return 800.0;
+ return 600.0;
break;
case FreeDVMode2400A: // C4FM WB
default:
diff --git a/plugins/channelrx/demodfreedv/freedvdemodsettings.h b/plugins/channelrx/demodfreedv/freedvdemodsettings.h
index 1fe8ef4a9..6da8782ef 100644
--- a/plugins/channelrx/demodfreedv/freedvdemodsettings.h
+++ b/plugins/channelrx/demodfreedv/freedvdemodsettings.h
@@ -30,7 +30,8 @@ struct FreeDVDemodSettings
FreeDVMode2400A,
FreeDVMode1600,
FreeDVMode800XA,
- FreeDVMode700D
+ FreeDVMode700C,
+ FreeDVMode700D,
} FreeDVMode;
qint32 m_inputFrequencyOffset;
diff --git a/plugins/channeltx/modfreedv/freedvmod.cpp b/plugins/channeltx/modfreedv/freedvmod.cpp
index 0d9ea01d5..2fe60d526 100644
--- a/plugins/channeltx/modfreedv/freedvmod.cpp
+++ b/plugins/channeltx/modfreedv/freedvmod.cpp
@@ -648,6 +648,10 @@ void FreeDVMod::applyFreeDVMode(FreeDVModSettings::FreeDVMode mode)
switch(mode)
{
+ case FreeDVModSettings::FreeDVMode700C:
+ fdv_mode = FREEDV_MODE_700C;
+ m_scaleFactor = SDR_TX_SCALEF / 3.2f;
+ break;
case FreeDVModSettings::FreeDVMode700D:
fdv_mode = FREEDV_MODE_700D;
m_scaleFactor = SDR_TX_SCALEF / 3.2f;
diff --git a/plugins/channeltx/modfreedv/freedvmodgui.cpp b/plugins/channeltx/modfreedv/freedvmodgui.cpp
index 2b052e2f7..a7628c0cb 100644
--- a/plugins/channeltx/modfreedv/freedvmodgui.cpp
+++ b/plugins/channeltx/modfreedv/freedvmodgui.cpp
@@ -114,7 +114,7 @@ bool FreeDVModGUI::handleMessage(const Message& message)
}
else if (DSPConfigureAudio::match(message))
{
- qDebug("FreeDVModGUI::handleMessage: DSPConfigureAudio: %d", m_freeDVMod->getAudioSampleRate());
+ qDebug("FreeDVModGUI::handleMessage: DSPConfigureAudio: %d", m_freeDVMod->getModemSampleRate());
applyBandwidths(5 - ui->spanLog2->value()); // will update spectrum details with new sample rate
return true;
}
@@ -464,14 +464,11 @@ void FreeDVModGUI::displaySettings()
// Prevent uncontrolled triggering of applyBandwidths
ui->spanLog2->blockSignals(true);
-
ui->spanLog2->setValue(5 - m_settings.m_spanLog2);
- ui->gaugeInput->setChecked(m_settings.m_gaugeInputElseModem);
-
- QString s = QString::number(m_freeDVMod->getHiCutoff()/1000.0, 'f', 1);
-
ui->spanLog2->blockSignals(false);
+ ui->gaugeInput->setChecked(m_settings.m_gaugeInputElseModem);
+
// 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
diff --git a/plugins/channeltx/modfreedv/freedvmodgui.ui b/plugins/channeltx/modfreedv/freedvmodgui.ui
index 3e5cb1830..7f5f3db0d 100644
--- a/plugins/channeltx/modfreedv/freedvmodgui.ui
+++ b/plugins/channeltx/modfreedv/freedvmodgui.ui
@@ -405,6 +405,11 @@
800XA
+ -
+
+ 700C
+
+
-
700D
diff --git a/plugins/channeltx/modfreedv/freedvmodsettings.cpp b/plugins/channeltx/modfreedv/freedvmodsettings.cpp
index 295d3d11d..1eb84be47 100644
--- a/plugins/channeltx/modfreedv/freedvmodsettings.cpp
+++ b/plugins/channeltx/modfreedv/freedvmodsettings.cpp
@@ -178,9 +178,10 @@ int FreeDVModSettings::getHiCutoff(FreeDVMode freeDVMode)
case FreeDVModSettings::FreeDVMode800XA: // C4FM NB
return 2400.0;
break;
+ case FreeDVModSettings::FreeDVMode700C: // OFDM
case FreeDVModSettings::FreeDVMode700D: // OFDM
case FreeDVModSettings::FreeDVMode1600: // OFDM
- return 2200.0;
+ return 2400.0;
break;
case FreeDVModSettings::FreeDVMode2400A: // C4FM WB
default:
@@ -196,9 +197,10 @@ int FreeDVModSettings::getLowCutoff(FreeDVMode freeDVMode)
case FreeDVModSettings::FreeDVMode800XA: // C4FM NB
return 400.0;
break;
+ case FreeDVModSettings::FreeDVMode700C: // OFDM
case FreeDVModSettings::FreeDVMode700D: // OFDM
case FreeDVModSettings::FreeDVMode1600: // OFDM
- return 800.0;
+ return 600.0;
break;
case FreeDVModSettings::FreeDVMode2400A: // C4FM WB
default:
diff --git a/plugins/channeltx/modfreedv/freedvmodsettings.h b/plugins/channeltx/modfreedv/freedvmodsettings.h
index 7d0b340b1..3bbfc28f7 100644
--- a/plugins/channeltx/modfreedv/freedvmodsettings.h
+++ b/plugins/channeltx/modfreedv/freedvmodsettings.h
@@ -39,6 +39,7 @@ struct FreeDVModSettings
FreeDVMode2400A,
FreeDVMode1600,
FreeDVMode800XA,
+ FreeDVMode700C,
FreeDVMode700D
} FreeDVMode;