diff --git a/fldigi_doxygen/images/config-contestia.png b/fldigi_doxygen/images/config-contestia.png
index bd802d64..25edc521 100644
Binary files a/fldigi_doxygen/images/config-contestia.png and b/fldigi_doxygen/images/config-contestia.png differ
diff --git a/fldigi_doxygen/images/config-olivia.png b/fldigi_doxygen/images/config-olivia.png
index 4c0d5383..7914b8c6 100644
Binary files a/fldigi_doxygen/images/config-olivia.png and b/fldigi_doxygen/images/config-olivia.png differ
diff --git a/fldigi_doxygen/user_src_docs/configOlivia.txt b/fldigi_doxygen/user_src_docs/configOlivia.txt
index dae6bb6b..5ddff48f 100644
--- a/fldigi_doxygen/user_src_docs/configOlivia.txt
+++ b/fldigi_doxygen/user_src_docs/configOlivia.txt
@@ -23,6 +23,12 @@ rate, and excessive latency which is the apparent typing delay caused
by the integration period.
+Each Olivia transmission can start and end with two distinctive tones. These tones
+are exactly at the lowest and uppermost tones for the selection of tones and bandwidth.
+They can assist the receiving station in tuning the Olivia signal on the waterfall.
+
+The start/stop tones can be disabled.
+
See \ref olivia_page "Operating Olivia" for additional information.
diff --git a/src/contestia/contestia.cxx b/src/contestia/contestia.cxx
index 0a48dc27..857aef1b 100644
--- a/src/contestia/contestia.cxx
+++ b/src/contestia/contestia.cxx
@@ -91,6 +91,8 @@ void contestia::rx_flush()
void contestia::send_tones()
{
+ if (!progdefaults.contestia_start_tones) return;
+
double freqa, freqb;
tone_bw = bandwidth;
tone_midfreq = txbasefreq;
diff --git a/src/dialogs/confdialog.cxx b/src/dialogs/confdialog.cxx
index 8bdab147..3a75d87b 100644
--- a/src/dialogs/confdialog.cxx
+++ b/src/dialogs/confdialog.cxx
@@ -3200,6 +3200,13 @@ static void cb_btnOlivia_8bit(Fl_Check_Button* o, void*) {
progdefaults.changed = true;
}
+Fl_Check_Button *btnOlivia_start_stop_tones=(Fl_Check_Button *)0;
+
+static void cb_btnOlivia_start_stop_tones(Fl_Check_Button* o, void*) {
+ progdefaults.olivia_start_tones = o->value();
+progdefaults.changed = true;
+}
+
Fl_Group *tabContestia=(Fl_Group *)0;
Fl_ListBox *i_listbox_contestia_bandwidth=(Fl_ListBox *)0;
@@ -3243,6 +3250,13 @@ static void cb_btnContestia_8bit(Fl_Check_Button* o, void*) {
progdefaults.changed = true;
}
+Fl_Check_Button *btnContestia_start_stop_tones=(Fl_Check_Button *)0;
+
+static void cb_btnContestia_start_stop_tones(Fl_Check_Button* o, void*) {
+ progdefaults.contestia_start_tones = o->value();
+progdefaults.changed = true;
+}
+
Fl_Group *tabPSK=(Fl_Group *)0;
Fl_Tabs *tabsPSK=(Fl_Tabs *)0;
@@ -8488,7 +8502,7 @@ i on a\ntouch screen device such as a tablet."));
i_listbox_olivia_bandwidth->when(FL_WHEN_RELEASE);
o->add(szOliviaBandwidth);
o->index(progdefaults.oliviabw);
- o->labelsize(FL_NORMAL_SIZE);
+ o->labelsize(FL_NORMAL_SIZE);
i_listbox_olivia_bandwidth->end();
} // Fl_ListBox* i_listbox_olivia_bandwidth
{ Fl_ListBox* o = i_listbox_olivia_tones = new Fl_ListBox(371, 96, 70, 22, _("Tones"));
@@ -8505,7 +8519,7 @@ i on a\ntouch screen device such as a tablet."));
i_listbox_olivia_tones->when(FL_WHEN_RELEASE);
o->add(szOliviaTones);
o->index(progdefaults.oliviatones);
- o->labelsize(FL_NORMAL_SIZE);
+ o->labelsize(FL_NORMAL_SIZE);
i_listbox_olivia_tones->end();
} // Fl_ListBox* i_listbox_olivia_tones
{ Fl_Group* o = new Fl_Group(110, 135, 379, 133, _("Receive synchronizer"));
@@ -8529,6 +8543,7 @@ i on a\ntouch screen device such as a tablet."));
cntOlivia_smargin->align(Fl_Align(FL_ALIGN_RIGHT));
cntOlivia_smargin->when(FL_WHEN_CHANGED);
o->labelsize(FL_NORMAL_SIZE);
+ o->value(progdefaults.oliviasmargin);
} // Fl_Counter2* cntOlivia_smargin
{ Fl_Counter2* o = cntOlivia_sinteg = new Fl_Counter2(125, 198, 70, 22, _("Integration period (FEC blocks)"));
cntOlivia_sinteg->tooltip(_("Change ONLY to experiment"));
@@ -8548,6 +8563,7 @@ i on a\ntouch screen device such as a tablet."));
cntOlivia_sinteg->align(Fl_Align(FL_ALIGN_RIGHT));
cntOlivia_sinteg->when(FL_WHEN_CHANGED);
o->labelsize(FL_NORMAL_SIZE);
+ o->value(progdefaults.oliviasinteg);
} // Fl_Counter2* cntOlivia_sinteg
{ Fl_Check_Button* o = btn_olivia_reset_fec = new Fl_Check_Button(126, 230, 349, 20, _("Reset FEC blocks when changing BW or Tones"));
btn_olivia_reset_fec->tooltip(_("Enable this for UTF-8 character transmission"));
@@ -8557,18 +8573,25 @@ i on a\ntouch screen device such as a tablet."));
} // Fl_Check_Button* btn_olivia_reset_fec
o->end();
} // Fl_Group* o
- { btnOlivia_8bit = new Fl_Check_Button(131, 291, 265, 20, _("8-bit extended characters (UTF-8)"));
+ { Fl_Check_Button* o = btnOlivia_8bit = new Fl_Check_Button(131, 291, 265, 20, _("8-bit extended characters (UTF-8)"));
btnOlivia_8bit->tooltip(_("Enable this for UTF-8 character transmission"));
btnOlivia_8bit->down_box(FL_DOWN_BOX);
btnOlivia_8bit->callback((Fl_Callback*)cb_btnOlivia_8bit);
+ o->value(progdefaults.olivia8bit);
} // Fl_Check_Button* btnOlivia_8bit
+ { Fl_Check_Button* o = btnOlivia_start_stop_tones = new Fl_Check_Button(131, 315, 265, 20, _("xmt start/stop tones"));
+ btnOlivia_start_stop_tones->tooltip(_("Enable this to send start/stop tones"));
+ btnOlivia_start_stop_tones->down_box(FL_DOWN_BOX);
+ btnOlivia_start_stop_tones->callback((Fl_Callback*)cb_btnOlivia_start_stop_tones);
+ o->value(progdefaults.olivia_start_tones);
+ } // Fl_Check_Button* btnOlivia_start_stop_tones
o->end();
} // Fl_Group* o
tabOlivia->end();
} // Fl_Group* tabOlivia
{ tabContestia = new Fl_Group(0, 50, 600, 330, _("Cont"));
tabContestia->hide();
- { Fl_Group* o = new Fl_Group(55, 80, 490, 200);
+ { Fl_Group* o = new Fl_Group(55, 80, 490, 235);
o->box(FL_ENGRAVED_FRAME);
{ Fl_ListBox* o = i_listbox_contestia_bandwidth = new Fl_ListBox(110, 100, 85, 22, _("Bandwidth"));
i_listbox_contestia_bandwidth->tooltip(_("Select bandwidth"));
@@ -8653,6 +8676,12 @@ i on a\ntouch screen device such as a tablet."));
btnContestia_8bit->callback((Fl_Callback*)cb_btnContestia_8bit);
btnContestia_8bit->hide();
} // Fl_Check_Button* btnContestia_8bit
+ { Fl_Check_Button* o = btnContestia_start_stop_tones = new Fl_Check_Button(141, 280, 265, 20, _("xmt start/stop tones"));
+ btnContestia_start_stop_tones->tooltip(_("Enable this to send start/stop tones"));
+ btnContestia_start_stop_tones->down_box(FL_DOWN_BOX);
+ btnContestia_start_stop_tones->callback((Fl_Callback*)cb_btnContestia_start_stop_tones);
+ o->value(progdefaults.contestia_start_tones);
+ } // Fl_Check_Button* btnContestia_start_stop_tones
o->end();
} // Fl_Group* o
tabContestia->end();
diff --git a/src/dialogs/confdialog.fl b/src/dialogs/confdialog.fl
index 079a428f..81e2efa5 100644
--- a/src/dialogs/confdialog.fl
+++ b/src/dialogs/confdialog.fl
@@ -3880,7 +3880,7 @@ progdefaults.changed = true;}
label Oliv open
xywh {0 50 600 330} hide
} {
- Fl_Group {} {
+ Fl_Group {} {open
xywh {55 76 490 280} box ENGRAVED_FRAME
} {
Fl_Group i_listbox_olivia_bandwidth {
@@ -3891,8 +3891,8 @@ resetOLIVIA();
progdefaults.changed = true;} open
tooltip {Select bandwidth} xywh {110 96 85 22} box DOWN_BOX color 7 align 8
code0 {o->add(szOliviaBandwidth);}
- code1 {o->index(progdefaults.oliviabw);
- o->labelsize(FL_NORMAL_SIZE);}
+ code1 {o->index(progdefaults.oliviabw);}
+ code2 {o->labelsize(FL_NORMAL_SIZE);}
class Fl_ListBox
} {}
Fl_Group i_listbox_olivia_tones {
@@ -3903,8 +3903,8 @@ resetOLIVIA();
progdefaults.changed = true;} open
tooltip {Select number of tones} xywh {371 96 70 22} box DOWN_BOX color 7 align 8
code0 {o->add(szOliviaTones);}
- code1 {o->index(progdefaults.oliviatones);
- o->labelsize(FL_NORMAL_SIZE);}
+ code1 {o->index(progdefaults.oliviatones);}
+ code2 {o->labelsize(FL_NORMAL_SIZE);}
class Fl_ListBox
} {}
Fl_Group {} {
@@ -3918,6 +3918,7 @@ resetOLIVIA();
progdefaults.changed = true;}
tooltip {Change ONLY to experiment} xywh {125 166 70 22} type Simple align 8 minimum 2 maximum 128 step 1 value 8
code0 {o->labelsize(FL_NORMAL_SIZE);}
+ code1 {o->value(progdefaults.oliviasmargin);}
class Fl_Counter2
}
Fl_Counter cntOlivia_sinteg {
@@ -3927,6 +3928,7 @@ resetOLIVIA();
progdefaults.changed = true;}
tooltip {Change ONLY to experiment} xywh {125 198 70 22} type Simple align 8 minimum 2 maximum 128 step 1 value 4
code0 {o->labelsize(FL_NORMAL_SIZE);}
+ code1 {o->value(progdefaults.oliviasinteg);}
class Fl_Counter2
}
Fl_Check_Button btn_olivia_reset_fec {
@@ -3942,6 +3944,14 @@ progdefaults.changed = true;}
callback {progdefaults.olivia8bit = o->value();
progdefaults.changed = true;}
tooltip {Enable this for UTF-8 character transmission} xywh {131 291 265 20} down_box DOWN_BOX
+ code0 {o->value(progdefaults.olivia8bit);}
+ }
+ Fl_Check_Button btnOlivia_start_stop_tones {
+ label {xmt start/stop tones}
+ callback {progdefaults.olivia_start_tones = o->value();
+progdefaults.changed = true;}
+ tooltip {Enable this to send start/stop tones} xywh {131 315 265 20} down_box DOWN_BOX
+ code0 {o->value(progdefaults.olivia_start_tones);}
}
}
}
@@ -3950,7 +3960,7 @@ progdefaults.changed = true;}
xywh {0 50 600 330} hide
} {
Fl_Group {} {open
- xywh {55 80 490 200} box ENGRAVED_FRAME
+ xywh {55 80 490 235} box ENGRAVED_FRAME
} {
Fl_Group i_listbox_contestia_bandwidth {
label Bandwidth
@@ -4005,6 +4015,13 @@ progdefaults.changed = true;}
progdefaults.changed = true;}
tooltip {Enable this for Latin-1 accented characters} xywh {79 249 200 20} down_box DOWN_BOX hide
}
+ Fl_Check_Button btnContestia_start_stop_tones {
+ label {xmt start/stop tones}
+ callback {progdefaults.contestia_start_tones = o->value();
+progdefaults.changed = true;}
+ tooltip {Enable this to send start/stop tones} xywh {141 280 265 20} down_box DOWN_BOX
+ code0 {o->value(progdefaults.contestia_start_tones);}
+ }
}
}
Fl_Group tabPSK {
diff --git a/src/include/confdialog.h b/src/include/confdialog.h
index fdcaf720..6553cdf8 100644
--- a/src/include/confdialog.h
+++ b/src/include/confdialog.h
@@ -357,12 +357,14 @@ extern Fl_Counter2 *cntOlivia_smargin;
extern Fl_Counter2 *cntOlivia_sinteg;
extern Fl_Check_Button *btn_olivia_reset_fec;
extern Fl_Check_Button *btnOlivia_8bit;
+extern Fl_Check_Button *btnOlivia_start_stop_tones;
extern Fl_Group *tabContestia;
extern Fl_ListBox *i_listbox_contestia_bandwidth;
extern Fl_ListBox *i_listbox_contestia_tones;
extern Fl_Counter2 *cntContestia_smargin;
extern Fl_Counter2 *cntContestia_sinteg;
extern Fl_Check_Button *btnContestia_8bit;
+extern Fl_Check_Button *btnContestia_start_stop_tones;
extern Fl_Group *tabPSK;
extern Fl_Tabs *tabsPSK;
extern Fl_Group *grpPSK;
diff --git a/src/include/configuration.h b/src/include/configuration.h
index af3c156a..630c2ee1 100644
--- a/src/include/configuration.h
+++ b/src/include/configuration.h
@@ -517,6 +517,9 @@
ELEM_(bool, olivia8bit, "OLIVIA8BIT", \
"8-bit extended characters", \
true) \
+ ELEM_(bool, olivia_start_tones, "OLIVIASTARTTONES", \
+ "Send start/stop tones", \
+ true) \
/* CONTESTIA */ \
ELEM_(int, contestiatones, "CONTESTIATONES", \
"Number of tones. Values are as follows:\n" \
@@ -538,6 +541,9 @@
ELEM_(bool, contestia_reset_fec, "CONTESTIARESETFEC", \
"Force Integration (FEC) depth to be reset when new BW/Tones selected", \
false) \
+ ELEM_(bool, contestia_start_tones, "CONTESTIASTARTTONES", \
+ "Send start/stop tones", \
+ true) \
/* THOR */ \
ELEM_(double, THOR_BW, "THORBW", \
"Filter bandwidth factor (bandwidth relative to signal width)", \
diff --git a/src/olivia/olivia.cxx b/src/olivia/olivia.cxx
index 79671275..e83ccdb0 100644
--- a/src/olivia/olivia.cxx
+++ b/src/olivia/olivia.cxx
@@ -105,6 +105,8 @@ void olivia::rx_flush()
void olivia::send_tones()
{
+ if (!progdefaults.olivia_start_tones) return;
+
double freqa, freqb;
tone_bw = bandwidth;
tone_midfreq = txbasefreq;