pull/1/head
John Greb 2015-07-25 17:09:24 +01:00
commit 8957de3a71
17 zmienionych plików z 215 dodań i 117 usunięć

Wyświetl plik

@ -1,6 +1,18 @@
2015-07-10 David Freese <iam_w1hkj@w1hkj.com>
d9dec44: fsq modem
=Version 3.22.13=
2015-07-18 David Freese <iam_w1hkj@w1hkj.com>
7bdf051: FSQ bug fix
9319676: XMLRPC commands
=Version 3.22.12=
1579ef6: FSQ heard parser
f61f7d7: fsq modem
dfb9318: FreqControl focus
e477621: trx exit

Wyświetl plik

@ -9,7 +9,7 @@ dnl major and minor must be integers; patch may
dnl contain other characters or be empty
m4_define(FLDIGI_MAJOR, [3])
m4_define(FLDIGI_MINOR, [22])
m4_define(FLDIGI_PATCH, [.11])
m4_define(FLDIGI_PATCH, [.13])
m4_define(FLARQ_MAJOR, [4])
m4_define(FLARQ_MINOR, [3])
m4_define(FLARQ_PATCH, [.5])

Wyświetl plik

@ -2882,11 +2882,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*) {
@ -2908,6 +2903,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;
@ -5795,7 +5802,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, 200, _("Station"));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
@ -5918,6 +5924,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"));
@ -7493,11 +7500,11 @@ i on a\ntouch screen device such as a tablet."));
tabWaterfall->end();
} // Fl_Group* tabWaterfall
{ tabModems = new Fl_Group(0, 25, 600, 355, _("Modems"));
tabModems->hide();
{ tabsModems = new Fl_Tabs(0, 25, 600, 355);
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"));
@ -8300,10 +8307,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);
@ -8322,7 +8330,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);
@ -8346,31 +8354,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);
@ -8379,19 +8382,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"));

Wyświetl plik

