kopia lustrzana https://github.com/jamescoxon/dl-fldigi
CW Offset optional
* Make CW Offset optional in the waterfall * Computation of CW offset optional and independent of BFO sideband selection * tested on K3 onlypull/1/head
rodzic
c2d0b93c62
commit
12714ebe04
|
@ -2898,6 +2898,13 @@ static void cb_btnCWIsLSB(Fl_Check_Button* o, void*) {
|
||||||
progdefaults.changed=true;
|
progdefaults.changed=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Fl_Check_Button *btnCWOffset=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
|
static void cb_btnCWOffset(Fl_Check_Button* o, void*) {
|
||||||
|
progdefaults.CWOffset=o->value();
|
||||||
|
progdefaults.changed=true;
|
||||||
|
}
|
||||||
|
|
||||||
Fl_Group *tabText_IO=(Fl_Group *)0;
|
Fl_Group *tabText_IO=(Fl_Group *)0;
|
||||||
|
|
||||||
Fl_Group *grpTalker=(Fl_Group *)0;
|
Fl_Group *grpTalker=(Fl_Group *)0;
|
||||||
|
@ -3056,6 +3063,7 @@ static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";
|
||||||
tabOperator->tooltip(_("Operator information"));
|
tabOperator->tooltip(_("Operator information"));
|
||||||
tabOperator->callback((Fl_Callback*)cb_tabOperator);
|
tabOperator->callback((Fl_Callback*)cb_tabOperator);
|
||||||
tabOperator->when(FL_WHEN_CHANGED);
|
tabOperator->when(FL_WHEN_CHANGED);
|
||||||
|
tabOperator->hide();
|
||||||
{ Fl_Group* o = new Fl_Group(5, 35, 490, 165, _("Station"));
|
{ Fl_Group* o = new Fl_Group(5, 35, 490, 165, _("Station"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||||
|
@ -6266,10 +6274,10 @@ d frequency"));
|
||||||
tabID->end();
|
tabID->end();
|
||||||
} // Fl_Group* tabID
|
} // Fl_Group* tabID
|
||||||
{ tabMisc = new Fl_Group(0, 25, 500, 345, _("Misc"));
|
{ tabMisc = new Fl_Group(0, 25, 500, 345, _("Misc"));
|
||||||
tabMisc->hide();
|
|
||||||
{ tabsMisc = new Fl_Tabs(0, 25, 500, 345);
|
{ tabsMisc = new Fl_Tabs(0, 25, 500, 345);
|
||||||
tabsMisc->selection_color((Fl_Color)FL_LIGHT1);
|
tabsMisc->selection_color((Fl_Color)FL_LIGHT1);
|
||||||
{ tabCPUspeed = new Fl_Group(0, 50, 500, 320, _("CPU"));
|
{ tabCPUspeed = new Fl_Group(0, 50, 500, 320, _("CPU"));
|
||||||
|
tabCPUspeed->hide();
|
||||||
{ Fl_Group* o = new Fl_Group(5, 60, 490, 51);
|
{ Fl_Group* o = new Fl_Group(5, 60, 490, 51);
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||||
|
@ -6512,7 +6520,6 @@ d frequency"));
|
||||||
tabSpot->end();
|
tabSpot->end();
|
||||||
} // Fl_Group* tabSpot
|
} // Fl_Group* tabSpot
|
||||||
{ tabSweetSpot = new Fl_Group(0, 50, 500, 320, _("Sweet Spot"));
|
{ tabSweetSpot = new Fl_Group(0, 50, 500, 320, _("Sweet Spot"));
|
||||||
tabSweetSpot->hide();
|
|
||||||
{ Fl_Group* o = new Fl_Group(5, 60, 490, 75);
|
{ Fl_Group* o = new Fl_Group(5, 60, 490, 75);
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||||
|
@ -6582,15 +6589,22 @@ d frequency"));
|
||||||
} // Fl_Check_Button* btnStartAtSweetSpot
|
} // Fl_Check_Button* btnStartAtSweetSpot
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
{ Fl_Group* o = new Fl_Group(5, 140, 490, 60, _("K3 A1A configuation"));
|
{ Fl_Group* o = new Fl_Group(5, 140, 490, 60, _("A1A offset configuration"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||||
{ Fl_Check_Button* o = btnCWIsLSB = new Fl_Check_Button(220, 161, 70, 15, _("CW is LSB"));
|
{ Fl_Check_Button* o = btnCWIsLSB = new Fl_Check_Button(355, 165, 70, 15, _("CW is LSB"));
|
||||||
btnCWIsLSB->tooltip(_("Select this for Elecraft K3\nOther radios should not need it."));
|
btnCWIsLSB->tooltip(_("Select this for Elecraft K3\nOther radios should not need it."));
|
||||||
btnCWIsLSB->down_box(FL_DOWN_BOX);
|
btnCWIsLSB->down_box(FL_DOWN_BOX);
|
||||||
btnCWIsLSB->callback((Fl_Callback*)cb_btnCWIsLSB);
|
btnCWIsLSB->callback((Fl_Callback*)cb_btnCWIsLSB);
|
||||||
o->value(progdefaults.CWIsLSB);
|
o->value(progdefaults.CWIsLSB);
|
||||||
} // Fl_Check_Button* btnCWIsLSB
|
} // Fl_Check_Button* btnCWIsLSB
|
||||||
|
{ Fl_Check_Button* o = btnCWOffset = new Fl_Check_Button(30, 165, 70, 15, _("Display true frequency in the waterfall"));
|
||||||
|
btnCWOffset->tooltip(_("Enable to show the true transmit frequency on the waterfall when the radio is\
|
||||||
|
in CW (A1A) mode"));
|
||||||
|
btnCWOffset->down_box(FL_DOWN_BOX);
|
||||||
|
btnCWOffset->callback((Fl_Callback*)cb_btnCWOffset);
|
||||||
|
o->value(progdefaults.CWOffset);
|
||||||
|
} // Fl_Check_Button* btnCWOffset
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
tabSweetSpot->end();
|
tabSweetSpot->end();
|
||||||
|
|
|
@ -106,8 +106,8 @@ static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {}
|
||||||
} {
|
} {
|
||||||
Fl_Group tabOperator {
|
Fl_Group tabOperator {
|
||||||
label Operator
|
label Operator
|
||||||
callback {progdefaults.changed = true;} selected
|
callback {progdefaults.changed = true;}
|
||||||
tooltip {Operator information} xywh {0 25 500 345} when 1
|
tooltip {Operator information} xywh {0 25 500 345} when 1 hide
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label Station open
|
label Station open
|
||||||
|
@ -3393,14 +3393,14 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Group tabMisc {
|
Fl_Group tabMisc {
|
||||||
label Misc open
|
label Misc open
|
||||||
xywh {0 25 500 345} hide
|
xywh {0 25 500 345}
|
||||||
} {
|
} {
|
||||||
Fl_Tabs tabsMisc {open
|
Fl_Tabs tabsMisc {open
|
||||||
xywh {0 25 500 345} selection_color 50
|
xywh {0 25 500 345} selection_color 50
|
||||||
} {
|
} {
|
||||||
Fl_Group tabCPUspeed {
|
Fl_Group tabCPUspeed {
|
||||||
label CPU open
|
label CPU open
|
||||||
xywh {0 50 500 320}
|
xywh {0 50 500 320} hide
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {5 60 490 51} box ENGRAVED_FRAME align 21
|
xywh {5 60 490 51} box ENGRAVED_FRAME align 21
|
||||||
|
@ -3615,7 +3615,7 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Group tabSweetSpot {
|
Fl_Group tabSweetSpot {
|
||||||
label {Sweet Spot} open
|
label {Sweet Spot} open
|
||||||
xywh {0 50 500 320} hide
|
xywh {0 50 500 320}
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {5 60 490 75} box ENGRAVED_FRAME align 21
|
xywh {5 60 490 75} box ENGRAVED_FRAME align 21
|
||||||
|
@ -3657,7 +3657,7 @@ OFF - keep current wf cursor position} xywh {15 101 348 20} down_box DOWN_BOX va
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {K3 A1A configuation} open
|
label {A1A offset configuration} open selected
|
||||||
xywh {5 140 490 60} box ENGRAVED_FRAME align 21
|
xywh {5 140 490 60} box ENGRAVED_FRAME align 21
|
||||||
} {
|
} {
|
||||||
Fl_Check_Button btnCWIsLSB {
|
Fl_Check_Button btnCWIsLSB {
|
||||||
|
@ -3665,9 +3665,16 @@ OFF - keep current wf cursor position} xywh {15 101 348 20} down_box DOWN_BOX va
|
||||||
callback {progdefaults.CWIsLSB=o->value();
|
callback {progdefaults.CWIsLSB=o->value();
|
||||||
progdefaults.changed=true;}
|
progdefaults.changed=true;}
|
||||||
tooltip {Select this for Elecraft K3
|
tooltip {Select this for Elecraft K3
|
||||||
Other radios should not need it.} xywh {220 161 70 15} down_box DOWN_BOX
|
Other radios should not need it.} xywh {355 165 70 15} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.CWIsLSB);}
|
code0 {o->value(progdefaults.CWIsLSB);}
|
||||||
}
|
}
|
||||||
|
Fl_Check_Button btnCWOffset {
|
||||||
|
label {Display true frequency in the waterfall}
|
||||||
|
callback {progdefaults.CWOffset=o->value();
|
||||||
|
progdefaults.changed=true;}
|
||||||
|
tooltip {Enable to show the true transmit frequency on the waterfall when the radio is in CW (A1A) mode} xywh {30 165 70 15} down_box DOWN_BOX
|
||||||
|
code0 {o->value(progdefaults.CWOffset);}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group tabText_IO {
|
Fl_Group tabText_IO {
|
||||||
|
|
|
@ -402,6 +402,7 @@ extern Fl_Value_Input2 *valRTTYsweetspot;
|
||||||
extern Fl_Value_Input2 *valPSKsweetspot;
|
extern Fl_Value_Input2 *valPSKsweetspot;
|
||||||
extern Fl_Check_Button *btnStartAtSweetSpot;
|
extern Fl_Check_Button *btnStartAtSweetSpot;
|
||||||
extern Fl_Check_Button *btnCWIsLSB;
|
extern Fl_Check_Button *btnCWIsLSB;
|
||||||
|
extern Fl_Check_Button *btnCWOffset;
|
||||||
extern Fl_Group *tabText_IO;
|
extern Fl_Group *tabText_IO;
|
||||||
extern Fl_Group *grpTalker;
|
extern Fl_Group *grpTalker;
|
||||||
extern void open_talker();
|
extern void open_talker();
|
||||||
|
|
|
@ -163,6 +163,9 @@
|
||||||
ELEM_(bool, StartAtSweetSpot, "STARTATSWEETSPOT", \
|
ELEM_(bool, StartAtSweetSpot, "STARTATSWEETSPOT", \
|
||||||
"Always start new modems at sweet spot frequencies", \
|
"Always start new modems at sweet spot frequencies", \
|
||||||
false) \
|
false) \
|
||||||
|
ELEM_(bool, CWOffset, "CWOFFSET", \
|
||||||
|
"Select if waterfall should compensate for BFO offset in CW", \
|
||||||
|
false) \
|
||||||
ELEM_(bool, CWIsLSB, "CWISLSB", \
|
ELEM_(bool, CWIsLSB, "CWISLSB", \
|
||||||
"Select if BFO is injected as LSB instead of USB", \
|
"Select if BFO is injected as LSB instead of USB", \
|
||||||
false) \
|
false) \
|
||||||
|
|
|
@ -597,8 +597,8 @@ update_freq:
|
||||||
int cwoffset = 0;
|
int cwoffset = 0;
|
||||||
string testmode = qso_opMODE->value();
|
string testmode = qso_opMODE->value();
|
||||||
if (testmode == "CW" or testmode == "CWR") {
|
if (testmode == "CW" or testmode == "CWR") {
|
||||||
cwoffset = progdefaults.CWsweetspot;
|
cwoffset = (progdefaults.CWOffset ? progdefaults.CWsweetspot : 0 );
|
||||||
usb = ! (progdefaults.CWIsLSB ^ (testmode == "CWR"));
|
usb = ! (progdefaults.CWIsLSB ^ (testmode == "CWR"));
|
||||||
}
|
}
|
||||||
if (usb)
|
if (usb)
|
||||||
dfreq = rfc + active_modem->get_txfreq() -cwoffset;
|
dfreq = rfc + active_modem->get_txfreq() -cwoffset;
|
||||||
|
@ -737,8 +737,8 @@ void WFdisp::drawScale() {
|
||||||
int cwoffset = 0;
|
int cwoffset = 0;
|
||||||
string testmode = qso_opMODE->value();
|
string testmode = qso_opMODE->value();
|
||||||
if (testmode == "CW" or testmode == "CWR") {
|
if (testmode == "CW" or testmode == "CWR") {
|
||||||
cwoffset = progdefaults.CWsweetspot;
|
cwoffset = ( progdefaults.CWOffset ? progdefaults.CWsweetspot : 0 );
|
||||||
usb = ! (progdefaults.CWIsLSB ^ (testmode == "CWR"));
|
usb = ! (progdefaults.CWIsLSB ^ (testmode == "CWR"));
|
||||||
}
|
}
|
||||||
if (usb)
|
if (usb)
|
||||||
fr = (rfc - (rfc%500))/1000.0 + 0.5*i - cwoffset/1000.0;
|
fr = (rfc - (rfc%500))/1000.0 + 0.5*i - cwoffset/1000.0;
|
||||||
|
|
Ładowanie…
Reference in New Issue