Fix merge: Replace some fsphil code.

Add dialog control to adjust DominoEX tone-spacing

Frequency tracking may be broken.
pull/1/head
John Greb 2015-05-17 02:06:42 +01:00
rodzic 0bf3608d8e
commit 681c3e3d28
7 zmienionych plików z 72 dodań i 0 usunięć

Wyświetl plik

@ -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);

Wyświetl plik

@ -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();

Wyświetl plik

@ -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;

Wyświetl plik

@ -263,6 +263,7 @@ dominoex::dominoex(trx_mode md)
}
tonespacing = 1.0 * samplerate * doublespaced / symlen;
tonespacing += progdefaults.DOMINOEX_ADJ;
bandwidth = NUMTONES * tonespacing;

Wyświetl plik

@ -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)", \
"") \

Wyświetl plik

@ -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);

Wyświetl plik

@ -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,