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;