kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Extract timeout
* Removed 16384 size limitation on WRAP file extract processing. * Added 10 second timeout. Extract process reset after a 10 second period of no incoming text.pull/1/head
rodzic
72865127c6
commit
a30ad34341
|
@ -3044,6 +3044,20 @@ static void cb_chk_open_flmsg(Fl_Check_Button* o, void*) {
|
|||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *chk_open_flmsg_print=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_chk_open_flmsg_print(Fl_Check_Button* o, void*) {
|
||||
progdefaults.open_flmsg_print = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Value_Slider *sldr_extract_timeout=(Fl_Value_Slider *)0;
|
||||
|
||||
static void cb_sldr_extract_timeout(Fl_Value_Slider* o, void*) {
|
||||
progdefaults.extract_timeout=o->value();
|
||||
progdefaults.changed=true;
|
||||
}
|
||||
|
||||
Fl_Input2 *txt_flmsg_pathname=(Fl_Input2 *)0;
|
||||
|
||||
static void cb_txt_flmsg_pathname(Fl_Input2* o, void*) {
|
||||
|
@ -3057,13 +3071,6 @@ static void cb_btn_select_flmsg(Fl_Button*, void*) {
|
|||
select_flmsg_pathname();
|
||||
}
|
||||
|
||||
Fl_Check_Button *chk_open_flmsg_print=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_chk_open_flmsg_print(Fl_Check_Button* o, void*) {
|
||||
progdefaults.open_flmsg_print = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Group *tabPskmail=(Fl_Group *)0;
|
||||
|
||||
Fl_Counter2 *cntServerCarrier=(Fl_Counter2 *)0;
|
||||
|
@ -6973,16 +6980,16 @@ d frequency"));
|
|||
} // Fl_Group* tabCPUspeed
|
||||
{ tabNBEMS = new Fl_Group(0, 50, 540, 320, _("NBEMS"));
|
||||
tabNBEMS->hide();
|
||||
{ Fl_Group* o = new Fl_Group(26, 65, 490, 75, _("NBEMS data file interface"));
|
||||
{ Fl_Group* o = new Fl_Group(20, 65, 500, 75, _("NBEMS data file interface"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||
{ Fl_Check_Button* o = chkAutoExtract = new Fl_Check_Button(46, 100, 75, 20, _("Enable"));
|
||||
{ Fl_Check_Button* o = chkAutoExtract = new Fl_Check_Button(74, 96, 75, 20, _("Enable"));
|
||||
chkAutoExtract->tooltip(_("Extract files for use with external \"wrap / flmsg\" program"));
|
||||
chkAutoExtract->down_box(FL_DOWN_BOX);
|
||||
chkAutoExtract->callback((Fl_Callback*)cb_chkAutoExtract);
|
||||
o->value(progdefaults.autoextract);
|
||||
} // Fl_Check_Button* chkAutoExtract
|
||||
{ Fl_Check_Button* o = chk_open_wrap_folder = new Fl_Check_Button(280, 100, 146, 20, _("Open message folder"));
|
||||
{ Fl_Check_Button* o = chk_open_wrap_folder = new Fl_Check_Button(280, 96, 146, 20, _("Open message folder"));
|
||||
chk_open_wrap_folder->tooltip(_("Opens NBEMS file folder upon successful capture"));
|
||||
chk_open_wrap_folder->down_box(FL_DOWN_BOX);
|
||||
chk_open_wrap_folder->callback((Fl_Callback*)cb_chk_open_wrap_folder);
|
||||
|
@ -6990,16 +6997,36 @@ d frequency"));
|
|||
} // Fl_Check_Button* chk_open_wrap_folder
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(26, 141, 490, 95, _("Reception of flmsg file"));
|
||||
{ Fl_Group* o = new Fl_Group(20, 141, 500, 129, _("Reception of flmsg file"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||
{ Fl_Check_Button* o = chk_open_flmsg = new Fl_Check_Button(46, 168, 136, 20, _("Open with flmsg"));
|
||||
{ Fl_Check_Button* o = chk_open_flmsg = new Fl_Check_Button(74, 168, 136, 20, _("Open with flmsg"));
|
||||
chk_open_flmsg->tooltip(_("Open message with flmsg"));
|
||||
chk_open_flmsg->down_box(FL_DOWN_BOX);
|
||||
chk_open_flmsg->callback((Fl_Callback*)cb_chk_open_flmsg);
|
||||
o->value(progdefaults.open_flmsg);
|
||||
} // Fl_Check_Button* chk_open_flmsg
|
||||
{ Fl_Input2* o = txt_flmsg_pathname = new Fl_Input2(78, 199, 330, 24, _("flmsg:"));
|
||||
{ Fl_Check_Button* o = chk_open_flmsg_print = new Fl_Check_Button(280, 168, 136, 20, _("Open in browser"));
|
||||
chk_open_flmsg_print->tooltip(_("Open file with default browser"));
|
||||
chk_open_flmsg_print->down_box(FL_DOWN_BOX);
|
||||
chk_open_flmsg_print->callback((Fl_Callback*)cb_chk_open_flmsg_print);
|
||||
o->value(progdefaults.open_flmsg_print);
|
||||
} // Fl_Check_Button* chk_open_flmsg_print
|
||||
{ Fl_Value_Slider* o = sldr_extract_timeout = new Fl_Value_Slider(40, 199, 364, 21, _("Timeout (secs)"));
|
||||
sldr_extract_timeout->tooltip(_("Extract times out after NN seconds of inactivity."));
|
||||
sldr_extract_timeout->type(5);
|
||||
sldr_extract_timeout->color(FL_LIGHT3);
|
||||
sldr_extract_timeout->selection_color(FL_FOREGROUND_COLOR);
|
||||
sldr_extract_timeout->minimum(1);
|
||||
sldr_extract_timeout->maximum(10);
|
||||
sldr_extract_timeout->step(0.5);
|
||||
sldr_extract_timeout->value(4);
|
||||
sldr_extract_timeout->textsize(14);
|
||||
sldr_extract_timeout->callback((Fl_Callback*)cb_sldr_extract_timeout);
|
||||
sldr_extract_timeout->align(Fl_Align(FL_ALIGN_RIGHT));
|
||||
o->value(progdefaults.extract_timeout);
|
||||
} // Fl_Value_Slider* sldr_extract_timeout
|
||||
{ Fl_Input2* o = txt_flmsg_pathname = new Fl_Input2(74, 231, 330, 24, _("flmsg:"));
|
||||
txt_flmsg_pathname->tooltip(_("Enter full path-filename for flmsg"));
|
||||
txt_flmsg_pathname->box(FL_DOWN_BOX);
|
||||
txt_flmsg_pathname->color(FL_BACKGROUND2_COLOR);
|
||||
|
@ -7013,16 +7040,10 @@ d frequency"));
|
|||
txt_flmsg_pathname->when(FL_WHEN_CHANGED);
|
||||
o->value(progdefaults.flmsg_pathname.c_str());
|
||||
} // Fl_Input2* txt_flmsg_pathname
|
||||
{ btn_select_flmsg = new Fl_Button(411, 199, 100, 24, _("Locate flmsg"));
|
||||
{ btn_select_flmsg = new Fl_Button(411, 231, 100, 24, _("Locate flmsg"));
|
||||
btn_select_flmsg->tooltip(_("Locate flmsg executable"));
|
||||
btn_select_flmsg->callback((Fl_Callback*)cb_btn_select_flmsg);
|
||||
} // Fl_Button* btn_select_flmsg
|
||||
{ Fl_Check_Button* o = chk_open_flmsg_print = new Fl_Check_Button(280, 168, 136, 20, _("Open in browser"));
|
||||
chk_open_flmsg_print->tooltip(_("Open file with default browser"));
|
||||
chk_open_flmsg_print->down_box(FL_DOWN_BOX);
|
||||
chk_open_flmsg_print->callback((Fl_Callback*)cb_chk_open_flmsg_print);
|
||||
o->value(progdefaults.open_flmsg_print);
|
||||
} // Fl_Check_Button* chk_open_flmsg_print
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
tabNBEMS->end();
|
||||
|
|
|
@ -3806,47 +3806,34 @@ progdefaults.changed = true;}
|
|||
} {
|
||||
Fl_Group {} {
|
||||
label {NBEMS data file interface} open
|
||||
xywh {26 65 490 75} box ENGRAVED_FRAME align 21
|
||||
xywh {20 65 500 75} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Check_Button chkAutoExtract {
|
||||
label Enable
|
||||
callback {progdefaults.autoextract = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Extract files for use with external "wrap / flmsg" program} xywh {46 100 75 20} down_box DOWN_BOX
|
||||
tooltip {Extract files for use with external "wrap / flmsg" program} xywh {74 96 75 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.autoextract);}
|
||||
}
|
||||
Fl_Check_Button chk_open_wrap_folder {
|
||||
label {Open message folder}
|
||||
callback {progdefaults.open_nbems_folder = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Opens NBEMS file folder upon successful capture} xywh {280 100 146 20} down_box DOWN_BOX
|
||||
tooltip {Opens NBEMS file folder upon successful capture} xywh {280 96 146 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.open_nbems_folder);}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label {Reception of flmsg file} open
|
||||
xywh {26 141 490 95} box ENGRAVED_FRAME align 21
|
||||
xywh {20 141 500 129} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Check_Button chk_open_flmsg {
|
||||
label {Open with flmsg}
|
||||
callback {progdefaults.open_flmsg = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Open message with flmsg} xywh {46 168 136 20} down_box DOWN_BOX
|
||||
tooltip {Open message with flmsg} xywh {74 168 136 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.open_flmsg);}
|
||||
}
|
||||
Fl_Input txt_flmsg_pathname {
|
||||
label {flmsg:}
|
||||
callback {progdefaults.flmsg_pathname = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Enter full path-filename for flmsg} xywh {78 199 330 24} when 1
|
||||
code0 {o->value(progdefaults.flmsg_pathname.c_str());}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Button btn_select_flmsg {
|
||||
label {Locate flmsg}
|
||||
callback {select_flmsg_pathname();}
|
||||
tooltip {Locate flmsg executable} xywh {411 199 100 24}
|
||||
}
|
||||
Fl_Check_Button chk_open_flmsg_print {
|
||||
label {Open in browser}
|
||||
callback {progdefaults.open_flmsg_print = o->value();
|
||||
|
@ -3854,6 +3841,26 @@ progdefaults.changed = true;}
|
|||
tooltip {Open file with default browser} xywh {280 168 136 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.open_flmsg_print);}
|
||||
}
|
||||
Fl_Value_Slider sldr_extract_timeout {
|
||||
label {Timeout (secs)}
|
||||
callback {progdefaults.extract_timeout=o->value();
|
||||
progdefaults.changed=true;}
|
||||
tooltip {Extract times out after NN seconds of inactivity.} xywh {40 199 364 21} type {Horz Knob} color 54 selection_color 0 align 8 minimum 1 maximum 10 step 0.5 value 4 textsize 14
|
||||
code0 {o->value(progdefaults.extract_timeout);}
|
||||
}
|
||||
Fl_Input txt_flmsg_pathname {
|
||||
label {flmsg:}
|
||||
callback {progdefaults.flmsg_pathname = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Enter full path-filename for flmsg} xywh {74 231 330 24} when 1
|
||||
code0 {o->value(progdefaults.flmsg_pathname.c_str());}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Button btn_select_flmsg {
|
||||
label {Locate flmsg}
|
||||
callback {select_flmsg_pathname();}
|
||||
tooltip {Locate flmsg executable} xywh {411 231 100 24}
|
||||
}
|
||||
}
|
||||
}
|
||||
Fl_Group tabPskmail {
|
||||
|
|
|
@ -408,9 +408,11 @@ extern Fl_Group *tabNBEMS;
|
|||
extern Fl_Check_Button *chkAutoExtract;
|
||||
extern Fl_Check_Button *chk_open_wrap_folder;
|
||||
extern Fl_Check_Button *chk_open_flmsg;
|
||||
extern Fl_Check_Button *chk_open_flmsg_print;
|
||||
#include <FL/Fl_Value_Slider.H>
|
||||
extern Fl_Value_Slider *sldr_extract_timeout;
|
||||
extern Fl_Input2 *txt_flmsg_pathname;
|
||||
extern Fl_Button *btn_select_flmsg;
|
||||
extern Fl_Check_Button *chk_open_flmsg_print;
|
||||
extern Fl_Group *tabPskmail;
|
||||
extern Fl_Counter2 *cntServerCarrier;
|
||||
extern Fl_Counter2 *cntServerOffset;
|
||||
|
|
|
@ -729,6 +729,9 @@
|
|||
ELEM_(std::string, flmsg_pathname, "FLMSG_PATHNAME", \
|
||||
"Full pathname to the flmsg executable", \
|
||||
"") \
|
||||
ELEM_(double, extract_timeout, "EXTRACT_TIMEOUT", \
|
||||
"Abort message extraction after nn.n seconds of inactivity", \
|
||||
2.0) \
|
||||
ELEM_(std::string, cty_dat_pathname, "CTYDAT_PATHNAME", \
|
||||
"Full pathname to the cty.dat data file", \
|
||||
"") \
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include "confdialog.h"
|
||||
#include "debug.h"
|
||||
#include "icons.h"
|
||||
#include "qrunner.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -74,6 +75,23 @@ void rx_extract_reset()
|
|||
extracting = false;
|
||||
}
|
||||
|
||||
void rx_extract_timer(void *)
|
||||
{
|
||||
rx_extract_msg = "Extract timed out";
|
||||
put_status(rx_extract_msg.c_str(), 20, STATUS_CLEAR);
|
||||
rx_extract_reset();
|
||||
}
|
||||
|
||||
void rx_add_timer()
|
||||
{
|
||||
Fl::add_timeout(progdefaults.extract_timeout, rx_extract_timer, NULL);
|
||||
}
|
||||
|
||||
void rx_remove_timer()
|
||||
{
|
||||
Fl::remove_timeout(rx_extract_timer);
|
||||
}
|
||||
|
||||
void rx_extract_add(int c)
|
||||
{
|
||||
if (!c) return;
|
||||
|
@ -96,9 +114,14 @@ void rx_extract_add(int c)
|
|||
|
||||
memset(rx_extract_buff, ' ', bufsize);
|
||||
extracting = true;
|
||||
REQ(rx_remove_timer);
|
||||
REQ(rx_add_timer);
|
||||
} else if (extracting) {
|
||||
rx_buff += ch;
|
||||
REQ(rx_remove_timer);
|
||||
REQ(rx_add_timer);
|
||||
if (strstr(rx_extract_buff, end) != NULL) {
|
||||
REQ(rx_remove_timer);
|
||||
struct tm tim;
|
||||
time_t t;
|
||||
time(&t);
|
||||
|
@ -169,10 +192,6 @@ void rx_extract_add(int c)
|
|||
#endif
|
||||
}
|
||||
rx_extract_reset();
|
||||
} else if (rx_buff.length() > 16384) {
|
||||
rx_extract_msg = "Extract length exceeded 16384 bytes";
|
||||
put_status(rx_extract_msg.c_str(), 20, STATUS_CLEAR);
|
||||
rx_extract_reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue