kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Fix merge: Replace some fsphil code.
Add dialog control to adjust DominoEX tone-spacing Frequency tracking may be broken.pull/1/head
rodzic
0bf3608d8e
commit
681c3e3d28
|
@ -2711,6 +2711,14 @@ resetDOMEX();
|
|||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Counter2 *valDominoEX_ADJ=(Fl_Counter2 *)0;
|
||||
|
||||
static void cb_valDominoEX_ADJ(Fl_Counter2* o, void*) {
|
||||
progdefaults.DOMINOEX_ADJ = o->value();
|
||||
resetDOMEX();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *chkDominoEX_FEC=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_chkDominoEX_FEC(Fl_Check_Button* o, void*) {
|
||||
|
@ -7941,6 +7949,24 @@ i on a\ntouch screen device such as a tablet."));
|
|||
o->value(progdefaults.DOMINOEX_BW);
|
||||
o->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Counter2* valDominoEX_BW
|
||||
{ Fl_Counter2* o = valDominoEX_ADJ = new Fl_Counter2(156, 166, 63, 20, _("Tone-spacing adjust"));
|
||||
valDominoEX_ADJ->tooltip(_("Tone-spacing adjust"));
|
||||
valDominoEX_ADJ->type(1);
|
||||
valDominoEX_ADJ->box(FL_UP_BOX);
|
||||
valDominoEX_ADJ->color(FL_BACKGROUND_COLOR);
|
||||
valDominoEX_ADJ->selection_color(FL_INACTIVE_COLOR);
|
||||
valDominoEX_ADJ->labeltype(FL_NORMAL_LABEL);
|
||||
valDominoEX_ADJ->labelfont(0);
|
||||
valDominoEX_ADJ->labelsize(14);
|
||||
valDominoEX_ADJ->labelcolor(FL_FOREGROUND_COLOR);
|
||||
valDominoEX_ADJ->minimum(-100);
|
||||
valDominoEX_ADJ->maximum(100);
|
||||
valDominoEX_ADJ->callback((Fl_Callback*)cb_valDominoEX_ADJ);
|
||||
valDominoEX_ADJ->align(Fl_Align(FL_ALIGN_RIGHT));
|
||||
valDominoEX_ADJ->when(FL_WHEN_CHANGED);
|
||||
o->value(progdefaults.DOMINOEX_ADJ);
|
||||
o->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Counter2* valDominoEX_ADJ
|
||||
{ Fl_Check_Button* o = chkDominoEX_FEC = new Fl_Check_Button(65, 171, 51, 20, _("FEC"));
|
||||
chkDominoEX_FEC->tooltip(_("Enable MultiPSK-compatible FEC"));
|
||||
chkDominoEX_FEC->down_box(FL_DOWN_BOX);
|
||||
|
|
|
@ -3338,6 +3338,16 @@ progdefaults.changed = true;}
|
|||
code1 {o->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Counter2
|
||||
}
|
||||
Fl_Counter valDominoEX_ADJ {
|
||||
label {Tone-spacing adjust}
|
||||
callback {progdefaults.DOMINOEX_ADJ = o->value();
|
||||
resetDOMEX();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Tone-spacing adjust} xywh {156 166 63 20} type Simple align 8 minimum -100 maximum 100 value 0
|
||||
code0 {o->value(progdefaults.DOMINOEX_ADJ);}
|
||||
code1 {o->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Counter2
|
||||
}
|
||||
Fl_Check_Button chkDominoEX_FEC {
|
||||
label FEC
|
||||
callback {progdefaults.DOMINOEX_FEC = o->value();
|
||||
|
|
|
@ -296,6 +296,7 @@ extern Fl_Group *tabDomEX;
|
|||
extern Fl_Input2 *txtSecondary;
|
||||
extern Fl_Check_Button *valDominoEX_FILTER;
|
||||
extern Fl_Counter2 *valDominoEX_BW;
|
||||
extern Fl_Counter2 *valDominoEX_ADJ;
|
||||
extern Fl_Check_Button *chkDominoEX_FEC;
|
||||
extern Fl_Value_Slider2 *valDomCWI;
|
||||
extern Fl_Counter2 *valDominoEX_PATHS;
|
||||
|
|
|
@ -263,6 +263,7 @@ dominoex::dominoex(trx_mode md)
|
|||
}
|
||||
|
||||
tonespacing = 1.0 * samplerate * doublespaced / symlen;
|
||||
tonespacing += progdefaults.DOMINOEX_ADJ;
|
||||
|
||||
bandwidth = NUMTONES * tonespacing;
|
||||
|
||||
|
|
|
@ -587,6 +587,9 @@
|
|||
ELEM_(double, DOMINOEX_BW, "DOMINOEXBW", \
|
||||
"Filter bandwidth factor (bandwidth relative to signal width)", \
|
||||
2.0) \
|
||||
ELEM_(double, DOMINOEX_ADJ, "DOMINOEXADJ", \
|
||||
"Adjust tone-spacing", \
|
||||
0.0) \
|
||||
ELEM_(std::string, secText, "SECONDARYTEXT", \
|
||||
"Secondary text (sent during keyboard idle times)", \
|
||||
"") \
|
||||
|
|
|
@ -120,6 +120,7 @@ public:
|
|||
virtual void set_freq(double);
|
||||
/// Inlining small formulas is still faster and shorter.
|
||||
int get_freq() const { return (int)( frequency + 0.5 ); }
|
||||
double track_freq(double freq);
|
||||
void init_freqlock();
|
||||
void set_freqlock(bool);
|
||||
void set_sigsearch(int n) { sigsearch = n; freqerr = 0.0;};
|
||||
|
@ -159,6 +160,9 @@ public:
|
|||
CAP_TX = 1 << 6
|
||||
};
|
||||
|
||||
// UKHAS frequency tracking
|
||||
unsigned char track_freq_lock;
|
||||
|
||||
// for CW modem use only
|
||||
bool get_cwTrack();
|
||||
void set_cwTrack(bool);
|
||||
|
|
|
@ -225,6 +225,7 @@ modem::modem()
|
|||
s2n_ncount = s2n_sum = s2n_sum2 = s2n_metric = 0.0;
|
||||
s2n_valid = false;
|
||||
|
||||
track_freq_lock = 0;
|
||||
bandwidth = 0.0;
|
||||
}
|
||||
|
||||
|
@ -249,8 +250,34 @@ void modem::init()
|
|||
set_freq(wf->Carrier());
|
||||
}
|
||||
|
||||
double modem::track_freq(double freq)
|
||||
{
|
||||
/* locking code in logger/rx_extract.cxx may have been lost in a previous merge
|
||||
* - was added in commit 78f05cef33dc2c59211eebedeae4d97a11529b1d */
|
||||
if(track_freq_lock) return(freq);
|
||||
|
||||
if(freq >= progdefaults.track_freq_min &&
|
||||
freq <= progdefaults.track_freq_max)
|
||||
return(freq);
|
||||
|
||||
double rf = wf->rfcarrier();
|
||||
double cf = (progdefaults.track_freq_max + progdefaults.track_freq_min) / 2;
|
||||
|
||||
if(rf <= 0) return(freq);
|
||||
|
||||
if(wf->USB()) rf += freq - cf;
|
||||
else rf -= freq - cf;
|
||||
|
||||
qsy(rf);
|
||||
|
||||
return(cf);
|
||||
}
|
||||
|
||||
void modem::set_freq(double freq)
|
||||
{
|
||||
if(progdefaults.track_freq)
|
||||
freq = track_freq(freq);
|
||||
|
||||
frequency = CLAMP(
|
||||
freq,
|
||||
progdefaults.LowFreqCutoff + bandwidth / 2,
|
||||
|
|
Ładowanie…
Reference in New Issue