Merge pull request #283 from drowe67/ms-remove-dpsk

Remove unnecessary BW and DPSK options from UI.
pull/288/head
Mooneer Salem 2022-10-24 12:33:33 -07:00 committed by GitHub
commit c131a898d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 7 additions and 60 deletions

View File

@ -418,13 +418,6 @@ FMA - Supports FMA extensions using YMM state</code></pre>
</tr>
</tbody>
</table>
<h3 id="ofdm-modem-phase-estimator-options-experimental"><span class="header-section-number">9.2.2</span> OFDM Modem Phase Estimator Options (Experimental)</h3>
<p>These options apply to the FreeDV 700D and 2020 modes that use the OFDM modem:</p>
<ol type="1">
<li><p>The High Bandwidth option gives better performance on channels where the phase changes quickly, for example fast fading HF channels and the EsHail 2 satellite. When unchecked, the phase estimator bandwidth is automatically selected. It starts off high to enable fast sync, then switches to low bandwidth to optimise performance for low SNR HF channels.</p></li>
<li><p>The DPSK (differential PSK) checkbox has a similar effect - better performance on High SNR channels where the phase changes rapidly. This option converts the OFDM modem to use differential PSK rather than coherent PSK. DPSK is used by earlier FreeDV modes such as FreeDV 1600. It affects the Tx and Rx side, so both sides must select DPSK.</p></li>
</ol>
<p>If you have problems with 700D or 2020 sync even though you have a strong signal - try these options.</p>
<h1 id="helping-improve-freedv"><span class="header-section-number">10</span> Helping Improve FreeDV</h1>
<p>If you have an interesting test case, for example:</p>
<ol type="1">
@ -589,6 +582,7 @@ FMA - Supports FMA extensions using YMM state</code></pre>
<li>Enhancements:
<ul>
<li>Add alternate method of determining 2020 support for non-x86 machines. (PR #280)</li>
<li>Remove unnecessary BW and DPSK options from UI. (PR #283)</li>
<li>Stats on left hand side of main window now auto-reset after user-configurable time period (default 10s). (PR #262, #286)</li>
</ul></li>
</ol>

View File

@ -575,16 +575,6 @@ Clipping | Increases the average power. Ensure your transmitter can handle high
Tx Band Pass Filter | Reduces Tx spectrum bandwidth
Manual Unsync | Forces modem to remain in sync, and not drop sync automatically
### OFDM Modem Phase Estimator Options (Experimental)
These options apply to the FreeDV 700D and 2020 modes that use the OFDM modem:
1. The High Bandwidth option gives better performance on channels where the phase changes quickly, for example fast fading HF channels and the Es'Hail 2 satellite. When unchecked, the phase estimator bandwidth is automatically selected. It starts off high to enable fast sync, then switches to low bandwidth to optimise performance for low SNR HF channels.
1. The DPSK (differential PSK) checkbox has a similar effect - better performance on High SNR channels where the phase changes rapidly. This option converts the OFDM modem to use differential PSK rather than coherent PSK. DPSK is used by earlier FreeDV modes such as FreeDV 1600. It affects the Tx and Rx side, so both sides must select DPSK.
If you have problems with 700D or 2020 sync even though you have a strong signal - try these options.
# Helping Improve FreeDV
If you have an interesting test case, for example:
@ -799,8 +789,9 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes
* Add missed UI disable on startup for 2020B mode. (PR #279)
3. Enhancements:
* Add alternate method of determining 2020 support for non-x86 machines. (PR #280)
* Remove unnecessary BW and DPSK options from UI. (PR #283)
* Stats on left hand side of main window now auto-reset after user-configurable time period (default 10s). (PR #262, #286)
## V1.8.3.1 August 2022
1. Build system:

Binary file not shown.

View File

@ -191,21 +191,6 @@ OptionsDlg::OptionsDlg(wxWindow* parent, wxWindowID id, const wxString& title, c
sizerModem->Add(sbSizer_freedv700, 0, wxALL|wxEXPAND, 3);
//------------------------------
// Phase Est Options
//------------------------------
wxStaticBoxSizer* sbSizer_freedvPhaseEst;
wxStaticBox *sb_freedvPhaseEst = new wxStaticBox(m_modemTab, wxID_ANY, _("OFDM Modem Phase Estimator Options"));
sbSizer_freedvPhaseEst = new wxStaticBoxSizer(sb_freedvPhaseEst, wxHORIZONTAL);
m_ckboxPhaseEstBW = new wxCheckBox(m_modemTab, wxID_ANY, _("High Bandwidth"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE);
sbSizer_freedvPhaseEst->Add(m_ckboxPhaseEstBW, 0, wxALIGN_LEFT, 0);
m_ckboxPhaseEstDPSK = new wxCheckBox(m_modemTab, wxID_ANY, _("DPSK"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE);
sbSizer_freedvPhaseEst->Add(m_ckboxPhaseEstDPSK, 0, wxALIGN_LEFT, 0);
sizerModem->Add(sbSizer_freedvPhaseEst, 0, wxALL|wxEXPAND, 3);
//------------------------------
// Half/Full duplex selection
//------------------------------
@ -431,9 +416,7 @@ OptionsDlg::OptionsDlg(wxWindow* parent, wxWindowID id, const wxString& title, c
m_ckboxFreeDV700txClip->MoveBeforeInTabOrder(m_ckboxFreeDV700Combine);
m_ckboxFreeDV700Combine->MoveBeforeInTabOrder(m_ckboxFreeDV700txBPF);
m_ckboxFreeDV700txBPF->MoveBeforeInTabOrder(m_ckboxFreeDV700ManualUnSync);
m_ckboxFreeDV700ManualUnSync->MoveBeforeInTabOrder(m_ckboxPhaseEstBW);
m_ckboxPhaseEstBW->MoveBeforeInTabOrder(m_ckboxPhaseEstDPSK);
m_ckboxPhaseEstDPSK->MoveBeforeInTabOrder(m_ckHalfDuplex);
m_ckboxFreeDV700ManualUnSync->MoveBeforeInTabOrder(m_ckHalfDuplex);
m_ckHalfDuplex->MoveBeforeInTabOrder(m_ckboxMultipleRx);
m_ckboxMultipleRx->MoveBeforeInTabOrder(m_ckboxSingleRxThread);
m_ckboxSingleRxThread->MoveBeforeInTabOrder(m_statsResetTime);
@ -586,9 +569,6 @@ void OptionsDlg::ExchangeData(int inout, bool storePersistent)
m_ckboxFreeDV700Combine->SetValue(wxGetApp().m_FreeDV700Combine);
m_ckboxFreeDV700ManualUnSync->SetValue(wxGetApp().m_FreeDV700ManualUnSync);
m_ckboxPhaseEstBW->SetValue(wxGetApp().m_PhaseEstBW);
m_ckboxPhaseEstDPSK->SetValue(wxGetApp().m_PhaseEstDPSK);
#ifdef __WXMSW__
m_ckboxDebugConsole->SetValue(wxGetApp().m_debug_console);
#endif
@ -709,9 +689,6 @@ void OptionsDlg::ExchangeData(int inout, bool storePersistent)
wxGetApp().m_FreeDV700Combine = m_ckboxFreeDV700Combine->GetValue();
wxGetApp().m_FreeDV700ManualUnSync = m_ckboxFreeDV700ManualUnSync->GetValue();
wxGetApp().m_PhaseEstBW = m_ckboxPhaseEstBW->GetValue();
wxGetApp().m_PhaseEstDPSK = m_ckboxPhaseEstDPSK->GetValue();
#ifdef __WXMSW__
wxGetApp().m_debug_console = m_ckboxDebugConsole->GetValue();
#endif

View File

@ -114,9 +114,6 @@ class OptionsDlg : public wxDialog
wxCheckBox *m_ckboxFreeDV700txBPF;
wxCheckBox *m_ckboxFreeDV700Combine;
wxCheckBox *m_ckboxFreeDV700ManualUnSync;
wxCheckBox *m_ckboxPhaseEstBW;
wxCheckBox *m_ckboxPhaseEstDPSK;
wxRadioButton *m_rb_textEncoding1;
wxRadioButton *m_rb_textEncoding2;

View File

@ -223,14 +223,12 @@ void FreeDVInterface::stop()
rxMode_ = 0;
}
void FreeDVInterface::setRunTimeOptions(int clip, int bpf, int phaseEstBW, int phaseEstDPSK)
void FreeDVInterface::setRunTimeOptions(int clip, int bpf)
{
for (auto& dv : dvObjects_)
{
freedv_set_clip(dv, clip); // 700D/700E
freedv_set_tx_bpf(dv, bpf); // 700D/700E
freedv_set_phase_est_bandwidth_mode(dv, phaseEstBW); // 700D/2020
freedv_set_dpsk(dv, phaseEstDPSK); // 700D/2020
}
}

View File

@ -56,7 +56,7 @@ public:
int getTxMode() const { return txMode_; }
bool isRunning() const { return dvObjects_.size() > 0; }
bool isModeActive(int mode) const { return std::find(enabledModes_.begin(), enabledModes_.end(), mode) != enabledModes_.end(); }
void setRunTimeOptions(int clip, int bpf, int phaseEstBW, int phaseEstDPSK);
void setRunTimeOptions(int clip, int bpf);
const char* getCurrentModeStr() const;
bool usingTestFrames() const;

View File

@ -521,9 +521,6 @@ void MainFrame::loadConfiguration_()
wxGetApp().m_FreeDV700Combine = 1;
wxGetApp().m_FreeDV700ManualUnSync = (float)pConfig->Read(wxT("/FreeDV700/manualUnSync"), f);
wxGetApp().m_PhaseEstBW = (float)pConfig->Read(wxT("/OFDM/PhaseEstBW"), f);
wxGetApp().m_PhaseEstDPSK = (float)pConfig->Read(wxT("/OFDM/PhaseEstDPSK"), f);
wxGetApp().m_noise_snr = (float)pConfig->Read(wxT("/Noise/noise_snr"), 2);
wxGetApp().m_debug_console = (float)pConfig->Read(wxT("/Debug/console"), f);
@ -890,8 +887,6 @@ MainFrame::~MainFrame()
pConfig->Write(wxT("/Filter/SpkOutEQEnable"), wxGetApp().m_SpkOutEQEnable);
pConfig->Write(wxT("/FreeDV700/txClip"), wxGetApp().m_FreeDV700txClip);
pConfig->Write(wxT("/OFDM/PhaseEstBW"), wxGetApp().m_PhaseEstBW);
pConfig->Write(wxT("/OFDM/PhaseEstDPSK"), wxGetApp().m_PhaseEstDPSK);
pConfig->Write(wxT("/Noise/noise_snr"), wxGetApp().m_noise_snr);
pConfig->Write(wxT("/Debug/console"), wxGetApp().m_debug_console);
@ -1412,9 +1407,7 @@ void MainFrame::OnTimer(wxTimerEvent &evt)
// set some run time options (if applicable)
freedvInterface.setRunTimeOptions(
(int)wxGetApp().m_FreeDV700txClip,
(int)wxGetApp().m_FreeDV700txBPF,
(int)wxGetApp().m_PhaseEstBW,
(int)wxGetApp().m_PhaseEstDPSK);
(int)wxGetApp().m_FreeDV700txBPF);
// Test Frame Bit Error Updates ------------------------------------

View File

@ -315,9 +315,6 @@ class MainApp : public wxApp
bool m_FreeDV700Combine;
bool m_FreeDV700ManualUnSync;
bool m_PhaseEstBW;
bool m_PhaseEstDPSK;
// Noise simulation
int m_noise_snr;