PKS mailserver mod

Changes to psk mail server signal acquisition allow operator to
    compensate for QRM.
pull/2/head
David Freese 2009-08-12 07:38:45 -05:00
rodzic bf164ebe96
commit 62608ea68b
5 zmienionych plików z 151 dodań i 53 usunięć

Wyświetl plik

@ -914,7 +914,7 @@ progdefaults.changed = true;
Fl_Counter *cntACQsn=(Fl_Counter *)0;
static void cb_cntACQsn(Fl_Counter* o, void*) {
progdefaults.ACQsn = (int)o->value();
progdefaults.ACQsn = o->value();
progdefaults.changed = true;
}
@ -930,10 +930,11 @@ static void cb_seconds(Fl_Counter* o, void*) {
progdefaults.changed = true;
}
Fl_Check_Button *btnPSKmailSweetSpot=(Fl_Check_Button *)0;
Fl_Counter *cntServerCarrier=(Fl_Counter *)0;
static void cb_btnPSKmailSweetSpot(Fl_Check_Button* o, void*) {
progdefaults.PSKmailSweetSpot = o->value();
static void cb_cntServerCarrier(Fl_Counter* o, void*) {
progdefaults.ServerCarrier = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;
}
@ -945,6 +946,28 @@ wf->redraw_marker();
progdefaults.changed = true;
}
Fl_Counter *cntServerACQsn=(Fl_Counter *)0;
static void cb_cntServerACQsn(Fl_Counter* o, void*) {
progdefaults.ServerACQsn = o->value();
progdefaults.changed = true;
}
Fl_Counter *cntServerAFCrange=(Fl_Counter *)0;
static void cb_cntServerAFCrange(Fl_Counter* o, void*) {
progdefaults.ServerAFCrange = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;
}
Fl_Check_Button *btnPSKmailSweetSpot=(Fl_Check_Button *)0;
static void cb_btnPSKmailSweetSpot(Fl_Check_Button* o, void*) {
progdefaults.PSKmailSweetSpot = o->value();
progdefaults.changed = true;
}
Fl_Check_Button *btnMarquee=(Fl_Check_Button *)0;
static void cb_btnMarquee(Fl_Check_Button* o, void*) {
@ -2184,13 +2207,12 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
o->selection_color((Fl_Color)51);
o->labelsize(18);
o->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
{ tabsConfigure = new Fl_Tabs(0, 0, 505, 372);
{ tabsConfigure = new Fl_Tabs(0, 0, 517, 372);
tabsConfigure->color(FL_LIGHT1);
tabsConfigure->selection_color(FL_LIGHT1);
{ tabOperator = new Fl_Group(0, 25, 500, 345, _("Operator"));
tabOperator->callback((Fl_Callback*)cb_tabOperator);
tabOperator->when(FL_WHEN_CHANGED);
tabOperator->hide();
{ Fl_Group* o = new Fl_Group(5, 35, 490, 165, _("Station"));
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
@ -2774,9 +2796,9 @@ an merging"));
} // Fl_Tabs* tabsWaterfall
tabWaterfall->end();
} // Fl_Group* tabWaterfall
{ tabModems = new Fl_Group(0, 25, 500, 345, _("Modems"));
{ tabModems = new Fl_Group(0, 25, 517, 345, _("Modems"));
tabModems->hide();
{ tabsModems = new Fl_Tabs(0, 25, 500, 345);
{ tabsModems = new Fl_Tabs(0, 25, 517, 345);
tabsModems->selection_color(FL_LIGHT1);
tabsModems->align(FL_ALIGN_TOP_RIGHT);
{ tabCW = new Fl_Group(0, 50, 500, 320, _("CW"));
@ -3145,6 +3167,7 @@ an merging"));
tabFeld->end();
} // Fl_Group* tabFeld
{ tabMT63 = new Fl_Group(0, 50, 500, 320, _("MT-63"));
tabMT63->hide();
{ Fl_Group* o = new Fl_Group(5, 60, 490, 115);
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
@ -3246,9 +3269,8 @@ an merging"));
} // Fl_Group* o
tabOlivia->end();
} // Fl_Group* tabOlivia
{ tabPSK = new Fl_Group(0, 50, 500, 320, _("PSK"));
tabPSK->hide();
{ tabsPSK = new Fl_Tabs(0, 50, 500, 320);
{ tabPSK = new Fl_Group(0, 50, 517, 320, _("PSK"));
{ tabsPSK = new Fl_Tabs(0, 50, 517, 320);
tabsPSK->selection_color(FL_LIGHT1);
{ Fl_Group* o = new Fl_Group(0, 75, 500, 295, _("General"));
o->align(FL_ALIGN_TOP_LEFT);
@ -3304,29 +3326,63 @@ an merging"));
} // Fl_Group* o
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(0, 75, 500, 295, _("Mail"));
{ Fl_Group* o = new Fl_Group(0, 75, 517, 295, _("Mail"));
o->align(FL_ALIGN_TOP_LEFT);
o->hide();
{ Fl_Group* o = new Fl_Group(5, 85, 490, 80);
{ Fl_Group* o = new Fl_Group(7, 87, 490, 174, _("Mail Server Attributes"));
o->box(FL_ENGRAVED_FRAME);
{ Fl_Check_Button* o = btnPSKmailSweetSpot = new Fl_Check_Button(55, 100, 215, 20, _("Use sweetspot frequencies"));
btnPSKmailSweetSpot->tooltip(_("Return TX frequency to sweetspot"));
btnPSKmailSweetSpot->down_box(FL_DOWN_BOX);
btnPSKmailSweetSpot->value(1);
btnPSKmailSweetSpot->callback((Fl_Callback*)cb_btnPSKmailSweetSpot);
o->value(progdefaults.PSKmailSweetSpot);
} // Fl_Check_Button* btnPSKmailSweetSpot
{ Fl_Counter* o = cntServerOffset = new Fl_Counter(55, 129, 80, 20, _("Server search range"));
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
{ Fl_Counter* o = cntServerCarrier = new Fl_Counter(58, 115, 80, 20, _("Carrier frequency (Hz)"));
cntServerCarrier->tooltip(_("Default listen / transmit frequency"));
cntServerCarrier->type(1);
cntServerCarrier->minimum(500);
cntServerCarrier->maximum(2500);
cntServerCarrier->step(25);
cntServerCarrier->value(1500);
cntServerCarrier->callback((Fl_Callback*)cb_cntServerCarrier);
cntServerCarrier->align(FL_ALIGN_RIGHT);
o->value(progdefaults.ServerCarrier);
} // Fl_Counter* cntServerCarrier
{ Fl_Counter* o = cntServerOffset = new Fl_Counter(58, 152, 80, 20, _("Search range (Hz)"));
cntServerOffset->tooltip(_("Listen for signals within this range"));
cntServerOffset->type(1);
cntServerOffset->minimum(10);
cntServerOffset->maximum(500);
cntServerOffset->step(10);
cntServerOffset->value(200);
cntServerOffset->value(100);
cntServerOffset->callback((Fl_Callback*)cb_cntServerOffset);
cntServerOffset->align(FL_ALIGN_RIGHT);
o->value(progdefaults.SearchRange);
} // Fl_Counter* cntServerOffset
{ Fl_Counter* o = cntServerACQsn = new Fl_Counter(58, 189, 80, 20, _("Acquisition S/N (dB)"));
cntServerACQsn->tooltip(_("Capture signals over this threshold"));
cntServerACQsn->type(1);
cntServerACQsn->minimum(3);
cntServerACQsn->maximum(20);
cntServerACQsn->step(1);
cntServerACQsn->value(6);
cntServerACQsn->callback((Fl_Callback*)cb_cntServerACQsn);
cntServerACQsn->align(FL_ALIGN_RIGHT);
o->value(progdefaults.ServerACQsn);
} // Fl_Counter* cntServerACQsn
{ Fl_Counter* o = cntServerAFCrange = new Fl_Counter(58, 226, 80, 20, _("AFC range (Hz)"));
cntServerAFCrange->tooltip(_("Limit AFC movement to this range"));
cntServerAFCrange->type(1);
cntServerAFCrange->minimum(10);
cntServerAFCrange->maximum(500);
cntServerAFCrange->step(10);
cntServerAFCrange->value(25);
cntServerAFCrange->callback((Fl_Callback*)cb_cntServerAFCrange);
cntServerAFCrange->align(FL_ALIGN_RIGHT);
o->value(progdefaults.SearchRange);
} // Fl_Counter* cntServerAFCrange
{ Fl_Check_Button* o = btnPSKmailSweetSpot = new Fl_Check_Button(313, 117, 142, 16, _("Reset to Carrier"));
btnPSKmailSweetSpot->tooltip(_("When no signal present"));
btnPSKmailSweetSpot->down_box(FL_DOWN_BOX);
btnPSKmailSweetSpot->value(1);
btnPSKmailSweetSpot->callback((Fl_Callback*)cb_btnPSKmailSweetSpot);
o->value(progdefaults.PSKmailSweetSpot);
} // Fl_Check_Button* btnPSKmailSweetSpot
o->end();
} // Fl_Group* o
o->end();
@ -3595,6 +3651,7 @@ an merging"));
tabModems->end();
} // Fl_Group* tabModems
{ tabRig = new Fl_Group(0, 25, 500, 345, _("Rig"));
tabRig->hide();
{ tabsRig = new Fl_Tabs(0, 25, 500, 345);
tabsRig->selection_color(FL_LIGHT1);
{ Fl_Group* o = new Fl_Group(0, 50, 500, 320, _("Hardware PTT"));

Wyświetl plik

@ -85,12 +85,12 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
xywh {646 121 500 400} type Double color 45 selection_color 51 labelsize 18 align 80 visible
} {
Fl_Tabs tabsConfigure {open
xywh {0 0 505 372} color 50 selection_color 50
xywh {0 0 517 372} color 50 selection_color 50
} {
Fl_Group tabOperator {
label Operator
callback {progdefaults.changed = true;} open
xywh {0 25 500 345} when 1 hide
callback {progdefaults.changed = true;} open selected
xywh {0 25 500 345} when 1
} {
Fl_Group {} {
label Station open
@ -701,10 +701,10 @@ behaves inside the waterfall} xywh {15 196 150 22} down_box BORDER_BOX align 8
}
Fl_Group tabModems {
label Modems open
xywh {0 25 500 345} hide
xywh {0 25 517 345} hide
} {
Fl_Tabs tabsModems {open
xywh {0 25 500 345} selection_color 50 align 9
xywh {0 25 517 345} selection_color 50 align 9
} {
Fl_Group tabCW {
label CW open
@ -1031,7 +1031,7 @@ progdefaults.changed = true;}
}
Fl_Group tabMT63 {
label {MT-63} open
xywh {0 50 500 320}
xywh {0 50 500 320} hide
} {
Fl_Group {} {open
xywh {5 60 490 115} box ENGRAVED_FRAME align 21
@ -1149,10 +1149,10 @@ progdefaults.changed = true;}
}
Fl_Group tabPSK {
label PSK open
xywh {0 50 500 320} hide
xywh {0 50 517 320}
} {
Fl_Tabs tabsPSK {open
xywh {0 50 500 320} selection_color 50
xywh {0 50 517 320} selection_color 50
} {
Fl_Group {} {
label General open
@ -1172,7 +1172,7 @@ progdefaults.changed = true;}
}
Fl_Counter cntACQsn {
label {Acquisition S/N (dB)}
callback {progdefaults.ACQsn = (int)o->value();
callback {progdefaults.ACQsn = o->value();
progdefaults.changed = true;}
tooltip {Capture signals over this threshold} xywh {15 146 75 20} type Simple align 8 minimum 3 maximum 20 step 1 value 6
code0 {o->value(progdefaults.ACQsn);}
@ -1201,26 +1201,50 @@ progdefaults.changed = true;}
}
Fl_Group {} {
label Mail open
xywh {0 75 500 295} align 5 hide
xywh {0 75 517 295} align 5 hide
} {
Fl_Group {} {open
xywh {5 85 490 80} box ENGRAVED_FRAME
Fl_Group {} {
label {Mail Server Attributes} open
xywh {7 87 490 174} box ENGRAVED_FRAME align 21
} {
Fl_Check_Button btnPSKmailSweetSpot {
label {Use sweetspot frequencies}
callback {progdefaults.PSKmailSweetSpot = o->value();
Fl_Counter cntServerCarrier {
label {Carrier frequency (Hz)}
callback {progdefaults.ServerCarrier = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;}
tooltip {Return TX frequency to sweetspot} xywh {55 100 215 20} down_box DOWN_BOX value 1
code0 {o->value(progdefaults.PSKmailSweetSpot);}
tooltip {Default listen / transmit frequency} xywh {58 115 80 20} type Simple align 8 minimum 500 maximum 2500 step 25 value 1500
code0 {o->value(progdefaults.ServerCarrier);}
}
Fl_Counter cntServerOffset {
label {Server search range}
label {Search range (Hz)}
callback {progdefaults.ServerOffset = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;}
tooltip {Listen for signals within this range} xywh {55 129 80 20} type Simple align 8 minimum 10 maximum 500 step 10 value 200
tooltip {Listen for signals within this range} xywh {58 152 80 20} type Simple align 8 minimum 10 maximum 500 step 10 value 100
code0 {o->value(progdefaults.SearchRange);}
}
Fl_Counter cntServerACQsn {
label {Acquisition S/N (dB)}
callback {progdefaults.ServerACQsn = o->value();
progdefaults.changed = true;}
tooltip {Capture signals over this threshold} xywh {58 189 80 20} type Simple align 8 minimum 3 maximum 20 step 1 value 6
code0 {o->value(progdefaults.ServerACQsn);}
}
Fl_Counter cntServerAFCrange {
label {AFC range (Hz)}
callback {progdefaults.ServerAFCrange = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;}
tooltip {Limit AFC movement to this range} xywh {58 226 80 20} type Simple align 8 minimum 10 maximum 500 step 10 value 25
code0 {o->value(progdefaults.SearchRange);}
}
Fl_Check_Button btnPSKmailSweetSpot {
label {Reset to Carrier}
callback {progdefaults.PSKmailSweetSpot = o->value();
progdefaults.changed = true;}
tooltip {When no signal present} xywh {313 117 142 16} down_box DOWN_BOX value 1
code0 {o->value(progdefaults.PSKmailSweetSpot);}
}
}
}
Fl_Group {} {
@ -1483,7 +1507,7 @@ progdefaults.changed = true;}
}
Fl_Group tabRig {
label Rig open
xywh {0 25 500 345}
xywh {0 25 500 345} hide
} {
Fl_Tabs tabsRig {open
xywh {0 25 500 345} selection_color 50
@ -1615,7 +1639,7 @@ btnInitRIGCAT->redraw();
progdefaults.changed = true;}
tooltip {RigCAT used for rig control} xywh {195 60 110 20} down_box DOWN_BOX
}
Fl_Group grpRigCAT {open selected
Fl_Group grpRigCAT {open
xywh {5 83 490 279} box ENGRAVED_FRAME
} {
Fl_Output txtXmlRigFilename {

Wyświetl plik

@ -154,8 +154,11 @@ extern Fl_Tabs *tabsPSK;
extern Fl_Counter *cntSearchRange;
extern Fl_Counter *cntACQsn;
extern Fl_Choice *mnuPSKStatusTimeout;
extern Fl_Check_Button *btnPSKmailSweetSpot;
extern Fl_Counter *cntServerCarrier;
extern Fl_Counter *cntServerOffset;
extern Fl_Counter *cntServerACQsn;
extern Fl_Counter *cntServerAFCrange;
extern Fl_Check_Button *btnPSKmailSweetSpot;
extern Fl_Check_Button *btnMarquee;
extern Fl_Spinner *cntChannels;
extern Fl_Spinner *cntStartFrequency;

Wyświetl plik

@ -67,7 +67,10 @@
ELEM_(bool, StatusDim, "STATUSDIM", true) \
ELEM_(double, StatusTimeout, "STATUSTIMEOUT", 15.0) \
ELEM_(bool, PSKmailSweetSpot, "PSKMAILSWEETSPOT", false) \
ELEM_(int, ServerOffset, "PSKSERVEROFFSET", 40) \
ELEM_(int, ServerOffset, "PSKSERVEROFFSET", 50) \
ELEM_(int, ServerCarrier, "PSKSERVERCARRIER", 1500) \
ELEM_(int, ServerAFCrange, "PSKSERVERAFCRANGE", 25) \
ELEM_(double, ServerACQsn, "PSKSERVERACGSN", 6.0) \
/* RTTY */ \
ELEM_(int, rtty_shift, "RTTYSHIFT", 3) /* 170 */ \
ELEM_(int, rtty_baud, "RTTYBAUD", 0) /* 45 */ \

Wyświetl plik

@ -315,7 +315,7 @@ void psk::searchDown()
while (srchfreq > minfreq) {
spwr = wf->powerDensity(srchfreq, bandwidth);
npwr = wf->powerDensity(srchfreq + bandwidth, bandwidth/2) + 1e-10;
if (spwr / npwr > SNTHRESHOLD) {
if (spwr / npwr > pow(10, progdefaults.ServerACQsn / 10)) {
frequency = srchfreq;
set_freq(frequency);
sigsearch = SIGSEARCH;
@ -333,7 +333,7 @@ void psk::searchUp()
while (srchfreq < maxfreq) {
spwr = wf->powerDensity(srchfreq, bandwidth/2);
npwr = wf->powerDensity(srchfreq - bandwidth, bandwidth/2) + 1e-10;
if (spwr / npwr > SNTHRESHOLD) {
if (spwr / npwr > pow(10, progdefaults.ServerACQsn / 10)) {
frequency = srchfreq;
set_freq(frequency);
sigsearch = SIGSEARCH;
@ -352,16 +352,21 @@ void psk::findsignal()
if (sigsearch > 0) {
sigsearch--;
if (mailserver) { // mail server search algorithm
f1 = (int)(frequency - progdefaults.ServerOffset);
f2 = (int)(frequency + progdefaults.ServerOffset);
if (evalpsk->sigpeak(ftest, f1, f2) > SNTHRESHOLD ) {
if (progdefaults.PSKmailSweetSpot) {
f1 = (int)(progdefaults.ServerCarrier - progdefaults.ServerOffset);
f2 = (int)(progdefaults.ServerCarrier + progdefaults.ServerOffset);
} else {
f1 = (int)(frequency - progdefaults.ServerOffset);
f2 = (int)(frequency + progdefaults.ServerOffset);
}
if (evalpsk->sigpeak(ftest, f1, f2) > pow(10, progdefaults.ServerACQsn / 10) ) {
if (progdefaults.PSKmailSweetSpot) {
if (fabs(ftest - progdefaults.PSKsweetspot) < progdefaults.ServerOffset) {
if (fabs(ftest - progdefaults.ServerCarrier) < progdefaults.ServerOffset) {
frequency = ftest;
set_freq(frequency);
freqerr = 0.0;
} else {
frequency = progdefaults.PSKsweetspot;
frequency = progdefaults.ServerCarrier;
set_freq(frequency);
freqerr = 0.0;
}
@ -372,7 +377,7 @@ void psk::findsignal()
}
} else { // less than the detection threshold
if (progdefaults.PSKmailSweetSpot) {
frequency = progdefaults.PSKsweetspot;
frequency = progdefaults.ServerCarrier;
set_freq(frequency);
sigsearch = SIGSEARCH;
}
@ -405,6 +410,12 @@ void psk::phaseafc()
if (fabs(error) < bandwidth) {
freqerr = decayavg( freqerr, error, AFCDECAYSLOW);
frequency -= freqerr;
if (mailserver) {
if (frequency < progdefaults.ServerCarrier - progdefaults.ServerAFCrange)
frequency = progdefaults.ServerCarrier - progdefaults.ServerAFCrange;
if (frequency > progdefaults.ServerCarrier + progdefaults.ServerAFCrange)
frequency = progdefaults.ServerCarrier + progdefaults.ServerAFCrange;
}
set_freq (frequency);
}
if (acquire) acquire--;