kopia lustrzana https://github.com/jamescoxon/dl-fldigi
FSQ bug fix
* Fixed error in parsing returned heard list * Fixed save filename for # trigger - filename was not being saved with the .txt extension - append existing file * Changed time out processing of delayed response - added user configuration item for time out durationpull/1/head
rodzic
93196764e3
commit
7bdf051c3d
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#include "gettext.h"
|
||||
#include "confdialog.h"
|
||||
|
@ -2852,11 +2852,6 @@ btn_fsqbaud[2]->value(0);
|
|||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
static void cb_QTC(Fl_Input* o, void*) {
|
||||
progdefaults.fsqQTCtext = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Choice *sel_fsq_frequency=(Fl_Choice *)0;
|
||||
|
||||
static void cb_sel_fsq_frequency(Fl_Choice* o, void*) {
|
||||
|
@ -2878,6 +2873,18 @@ static void cb_btn_fsq_lowercase(Fl_Check_Button* o, void*) {
|
|||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Counter *cntr_FSQ_time_out=(Fl_Counter *)0;
|
||||
|
||||
static void cb_cntr_FSQ_time_out(Fl_Counter* o, void*) {
|
||||
progdefaults.fsq_time_out = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
static void cb_QTC(Fl_Input* o, void*) {
|
||||
progdefaults.fsqQTCtext = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Output *txtAuditLog=(Fl_Output *)0;
|
||||
|
||||
Fl_Light_Button *btn_enable_auditlog=(Fl_Light_Button *)0;
|
||||
|
@ -5522,7 +5529,6 @@ Fl_Double_Window* ConfigureDialog() {
|
|||
tabOperator->tooltip(_("Operator information"));
|
||||
tabOperator->callback((Fl_Callback*)cb_tabOperator);
|
||||
tabOperator->when(FL_WHEN_CHANGED);
|
||||
tabOperator->hide();
|
||||
{ Fl_Group* o = new Fl_Group(55, 35, 490, 170, _("Station"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||
|
@ -5640,6 +5646,7 @@ Fl_Double_Window* ConfigureDialog() {
|
|||
} // Fl_Group* tabOperator
|
||||
{ tabUI = new Fl_Group(0, 25, 600, 355, _("UI"));
|
||||
tabUI->tooltip(_("User Interface"));
|
||||
tabUI->hide();
|
||||
{ tabsUI = new Fl_Tabs(0, 25, 600, 355);
|
||||
tabsUI->selection_color(FL_LIGHT1);
|
||||
{ tabBrowser = new Fl_Group(0, 50, 600, 330, _("Browser"));
|
||||
|
@ -7220,7 +7227,6 @@ i on a\ntouch screen device such as a tablet."));
|
|||
tabsModems->selection_color(FL_LIGHT1);
|
||||
tabsModems->align(Fl_Align(FL_ALIGN_TOP_RIGHT));
|
||||
{ tabCW = new Fl_Group(0, 50, 600, 330, _("CW"));
|
||||
tabCW->hide();
|
||||
{ tabsCW = new Fl_Tabs(0, 50, 600, 330);
|
||||
tabsCW->selection_color(FL_LIGHT1);
|
||||
{ Fl_Group* o = new Fl_Group(0, 75, 600, 305, _("General"));
|
||||
|
@ -8005,10 +8011,11 @@ i on a\ntouch screen device such as a tablet."));
|
|||
tabFeld->end();
|
||||
} // Fl_Group* tabFeld
|
||||
{ tabFSQ = new Fl_Group(0, 50, 600, 330, _("FSQ"));
|
||||
tabFSQ->hide();
|
||||
{ Fl_Group* o = new Fl_Group(5, 60, 585, 80, _("Rx Parameters"));
|
||||
o->box(FL_ENGRAVED_BOX);
|
||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||
{ Fl_Value_Slider* o = valhits = new Fl_Value_Slider(140, 72, 125, 21, _("Min Hits"));
|
||||
{ Fl_Value_Slider* o = valhits = new Fl_Value_Slider(140, 72, 125, 22, _("Min Hits"));
|
||||
valhits->tooltip(_("Minimum # hits in tone detector"));
|
||||
valhits->type(5);
|
||||
valhits->minimum(3);
|
||||
|
@ -8027,7 +8034,7 @@ i on a\ntouch screen device such as a tablet."));
|
|||
o->add("None"); o->add("300 Hz"); o->add("400 Hz"); o->add("500 Hz");
|
||||
o->value(progdefaults.fsq_img_filter);
|
||||
} // Fl_Choice* sel_fsq_lpf
|
||||
{ Fl_Value_Slider* o = sldrMovAvg = new Fl_Value_Slider(410, 72, 125, 21, _("MovAvg:"));
|
||||
{ Fl_Value_Slider* o = sldrMovAvg = new Fl_Value_Slider(410, 72, 125, 22, _("MovAvg:"));
|
||||
sldrMovAvg->tooltip(_("Filter FFT output"));
|
||||
sldrMovAvg->type(1);
|
||||
sldrMovAvg->minimum(1);
|
||||
|
@ -8051,31 +8058,26 @@ i on a\ntouch screen device such as a tablet."));
|
|||
{ Fl_Group* o = new Fl_Group(5, 150, 585, 135, _("Tx Parameters"));
|
||||
o->box(FL_ENGRAVED_BOX);
|
||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[0] = new Fl_Round_Button(90, 180, 55, 15, _("2 baud"));
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[0] = new Fl_Round_Button(90, 173, 55, 15, _("2 baud"));
|
||||
btn_fsqbaud[0]->down_box(FL_ROUND_DOWN_BOX);
|
||||
btn_fsqbaud[0]->callback((Fl_Callback*)cb_btn_fsqbaud);
|
||||
o->value(progdefaults.fsqbaud == 2);
|
||||
} // Fl_Round_Button* btn_fsqbaud[0]
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[1] = new Fl_Round_Button(198, 180, 55, 15, _("3 baud"));
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[1] = new Fl_Round_Button(198, 173, 55, 15, _("3 baud"));
|
||||
btn_fsqbaud[1]->down_box(FL_ROUND_DOWN_BOX);
|
||||
btn_fsqbaud[1]->callback((Fl_Callback*)cb_btn_fsqbaud1);
|
||||
o->value(progdefaults.fsqbaud == 3);
|
||||
} // Fl_Round_Button* btn_fsqbaud[1]
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[2] = new Fl_Round_Button(306, 180, 55, 15, _("4.5 baud"));
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[2] = new Fl_Round_Button(306, 173, 55, 15, _("4.5 baud"));
|
||||
btn_fsqbaud[2]->down_box(FL_ROUND_DOWN_BOX);
|
||||
btn_fsqbaud[2]->callback((Fl_Callback*)cb_btn_fsqbaud2);
|
||||
o->value(progdefaults.fsqbaud == 4.5);
|
||||
} // Fl_Round_Button* btn_fsqbaud[2]
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[3] = new Fl_Round_Button(415, 180, 55, 15, _("6 baud"));
|
||||
{ Fl_Round_Button* o = btn_fsqbaud[3] = new Fl_Round_Button(415, 173, 55, 15, _("6 baud"));
|
||||
btn_fsqbaud[3]->down_box(FL_ROUND_DOWN_BOX);
|
||||
btn_fsqbaud[3]->callback((Fl_Callback*)cb_btn_fsqbaud3);
|
||||
o->value(progdefaults.fsqbaud == 6);
|
||||
} // Fl_Round_Button* btn_fsqbaud[3]
|
||||
{ Fl_Input* o = new Fl_Input(90, 253, 456, 23, _("QTC:"));
|
||||
o->tooltip(_("Enter QTC text"));
|
||||
o->callback((Fl_Callback*)cb_QTC);
|
||||
o->value(progdefaults.fsqQTCtext.c_str());
|
||||
} // Fl_Input* o
|
||||
{ Fl_Choice* o = sel_fsq_frequency = new Fl_Choice(250, 219, 102, 21, _("Center freq"));
|
||||
sel_fsq_frequency->down_box(FL_BORDER_BOX);
|
||||
sel_fsq_frequency->callback((Fl_Callback*)cb_sel_fsq_frequency);
|
||||
|
@ -8084,19 +8086,35 @@ i on a\ntouch screen device such as a tablet."));
|
|||
o->add("1150"); o->add("1500"); o->add("Variable");
|
||||
o->value(progdefaults.fsq_frequency);
|
||||
} // Fl_Choice* sel_fsq_frequency
|
||||
{ Fl_Choice* o = sel_fsq_sounder = new Fl_Choice(90, 214, 102, 21, _("Sounder"));
|
||||
{ Fl_Choice* o = sel_fsq_sounder = new Fl_Choice(90, 195, 102, 21, _("Sounder"));
|
||||
sel_fsq_sounder->tooltip(_("Send beacon every ..."));
|
||||
sel_fsq_sounder->down_box(FL_BORDER_BOX);
|
||||
sel_fsq_sounder->callback((Fl_Callback*)cb_sel_fsq_sounder);
|
||||
o->add("OFF"); o->add("1 min"); o->add("10 min"); o->add("30 min");
|
||||
o->value(progdefaults.fsq_sounder);
|
||||
} // Fl_Choice* sel_fsq_sounder
|
||||
{ Fl_Check_Button* o = btn_fsq_lowercase = new Fl_Check_Button(306, 217, 70, 15, _("MYCALL always lower case"));
|
||||
{ Fl_Check_Button* o = btn_fsq_lowercase = new Fl_Check_Button(306, 198, 70, 15, _("MYCALL always lower case"));
|
||||
btn_fsq_lowercase->tooltip(_("convert operator callsign to lower case"));
|
||||
btn_fsq_lowercase->down_box(FL_DOWN_BOX);
|
||||
btn_fsq_lowercase->callback((Fl_Callback*)cb_btn_fsq_lowercase);
|
||||
o->value(progdefaults.fsq_lowercase);
|
||||
} // Fl_Check_Button* btn_fsq_lowercase
|
||||
{ Fl_Counter* o = cntr_FSQ_time_out = new Fl_Counter(90, 223, 102, 22, _("Time out"));
|
||||
cntr_FSQ_time_out->tooltip(_("Time out xmt attempt in XX seconds"));
|
||||
cntr_FSQ_time_out->type(1);
|
||||
cntr_FSQ_time_out->minimum(2);
|
||||
cntr_FSQ_time_out->maximum(20);
|
||||
cntr_FSQ_time_out->step(1);
|
||||
cntr_FSQ_time_out->value(6);
|
||||
cntr_FSQ_time_out->callback((Fl_Callback*)cb_cntr_FSQ_time_out);
|
||||
cntr_FSQ_time_out->align(Fl_Align(FL_ALIGN_LEFT));
|
||||
o->value(progdefaults.fsq_time_out);
|
||||
} // Fl_Counter* cntr_FSQ_time_out
|
||||
{ Fl_Input* o = new Fl_Input(90, 253, 456, 23, _("QTC:"));
|
||||
o->tooltip(_("Enter QTC text"));
|
||||
o->callback((Fl_Callback*)cb_QTC);
|
||||
o->value(progdefaults.fsqQTCtext.c_str());
|
||||
} // Fl_Input* o
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 291, 585, 80, _("Logging"));
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# data file for the Fltk User Interface Designer (fluid)
|
||||
version 1.0302
|
||||
version 1.0303
|
||||
i18n_type 1
|
||||
i18n_include "gettext.h"
|
||||
i18n_function _
|
||||
|
@ -151,8 +151,7 @@ Function {cbRxFontBrowser(Fl_Widget*, void*)} {open private return_type void
|
|||
|
||||
font_browser->hide();
|
||||
|
||||
progdefaults.changed = true;} {selected
|
||||
}
|
||||
progdefaults.changed = true;} {}
|
||||
}
|
||||
|
||||
Function {cbTxFontBrowser(Fl_Widget*, void*)} {open private return_type void
|
||||
|
@ -359,8 +358,8 @@ static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {}
|
|||
} {
|
||||
Fl_Group tabOperator {
|
||||
label Operator
|
||||
callback {progdefaults.changed = true;} open
|
||||
tooltip {Operator information} xywh {0 25 600 355} when 1 hide
|
||||
callback {progdefaults.changed = true;} open selected
|
||||
tooltip {Operator information} xywh {0 25 600 355} when 1
|
||||
} {
|
||||
Fl_Group {} {
|
||||
label Station open
|
||||
|
@ -450,7 +449,7 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabUI {
|
||||
label UI open
|
||||
tooltip {User Interface} xywh {0 25 600 355}
|
||||
tooltip {User Interface} xywh {0 25 600 355} hide
|
||||
} {
|
||||
Fl_Tabs tabsUI {open
|
||||
xywh {0 25 600 355} selection_color 50
|
||||
|
@ -2828,7 +2827,7 @@ behaves inside the waterfall} xywh {65 207 150 22} box DOWN_BOX color 7 align 8
|
|||
} {
|
||||
Fl_Group tabCW {
|
||||
label CW open
|
||||
xywh {0 50 600 330} hide
|
||||
xywh {0 50 600 330}
|
||||
} {
|
||||
Fl_Tabs tabsCW {open
|
||||
xywh {0 50 600 330} selection_color 50
|
||||
|
@ -3435,7 +3434,7 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabFSQ {
|
||||
label FSQ open
|
||||
xywh {0 50 600 330}
|
||||
xywh {0 50 600 330} hide
|
||||
} {
|
||||
Fl_Group {} {
|
||||
label {Rx Parameters} open
|
||||
|
@ -3445,7 +3444,7 @@ progdefaults.changed = true;}
|
|||
label {Min Hits}
|
||||
callback {progdefaults.fsqhits=(int)o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Minimum \# hits in tone detector} xywh {140 72 125 21} type {Horz Knob} align 8 minimum 3 maximum 6 step 1 value 3 textsize 14
|
||||
tooltip {Minimum \# hits in tone detector} xywh {140 72 125 22} type {Horz Knob} align 8 minimum 3 maximum 6 step 1 value 3 textsize 14
|
||||
code0 {o->value(progdefaults.fsqhits);}
|
||||
}
|
||||
Fl_Choice sel_fsq_lpf {
|
||||
|
@ -3460,7 +3459,7 @@ progdefaults.changed = true;} open
|
|||
label {MovAvg:}
|
||||
callback {progdefaults.fsq_movavg = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Filter FFT output} xywh {410 72 125 21} type Horizontal align 4 minimum 1 maximum 4 step 1 value 4 textsize 14
|
||||
tooltip {Filter FFT output} xywh {410 72 125 22} type Horizontal align 4 minimum 1 maximum 4 step 1 value 4 textsize 14
|
||||
code0 {o->value(progdefaults.fsq_movavg);}
|
||||
}
|
||||
Fl_Choice sel_fsq_heard_aging {
|
||||
|
@ -3485,7 +3484,7 @@ btn_fsqbaud[2]->value(0);
|
|||
btn_fsqbaud[3]->value(0);
|
||||
}
|
||||
progdefaults.changed = true;}
|
||||
xywh {90 180 55 15} down_box ROUND_DOWN_BOX
|
||||
xywh {90 173 55 15} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.fsqbaud == 2);}
|
||||
}
|
||||
Fl_Round_Button {btn_fsqbaud[1]} {
|
||||
|
@ -3497,7 +3496,7 @@ btn_fsqbaud[2]->value(0);
|
|||
btn_fsqbaud[3]->value(0);
|
||||
}
|
||||
progdefaults.changed = true;}
|
||||
xywh {198 180 55 15} down_box ROUND_DOWN_BOX
|
||||
xywh {198 173 55 15} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.fsqbaud == 3);}
|
||||
}
|
||||
Fl_Round_Button {btn_fsqbaud[2]} {
|
||||
|
@ -3509,7 +3508,7 @@ btn_fsqbaud[1]->value(0);
|
|||
btn_fsqbaud[3]->value(0);
|
||||
}
|
||||
progdefaults.changed = true;}
|
||||
xywh {306 180 55 15} down_box ROUND_DOWN_BOX
|
||||
xywh {306 173 55 15} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.fsqbaud == 4.5);}
|
||||
}
|
||||
Fl_Round_Button {btn_fsqbaud[3]} {
|
||||
|
@ -3521,16 +3520,9 @@ btn_fsqbaud[1]->value(0);
|
|||
btn_fsqbaud[2]->value(0);
|
||||
}
|
||||
progdefaults.changed = true;}
|
||||
xywh {415 180 55 15} down_box ROUND_DOWN_BOX
|
||||
xywh {415 173 55 15} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.fsqbaud == 6);}
|
||||
}
|
||||
Fl_Input {} {
|
||||
label {QTC:}
|
||||
callback {progdefaults.fsqQTCtext = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Enter QTC text} xywh {90 253 456 23}
|
||||
code0 {o->value(progdefaults.fsqQTCtext.c_str());}
|
||||
}
|
||||
Fl_Choice sel_fsq_frequency {
|
||||
label {Center freq}
|
||||
callback {progdefaults.fsq_frequency=o->value();
|
||||
|
@ -3543,7 +3535,7 @@ progdefaults.changed = true;} open
|
|||
label Sounder
|
||||
callback {progdefaults.fsq_sounder=o->value();
|
||||
progdefaults.changed = true;} open
|
||||
tooltip {Send beacon every ...} xywh {90 214 102 21} down_box BORDER_BOX
|
||||
tooltip {Send beacon every ...} xywh {90 195 102 21} down_box BORDER_BOX
|
||||
code0 {o->add("OFF"); o->add("1 min"); o->add("10 min"); o->add("30 min");}
|
||||
code1 {o->value(progdefaults.fsq_sounder);}
|
||||
} {}
|
||||
|
@ -3551,9 +3543,23 @@ progdefaults.changed = true;} open
|
|||
label {MYCALL always lower case}
|
||||
callback {progdefaults.fsq_lowercase=o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {convert operator callsign to lower case} xywh {306 217 70 15} down_box DOWN_BOX
|
||||
tooltip {convert operator callsign to lower case} xywh {306 198 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.fsq_lowercase);}
|
||||
}
|
||||
Fl_Counter cntr_FSQ_time_out {
|
||||
label {Time out}
|
||||
callback {progdefaults.fsq_time_out = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Time out xmt attempt in XX seconds} xywh {90 223 102 22} type Simple align 4 minimum 2 maximum 20 step 1 value 6
|
||||
code0 {o->value(progdefaults.fsq_time_out);}
|
||||
}
|
||||
Fl_Input {} {
|
||||
label {QTC:}
|
||||
callback {progdefaults.fsqQTCtext = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Enter QTC text} xywh {90 253 456 23}
|
||||
code0 {o->value(progdefaults.fsqQTCtext.c_str());}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label Logging open
|
||||
|
|
|
@ -8447,7 +8447,7 @@ void cb_heard_send_msg(Fl_Widget *w, void*)
|
|||
fsq_tx_text->add(fsq_selected_call.c_str());
|
||||
fsq_tx_text->add("#[");
|
||||
fsq_tx_text->add(active_modem->fsq_mycall());
|
||||
fsq_tx_text->add("] ");
|
||||
fsq_tx_text->add("]");
|
||||
fsq_tx_text->add(msg.c_str());
|
||||
fsq_tx_text->add("^r");
|
||||
start_tx();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#include "gettext.h"
|
||||
#include "notifydialog.h"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#include "gettext.h"
|
||||
#include "record_browse.h"
|
||||
|
|
|
@ -411,7 +411,7 @@ void fsq::parse_rx_text()
|
|||
}
|
||||
|
||||
state = TEXT;
|
||||
size_t p = rx_text.rfind(':');
|
||||
size_t p = rx_text.find(':');
|
||||
if (p == std::string::npos ||
|
||||
p == 0 ||
|
||||
rx_text.length() < p + 2) {
|
||||
|
@ -547,6 +547,8 @@ void fsq::parse_rx_text()
|
|||
|
||||
void fsq::parse_space(bool all)
|
||||
{
|
||||
std::cout << rx_text << "\n";
|
||||
|
||||
if (all)
|
||||
display_fsq_rx_text(toprint.append(rx_text).append("\n"), FTextBase::CTRL);
|
||||
else
|
||||
|
@ -690,17 +692,18 @@ void fsq::parse_pound(std::string relay)
|
|||
else fname = station_calling;
|
||||
fname.append(".txt");
|
||||
}
|
||||
if (fname.find(".txt") == std::string::npos) fname.append(".txt");
|
||||
if (rx_text[rx_text.length() -1] != '\n') rx_text.append("\n");
|
||||
|
||||
std::ofstream rxfile;
|
||||
fname.insert(0, TempDir);
|
||||
if (!named_file) {
|
||||
if (named_file) {
|
||||
rxfile.open(fname.c_str(), ios::app);
|
||||
} else {
|
||||
rxfile.open(fname.c_str(), ios::out);
|
||||
}
|
||||
if (!rxfile) return;
|
||||
rxfile << rx_text.substr(p2+1);
|
||||
if (!named_file) rxfile << "\n";
|
||||
rxfile.close();
|
||||
|
||||
display_fsq_rx_text(toprint.append(rx_text).append("\n"));
|
||||
|
@ -1006,7 +1009,7 @@ void fsq::process_symbol(int sym)
|
|||
if (rx_text.length() > 32768) rx_text.clear();
|
||||
if ( fsq_squelch_open() || !progStatus.sqlonoff ) {
|
||||
rx_text += curr_ch;
|
||||
if (b_eol || b_eot) {
|
||||
if (b_eot) {
|
||||
parse_rx_text();
|
||||
if (state == TEXT)
|
||||
ch_sqlch_open = false;
|
||||
|
@ -1429,7 +1432,7 @@ double fsq::xmtdelay() // in seconds
|
|||
return delay;
|
||||
}
|
||||
|
||||
static int xmt_tries = 8;
|
||||
static float xmt_tries = 6.0; // timeout in nn seconds
|
||||
|
||||
void fsq_repeat_last_command()
|
||||
{
|
||||
|
@ -1447,52 +1450,53 @@ void timed_xmt(void *who)
|
|||
fsq *me = (fsq *)who;
|
||||
if (me != active_modem) return;
|
||||
|
||||
if (trx_state == STATE_TX) {
|
||||
Fl::repeat_timeout(me->xmtdelay(), timed_xmt, me);
|
||||
return;
|
||||
}
|
||||
if (me->fsq_squelch_open() && xmt_tries) {
|
||||
xmt_tries--;
|
||||
if ((trx_state == STATE_TX || me->fsq_squelch_open()) && xmt_tries > 0) {
|
||||
float delay = me->xmtdelay();
|
||||
xmt_tries -= delay;
|
||||
if (xmt_tries <= 0) {
|
||||
std::string failed = "\nTimed out waiting to transmit:\n \"";
|
||||
failed.append(me->xmt_string).append("\"\n");
|
||||
display_fsq_rx_text(failed);
|
||||
fsq_que_clear();
|
||||
return;
|
||||
}
|
||||
Fl::repeat_timeout(me->xmtdelay(), timed_xmt, me);
|
||||
Fl::repeat_timeout(delay, timed_xmt, me);
|
||||
return;
|
||||
}
|
||||
fsq_que_clear();
|
||||
if (fsq_tx_text->eot()) fsq_transmit_string(me->xmt_string);
|
||||
}
|
||||
|
||||
static double secs = 0;
|
||||
static float secs = 0;
|
||||
|
||||
void fsq_add_tx_timeout(void *who)
|
||||
{
|
||||
fsq *me = (fsq *)who;
|
||||
if (me != active_modem) return;
|
||||
Fl::add_timeout(secs + me->xmtdelay(), timed_xmt, me);
|
||||
Fl::add_timeout(secs, timed_xmt, me);
|
||||
}
|
||||
|
||||
void fsq::reply(std::string s)
|
||||
{
|
||||
write_fsq_que(std::string("REPLY: ").append(s));
|
||||
xmt_string = s;
|
||||
xmt_string.append("^r");
|
||||
xmt_tries = 16;
|
||||
xmt_tries = progdefaults.fsq_time_out;
|
||||
secs = 0.1;
|
||||
Fl::awake(fsq_add_tx_timeout, this);
|
||||
}
|
||||
|
||||
void fsq::delayed_reply(std::string s, int delay)
|
||||
{
|
||||
write_fsq_que(std::string("DELAYED REPLY: ").append(s));
|
||||
xmt_string = s;
|
||||
xmt_string.append("^r");
|
||||
xmt_tries = 16;
|
||||
xmt_tries = progdefaults.fsq_time_out;
|
||||
secs = delay;
|
||||
Fl::awake(fsq_add_tx_timeout, this);
|
||||
}
|
||||
|
||||
static int try_tries = 8;
|
||||
static float try_tries = 6.0;
|
||||
|
||||
void try_transmit(void *who)
|
||||
{
|
||||
|
@ -1503,13 +1507,14 @@ void try_transmit(void *who)
|
|||
display_fsq_rx_text("\nWait for Rx!\n", FTextBase::ALTR);
|
||||
return;
|
||||
}
|
||||
if (me->fsq_squelch_open() && try_tries) {
|
||||
try_tries--;
|
||||
if (me->fsq_squelch_open() && try_tries > 0) {
|
||||
float delay = me->xmtdelay();
|
||||
try_tries -= delay;
|
||||
if (try_tries <= 0) {
|
||||
display_fsq_rx_text("\nSquelch open. Transmit timed out!\n", FTextBase::ALTR);
|
||||
return;
|
||||
}
|
||||
Fl::repeat_timeout(me->xmtdelay(), try_transmit, me);
|
||||
Fl::repeat_timeout(delay, try_transmit, me);
|
||||
return;
|
||||
}
|
||||
fsq_tx_text->add("^r");
|
||||
|
@ -1519,8 +1524,8 @@ void try_transmit(void *who)
|
|||
void fsq_transmit(void *who)
|
||||
{
|
||||
fsq *me = (fsq *)who;
|
||||
try_tries = 16;
|
||||
Fl::add_timeout(0, try_transmit, me);//me->xmtdelay(), try_transmit, me);
|
||||
try_tries = progdefaults.fsq_time_out;
|
||||
Fl::add_timeout(0, try_transmit, me);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
@ -44,11 +44,12 @@ using namespace std;
|
|||
|
||||
//
|
||||
// External fsq monitor dialog
|
||||
//
|
||||
//
|
||||
|
||||
Fl_Double_Window *fsqMonitor = 0;
|
||||
static Fl_Button *btnCloseMonitor;
|
||||
FTextRX *fsq_monitor = 0;
|
||||
FTextRX *fsq_que = 0;
|
||||
|
||||
static void cb_btnCloseMonitor(Fl_Button*, void*) {
|
||||
progStatus.fsqMONITORxpos = fsqMonitor->x();
|
||||
|
@ -67,22 +68,47 @@ Fl_Double_Window* create_fsqMonitor(void)
|
|||
progStatus.fsqMONITORwidth, progStatus.fsqMONITORheight,
|
||||
_("FSQ monitor"));
|
||||
|
||||
fsq_monitor = new FTextRX(
|
||||
Panel *monitor_panel = new Panel(
|
||||
2, 2,
|
||||
w->w() - 4, w->h() - 28);
|
||||
fsq_monitor->color(
|
||||
fl_rgb_color(
|
||||
0.98*progdefaults.RxColor.R,
|
||||
0.98*progdefaults.RxColor.G,
|
||||
0.98*progdefaults.RxColor.B),
|
||||
progdefaults.RxTxSelectcolor);
|
||||
fsq_monitor->setFont(progdefaults.RxFontnbr);
|
||||
fsq_monitor->setFontSize(progdefaults.RxFontsize);
|
||||
fsq_monitor->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
|
||||
|
||||
fsq_monitor = new FTextRX(
|
||||
monitor_panel->x(), monitor_panel->y(),
|
||||
monitor_panel->w(), 7*monitor_panel->h()/8);
|
||||
fsq_monitor->color(
|
||||
fl_rgb_color(
|
||||
0.98*progdefaults.RxColor.R,
|
||||
0.98*progdefaults.RxColor.G,
|
||||
0.98*progdefaults.RxColor.B),
|
||||
progdefaults.RxTxSelectcolor);
|
||||
fsq_monitor->setFont(progdefaults.RxFontnbr);
|
||||
fsq_monitor->setFontSize(progdefaults.RxFontsize);
|
||||
fsq_monitor->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
|
||||
|
||||
fsq_que = new FTextRX(
|
||||
fsq_monitor->x(), fsq_monitor->y() + fsq_monitor->h(),
|
||||
fsq_monitor->w(), monitor_panel->h() - fsq_monitor->h());
|
||||
fsq_que->color(
|
||||
fl_rgb_color(
|
||||
0.98*progdefaults.RxColor.R,
|
||||
0.98*progdefaults.RxColor.G,
|
||||
0.98*progdefaults.RxColor.B),
|
||||
progdefaults.RxTxSelectcolor);
|
||||
fsq_que->setFont(progdefaults.RxFontnbr);
|
||||
fsq_que->setFontSize(progdefaults.RxFontsize);
|
||||
fsq_que->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
|
||||
|
||||
Fl_Box *minbox = new Fl_Box(
|
||||
monitor_panel->x(), monitor_panel->y() + 66,
|
||||
monitor_panel->w(), monitor_panel->h() - 132);
|
||||
minbox->hide();
|
||||
|
||||
monitor_panel->resizable(minbox);
|
||||
monitor_panel->end();
|
||||
|
||||
Fl_Group *g = new Fl_Group(
|
||||
fsq_monitor->x(), fsq_monitor->y() + fsq_monitor->h() + 2,
|
||||
fsq_monitor->w(), 22);
|
||||
fsq_monitor->x(), monitor_panel->y() + monitor_panel->h() + 2,
|
||||
fsq_monitor->w(), 22);
|
||||
Fl_Group *g1 = new Fl_Group(
|
||||
g->x(), g->y() + 2, g->w() - 80, g->h());
|
||||
g1->box(FL_FLAT_BOX);
|
||||
|
@ -99,7 +125,7 @@ Fl_Double_Window* create_fsqMonitor(void)
|
|||
|
||||
w->end();
|
||||
w->callback((Fl_Callback*)cb_btnCloseMonitor);
|
||||
w->resizable(fsq_monitor);
|
||||
w->resizable(monitor_panel);
|
||||
w->size_range( 300, 200 );
|
||||
w->xclass(PACKAGE_NAME);
|
||||
|
||||
|
@ -167,3 +193,15 @@ void write_fsqDebug(string s, int style)
|
|||
REQ(&FTextRX::addstr, fsq_debug, s, style);
|
||||
}
|
||||
#endif
|
||||
|
||||
void fsq_que_clear()
|
||||
{
|
||||
REQ(&FTextRX::clear, fsq_que);
|
||||
}
|
||||
|
||||
void write_fsq_que(std::string s)
|
||||
{
|
||||
if (!fsq_que) return;
|
||||
REQ(&FTextRX::clear, fsq_que);
|
||||
REQ(&FTextRX::addstr, fsq_que, s, FTextBase::ALTR);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#ifndef confdialog_h
|
||||
#define confdialog_h
|
||||
|
@ -320,6 +320,7 @@ extern Fl_Round_Button *btn_fsqbaud[4];
|
|||
extern Fl_Choice *sel_fsq_frequency;
|
||||
extern Fl_Choice *sel_fsq_sounder;
|
||||
extern Fl_Check_Button *btn_fsq_lowercase;
|
||||
extern Fl_Counter *cntr_FSQ_time_out;
|
||||
extern Fl_Output *txtAuditLog;
|
||||
extern Fl_Light_Button *btn_enable_auditlog;
|
||||
extern Fl_Button *btn_select_auditlog;
|
||||
|
|
|
@ -663,6 +663,9 @@
|
|||
"0 - NO, 1 - YES\n" \
|
||||
"convert operator MYCALL to lower case for directed call triggers", \
|
||||
0) \
|
||||
ELEM_(int, fsq_time_out, "FSQTIMEOUT", \
|
||||
"Time out auto replies after XX seconds", \
|
||||
6) \
|
||||
ELEM_(bool, fsq_enable_heard_log, "FSQ_ENABLE_HEARD_LOG", \
|
||||
"FSQ enable heard log file", \
|
||||
1) \
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <FL/Fl_Double_Window.H>
|
||||
#include <FL/Fl_Browser.H>
|
||||
#include <FL/Fl_Pack.H>
|
||||
#include <string>
|
||||
|
||||
#include "combo.h"
|
||||
//#include "Fl_Tile_Check.h"
|
||||
|
@ -130,7 +131,8 @@ extern FTextTX *fsq_tx_text;
|
|||
extern Fl_Browser *fsq_heard;
|
||||
|
||||
extern Fl_Double_Window *fsqMonitor;
|
||||
extern FTextRX *fsq_monitor;
|
||||
extern FTextRX *fsq_monitor;
|
||||
extern FTextRX *fsq_que;
|
||||
extern Fl_Double_Window *create_fsqMonitor();
|
||||
extern void open_fsqMonitor();
|
||||
extern void close_fsqMonitor();
|
||||
|
@ -141,6 +143,8 @@ extern void open_fsqDebug();
|
|||
extern void close_fsqDebug();
|
||||
extern void write_fsqDebug(int ch, int style = FTextBase::RECV);
|
||||
extern void write_fsqDebug(std::string s, int style = FTextBase::RECV);
|
||||
extern void fsq_que_clear();
|
||||
extern void write_fsq_que(std::string s);
|
||||
|
||||
extern void fsq_disableshift();
|
||||
extern void fsq_enableshift();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#ifndef lgbook_h
|
||||
#define lgbook_h
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#ifndef notifydialog_h
|
||||
#define notifydialog_h
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#ifndef record_browse_h
|
||||
#define record_browse_h
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// generated by Fast Light User Interface Designer (fluid) version 1.0302
|
||||
// generated by Fast Light User Interface Designer (fluid) version 1.0303
|
||||
|
||||
#include "gettext.h"
|
||||
#include "lgbook.h"
|
||||
|
|
Ładowanie…
Reference in New Issue