@ -163,8 +163,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
@ -373,8 +372,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
@ -482,7 +481,7 @@ btnApplyConfig->activate();}
}
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
@ -2860,7 +2859,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
@ -3477,7 +3476,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
@ -3487,7 +3486,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 {
@ -3502,7 +3501,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 {
@ -3527,7 +3526,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]} {
@ -3539,7 +3538,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]} {
@ -3551,7 +3550,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]} {
@ -3563,16 +3562,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();
@ -3585,7 +3577,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);}
} {}
@ -3593,9 +3585,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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -376,14 +376,15 @@ static fre_t call("([[:alnum:]]?[[:alpha:]/]+[[:digit:]]+[[:alnum:]/]+)", REG_EX
bool fsq::valid_callsign(std::string s)
{
static char sz[21];
if (s.empty()) return false;
if (s.length() < 3) return false;
if (s.length() > 20) return false;
// if (s.find(' ') != std::string::npos) return false;
if (s == allcall) return true;
if (s == cqcqcq) return true;
if (s == mycall) return true;
if (s.find(' ') != std::string::npos) return false;
static char sz[21];
memset(sz, 0, 21);
strcpy(sz, s.c_str());
bool matches = call.match(sz);
@ -410,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) {
@ -423,13 +424,15 @@ void fsq::parse_rx_text()
station_calling.clear();
int max = p+1;
std::string substr;
for (int i = 1; (i < 10) && (i < max); i++) {
if (rx_text[p-i] <= ' ' || rx_text[p-i] > 'z') {
rx_text.clear();
return;
}
if (crc.sval(rx_text.substr(p-i, i)) == rxcrc) {
station_calling = rx_text.substr(p-i, i);
substr = rx_text.substr(p-i, i);
if ((crc.sval(substr) == rxcrc) && valid_callsign(substr)) {
station_calling = substr;
break;
}
}
@ -544,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
@ -687,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"));
@ -1003,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;
@ -1426,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()
{
@ -1444,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)
{
@ -1500,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");
@ -1516,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);
}
//==============================================================================

Wyświetl plik

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

Wyświetl plik

@ -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
@ -322,6 +322,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;

Wyświetl plik

@ -666,6 +666,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) \

Wyświetl plik

@ -29,6 +29,7 @@
#include <FL/Fl_Pack.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Choice.H>
#include <string>
#include "combo.h"
//#include "Fl_Tile_Check.h"
@ -155,7 +156,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();
@ -166,6 +168,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();

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -1052,22 +1052,6 @@ public:
}
};
class Main_get_freq : public xmlrpc_c::method
{
public:
Main_get_freq()
{
_signature = "d:n";
_help = "Returns the RF carrier frequency.";
}
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
{
double rfc = wf->rfcarrier();
*retval = xmlrpc_c::value_double(rfc);
}
};
void xmlrpc_set_qsy(long long rfc)
{
wf->rfcarrier(rfc);
@ -1751,7 +1735,7 @@ class Main_get_char_timing : public xmlrpc_c::method
public:
Main_get_char_timing()
{
_signature = "n:6";
_signature = "n:i";
_help = "Input: value of character. Returns transmit duration for specified character (samples:sample rate).";
}
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
@ -1850,7 +1834,7 @@ class Main_get_tx_timing : public xmlrpc_c::method
public:
Main_get_tx_timing()
{
_signature = "n:6";
_signature = "n:s";
_help = "Returns transmit duration for test string (samples:sample rate:secs).";
}
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
@ -1942,6 +1926,21 @@ public:
}
};
class Rig_get_freq : public xmlrpc_c::method
{
public:
Rig_get_freq()
{
_signature = "d:n";
_help = "Returns the RF carrier frequency.";
}
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
{
double rfc = wf->rfcarrier();
*retval = xmlrpc_c::value_double(rfc);
}
};
class Rig_set_smeter : public xmlrpc_c::method
{
public:
@ -2268,6 +2267,11 @@ class Main_set_rig_mode : public Rig_set_mode
public:
Main_set_rig_mode() { _help = "[DEPRECATED; use rig.set_mode"; }
};
class Main_get_freq : public Rig_get_freq
{
public:
Main_get_freq() {_help = "[DEPRECATED; use rig.get_frequency"; }
};
class Main_get_rig_modes : public Rig_get_modes
{
public:
@ -2458,7 +2462,7 @@ class Log_set_rst_in : public xmlrpc_c::method
public:
Log_set_rst_in()
{
_signature = "s:n";
_signature = "n:s";
_help = "Sets the RST(r) field contents.";
}
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
@ -2489,7 +2493,7 @@ class Log_set_rst_out : public xmlrpc_c::method
public:
Log_set_rst_out()
{
_signature = "s:n";
_signature = "n:s";
_help = "Sets the RST(s) field contents.";
}
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
@ -3414,13 +3418,14 @@ ELEM_(Rig_set_name, "rig.set_name") \
ELEM_(Rig_get_name, "rig.get_name") \
ELEM_(Rig_set_frequency, "rig.set_frequency") \
ELEM_(Rig_set_smeter, "rig.set_smeter") \
ELEM_(Rig_set_pwrmeter, "rig.set_pwrmeter") \
ELEM_(Rig_set_pwrmeter, "rig.set_pwrmeter") \
ELEM_(Rig_set_modes, "rig.set_modes") \
ELEM_(Rig_set_mode, "rig.set_mode") \
ELEM_(Rig_get_modes, "rig.get_modes") \
ELEM_(Rig_get_mode, "rig.get_mode") \
ELEM_(Rig_set_bandwidths, "rig.set_bandwidths") \
ELEM_(Rig_set_bandwidth, "rig.set_bandwidth") \
ELEM_(Rig_get_freq, "rig.get_frequency") \
ELEM_(Rig_get_bandwidth, "rig.get_bandwidth") \
ELEM_(Rig_get_bandwidths, "rig.get_bandwidths") \
ELEM_(Rig_get_notch, "rig.get_notch") \
@ -3436,7 +3441,7 @@ ELEM_(Log_get_name, "log.get_name") \
ELEM_(Log_get_rst_in, "log.get_rst_in") \
ELEM_(Log_get_rst_out, "log.get_rst_out") \
ELEM_(Log_set_rst_in, "log.set_rst_in") \
ELEM_(Log_set_rst_out, "log.set_rst_out") \
ELEM_(Log_set_rst_out, "log.set_rst_out") \
ELEM_(Log_get_serial_number, "log.get_serial_number") \
ELEM_(Log_set_serial_number, "log.set_serial_number") \
ELEM_(Log_get_serial_number_sent, "log.get_serial_number_sent") \
@ -3456,6 +3461,8 @@ ELEM_(Log_set_call, "log.set_call") \
ELEM_(Log_set_name, "log.set_name") \
ELEM_(Log_set_qth, "log.set_qth") \
ELEM_(Log_set_locator, "log.set_locator") \
ELEM_(Log_set_rst_in, "log.set_rst_in") \
ELEM_(Log_set_rst_out, "log.set_rst_out") \
\
ELEM_(Io_in_use, "io.in_use") \
ELEM_(Io_enable_kiss, "io.enable_kiss") \