diff --git a/USER_MANUAL.html b/USER_MANUAL.html
index 5a69a3a3..156c4320 100644
--- a/USER_MANUAL.html
+++ b/USER_MANUAL.html
@@ -196,6 +196,7 @@
FreeDV Reporter
The frequency that FreeDV reports is set by changing the “Report Frequency” drop down box in the main window. This is in kilohertz (kHz) and will turn red if the entered value is invalid. If Hamlib support is also enabled, this frequency will automatically remain in sync with the current VFO on the radio (i.e. if the frequency is changed in the application, the radio will also change its frequency).
+Note: in some setups (such as when using ALE), it is not preferred to have the reporting frequency automatically be in sync with the radio. For example, in the case of ALE, the radio’s frequency changes multiple times per second while waiting for a contact, which is faster than FreeDV can pull the latest from the radio (every five seconds). This can be disabled by enabling “Manual Frequency Reporting” in Tools->Options.
FreeDV will also show the callsigns of previously received signals. To view those, click on the arrow next to the last received callsign at the bottom of the window. These are in descending order by time of receipt (i.e. the most recently received callsign will appear at the top of the list).
Multiple Mode Support
FreeDV can simultaneously decode the following modes when selected prior to pushing “Start”:
@@ -625,6 +626,7 @@ FMA - Supports FMA extensions using YMM state
Auto-size columns in Audio Options to improve readability. (PR #461)
Add support for modifying the drop down frequency list. (PR #460)
Preserve size and position of Audio Configuration dialog. (PR #466)
+Add ability to suppress automatic frequency reporting on radio changes. (PR #469)
Build system:
diff --git a/USER_MANUAL.md b/USER_MANUAL.md
index 61e88cb1..7aa970c2 100644
--- a/USER_MANUAL.md
+++ b/USER_MANUAL.md
@@ -339,6 +339,11 @@ is in kilohertz (kHz) and will turn red if the entered value is invalid. If Haml
this frequency will automatically remain in sync with the current VFO on the radio (i.e. if the frequency is changed
in the application, the radio will also change its frequency).
+*Note: in some setups (such as when using ALE), it is not preferred to have the reporting frequency automatically be
+in sync with the radio. For example, in the case of ALE, the radio's frequency changes multiple times per second while
+waiting for a contact, which is faster than FreeDV can pull the latest from the radio (every five seconds). This can
+be disabled by enabling "Manual Frequency Reporting" in Tools->Options.*
+
FreeDV will also show the callsigns of previously received signals. To view those, click on the arrow
next to the last received callsign at the bottom of the window. These are in descending order by time
of receipt (i.e. the most recently received callsign will appear at the top of the list).
@@ -884,6 +889,7 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes
* Auto-size columns in Audio Options to improve readability. (PR #461)
* Add support for modifying the drop down frequency list. (PR #460)
* Preserve size and position of Audio Configuration dialog. (PR #466)
+ * Add ability to suppress automatic frequency reporting on radio changes. (PR #469)
3. Build system:
* Bump Codec2 version to v1.1.1. (PR #437)
* Generate PDF/HTML docs only on PR merge. (PR #471)
diff --git a/src/config/ReportingConfiguration.cpp b/src/config/ReportingConfiguration.cpp
index 98d67966..436862d9 100644
--- a/src/config/ReportingConfiguration.cpp
+++ b/src/config/ReportingConfiguration.cpp
@@ -33,6 +33,8 @@ ReportingConfiguration::ReportingConfiguration()
, reportingFrequency("/Reporting/Frequency", 0)
+ , manualFrequencyReporting("/Reporting/ManualFrequencyReporting", false)
+
, pskReporterEnabled("/Reporting/PSKReporter/Enable", false)
, freedvReporterEnabled("/Reporting/FreeDV/Enable", true)
@@ -87,6 +89,8 @@ void ReportingConfiguration::load(wxConfigBase* config)
load_(config, reportingFrequencyList);
+ load_(config, manualFrequencyReporting);
+
// Special load handling for reporting below.
wxString freqStr = config->Read(reportingFrequency.getElementName(), oldFreqStr);
reportingFrequency.setWithoutProcessing(atoll(freqStr.ToUTF8()));
@@ -109,6 +113,8 @@ void ReportingConfiguration::save(wxConfigBase* config)
save_(config, reportingFrequencyList);
+ save_(config, manualFrequencyReporting);
+
// Special save handling for reporting below.
wxString tempFreqStr = wxString::Format(wxT("%" PRIu64), reportingFrequency.getWithoutProcessing());
config->Write(reportingFrequency.getElementName(), tempFreqStr);
diff --git a/src/config/ReportingConfiguration.h b/src/config/ReportingConfiguration.h
index c4ce5e60..78b7b779 100644
--- a/src/config/ReportingConfiguration.h
+++ b/src/config/ReportingConfiguration.h
@@ -42,6 +42,8 @@ public:
// uint64_t inside the FreeDV application.
ConfigurationDataElement reportingFrequency;
+ ConfigurationDataElement manualFrequencyReporting;
+
ConfigurationDataElement pskReporterEnabled;
ConfigurationDataElement freedvReporterEnabled;
diff --git a/src/dlg_options.cpp b/src/dlg_options.cpp
index c9947590..fdfb377b 100644
--- a/src/dlg_options.cpp
+++ b/src/dlg_options.cpp
@@ -116,6 +116,11 @@ OptionsDlg::OptionsDlg(wxWindow* parent, wxWindowID id, const wxString& title, c
sbSizerReportingRows->Add(sbSizerReportingGeneral, 0, wxALL | wxEXPAND, 5);
+ wxBoxSizer* sbSizerReportingManualFrequency = new wxBoxSizer(wxHORIZONTAL);
+ m_ckboxManualFrequencyReporting = new wxCheckBox(m_reportingTab, wxID_ANY, _("Manual Frequency Reporting"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE);
+ sbSizerReportingManualFrequency->Add(m_ckboxManualFrequencyReporting, 0, wxALL | wxEXPAND, 5);
+ sbSizerReportingRows->Add(sbSizerReportingManualFrequency, 0, wxALL | wxEXPAND, 5);
+
// PSK Reporter options
wxBoxSizer* sbSizerReportingPSK = new wxBoxSizer(wxHORIZONTAL);
m_ckboxPskReporterEnable = new wxCheckBox(m_reportingTab, wxID_ANY, _("Enable PSK Reporter"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE);
@@ -737,7 +742,8 @@ void OptionsDlg::ExchangeData(int inout, bool storePersistent)
m_ckboxReportingEnable->SetValue(wxGetApp().appConfiguration.reportingConfiguration.reportingEnabled);
m_txt_callsign->SetValue(wxGetApp().appConfiguration.reportingConfiguration.reportingCallsign);
m_txt_grid_square->SetValue(wxGetApp().appConfiguration.reportingConfiguration.reportingGridSquare);
-
+ m_ckboxManualFrequencyReporting->SetValue(wxGetApp().appConfiguration.reportingConfiguration.manualFrequencyReporting);
+
// PSK Reporter options
m_ckboxPskReporterEnable->SetValue(wxGetApp().appConfiguration.reportingConfiguration.pskReporterEnabled);
@@ -869,7 +875,8 @@ void OptionsDlg::ExchangeData(int inout, bool storePersistent)
wxGetApp().appConfiguration.reportingConfiguration.reportingEnabled = m_ckboxReportingEnable->GetValue();
wxGetApp().appConfiguration.reportingConfiguration.reportingCallsign = m_txt_callsign->GetValue();
wxGetApp().appConfiguration.reportingConfiguration.reportingGridSquare = m_txt_grid_square->GetValue();
-
+ wxGetApp().appConfiguration.reportingConfiguration.manualFrequencyReporting = m_ckboxManualFrequencyReporting->GetValue();
+
// PSK Reporter options
wxGetApp().appConfiguration.reportingConfiguration.pskReporterEnabled = m_ckboxPskReporterEnable->GetValue();
@@ -1070,6 +1077,7 @@ void OptionsDlg::updateReportingState()
m_txtCtrlCallSign->Enable(false);
m_txt_callsign->Enable(true);
m_txt_grid_square->Enable(true);
+ m_ckboxManualFrequencyReporting->Enable(true);
m_ckboxPskReporterEnable->Enable(true);
m_ckboxFreeDVReporterEnable->Enable(true);
@@ -1090,6 +1098,7 @@ void OptionsDlg::updateReportingState()
m_ckboxPskReporterEnable->Enable(false);
m_ckboxFreeDVReporterEnable->Enable(false);
m_freedvReporterHostname->Enable(false);
+ m_ckboxManualFrequencyReporting->Enable(false);
}
}
else
@@ -1099,6 +1108,7 @@ void OptionsDlg::updateReportingState()
m_txtCtrlCallSign->Enable(false);
m_txt_callsign->Enable(false);
m_txt_grid_square->Enable(false);
+ m_ckboxManualFrequencyReporting->Enable(false);
m_ckboxPskReporterEnable->Enable(false);
m_ckboxFreeDVReporterEnable->Enable(false);
m_freedvReporterHostname->Enable(false);
diff --git a/src/dlg_options.h b/src/dlg_options.h
index 570c1f61..381e60fe 100644
--- a/src/dlg_options.h
+++ b/src/dlg_options.h
@@ -130,6 +130,8 @@ class OptionsDlg : public wxDialog
wxTextCtrl *m_txt_callsign;
wxTextCtrl *m_txt_grid_square;
+ wxCheckBox *m_ckboxManualFrequencyReporting;
+
wxCheckBox *m_ckboxPskReporterEnable;
wxCheckBox *m_ckboxFreeDVReporterEnable;
diff --git a/src/hamlib.cpp b/src/hamlib.cpp
index 87de8d0b..bdaeb6f6 100644
--- a/src/hamlib.cpp
+++ b/src/hamlib.cpp
@@ -648,7 +648,10 @@ void Hamlib::update_mode_status()
}
// Update frequency box
- m_freqBox->SetValue(wxString::Format("%.4f", m_currFreq/1000.0/1000.0));
+ if (m_freqBox != nullptr)
+ {
+ m_freqBox->SetValue(wxString::Format("%.4f", m_currFreq/1000.0/1000.0));
+ }
// Refresh
m_modeBox->Refresh();
diff --git a/src/ongui.cpp b/src/ongui.cpp
index 18465c7a..91f70cc5 100644
--- a/src/ongui.cpp
+++ b/src/ongui.cpp
@@ -263,7 +263,11 @@ bool MainFrame::OpenHamlibRig() {
{
wxGetApp().m_hamlib->setFrequencyAndMode(wxGetApp().appConfiguration.reportingConfiguration.reportingFrequency, wxGetApp().appConfiguration.rigControlConfiguration.hamlibUseAnalogModes ? true : g_analog);
}
- wxGetApp().m_hamlib->enable_mode_detection(m_txtModeStatus, m_cboReportFrequency, g_mode == FREEDV_MODE_2400B);
+ wxGetApp().m_hamlib->enable_mode_detection(
+ m_txtModeStatus,
+ wxGetApp().appConfiguration.reportingConfiguration.reportingEnabled &&
+ wxGetApp().appConfiguration.reportingConfiguration.manualFrequencyReporting ? nullptr : m_cboReportFrequency,
+ g_mode == FREEDV_MODE_2400B);
}
return status;