KISS IO Bug fixes/Additions and C++11 Test

* Unified IO switching code
  * Add: MFSK31 and MFSK16 use for KISS IO operations
  * Add: KISS IO Auto connect on FLDIGI start up
  * In Listen Mode (TCP) on disconnect returns to waiting for connection.
  * TCP none listing mode connection tries 10 (one sec interval) times
    before giving up.
  * Save/restore KPSQL button state.
  * User 7bit modem switch warning is now selectable
  * Logic error when saving FLDIGI progStatus.data_io_enable variable.
  * Add: TXLOCK:<ON|OFF> command to the KISS hardware command set.
  * Assign/Compare KISS hardware modem names in capital letter form.
  * Add: Close KISS Socket on write fail.
  * Fixed issues effecting Win32 compile.
  * Add: Test compiler for C++11 support. Configuration macro added but not
    used until other FLDIGI source code c++11 compiler error are resolved.
    Recent compilers require c++11 in other to use std::bind().
  * Correct typedef clockid_t conflict between timeops.h and
    pthead_time.h
  * Add new IO panel widgets to the lock/unlock mechanism.
  * Restore initial IO panel locked state.
pull/4/head
Robert Stiles 2016-05-26 07:46:36 -05:00 zatwierdzone przez David Freese
rodzic e14bbb60af
commit 4b2005e7f7
20 zmienionych plików z 3114 dodań i 2667 usunięć

108
m4/c++11.m4 100644
Wyświetl plik

@ -0,0 +1,108 @@
m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
template <typename T>
struct check
{
static_assert(sizeof(int) <= sizeof(T), "not big enough");
};
struct Base {
virtual void f() {}
};
struct Child : public Base {
virtual void f() {}
};
typedef check<check<bool>> right_angle_brackets;
int a;
decltype(a) b;
typedef check<int> check_type;
check_type c;
check_type&& cr = static_cast<check_type&&>(c);
auto d = a;
auto l = [](){};
]])
AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
m4_if([$1], [], [],
[$1], [ext], [],
[$1], [noext], [],
[m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl
m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
[$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
[$2], [optional], [ax_cxx_compile_cxx11_required=false],
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])
AC_LANG_PUSH([C++])dnl
ac_success=no
AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
ax_cv_cxx_compile_cxx11,
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
[ax_cv_cxx_compile_cxx11=yes],
[ax_cv_cxx_compile_cxx11=no])])
if test x$ax_cv_cxx_compile_cxx11 = xyes; then
ac_success=yes
fi
m4_if([$1], [noext], [], [dnl
if test x$ac_success = xno; then
for switch in -std=gnu++11 -std=gnu++0x; do
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
$cachevar,
[ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXXFLAGS="$ac_save_CXXFLAGS"])
if eval test x\$$cachevar = xyes; then
CXXFLAGS="$CXXFLAGS $switch"
CXX11_SWITCH="$switch"
AC_SUBST(CXX11_SWITCH)
ac_success=yes
break
fi
done
fi])
m4_if([$1], [ext], [], [dnl
if test x$ac_success = xno; then
for switch in -std=c++11 -std=c++0x; do
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
$cachevar,
[ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXXFLAGS="$ac_save_CXXFLAGS"])
if eval test x\$$cachevar = xyes; then
CXXFLAGS="$CXXFLAGS $switch"
CXX11_SWITCH="$switch"
AC_SUBST(CXX11_SWITCH)
ac_success=yes
break
fi
done
fi])
AC_LANG_POP([C++])
if test x$ax_cxx_compile_cxx11_required = xtrue; then
if test x$ac_success = xno; then
AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
fi
else
if test x$ac_success = xno; then
HAVE_CXX11=0
AC_MSG_NOTICE([No compiler with C++11 support was found])
else
HAVE_CXX11=1
AC_DEFINE(HAVE_CXX11,1,
[define if the compiler supports basic C++11 syntax])
fi
AC_SUBST(HAVE_CXX11)
fi
])

Wyświetl plik

@ -421,7 +421,7 @@ static int assign_index(widget_type * widget, ScriptParsing *sp, SCRIPT_COMMANDS
widget->do_callback();
data = index;
return script_no_errors;
}
@ -1245,11 +1245,9 @@ int process_io_active_port(ScriptParsing *sp, SCRIPT_COMMANDS *sc)
return script_no_errors;
if(value.find(PARM_KISS) != std::string::npos) {
btnEnable_kiss->value(true);
btnEnable_kiss->do_callback();
enable_kiss();
} else if(value.find(PARM_ARQ) != std::string::npos) {
btnEnable_arq->value(true);
btnEnable_arq->do_callback();
enable_arq();
} else {
return script_invalid_parameter;
}
@ -2797,42 +2795,42 @@ int process_reset(ScriptParsing *sp, SCRIPT_COMMANDS *sc)
***********************************************************/
static void script_execute(const char *filename, bool queue_flag)
{
ScriptParsing *sp = 0;
static std::string script_filename = "";
if(!filename) {
LOG_INFO(_("Script file name (path) null pointer"));
return;
}
script_filename.assign(filename);
if(script_filename.empty()) {
LOG_INFO(_("Script file name (path) invalid"));
return;
}
sp = new ScriptParsing;
if(!sp) {
LOG_INFO(_("Script Parsing Class Allocation Fail (%s)"), script_filename.c_str());
return;
}
LOG_INFO(_("Executing script file: %s"), script_filename.c_str());
sp->parse_commands((char *) script_filename.c_str());
if(sp->script_errors()) {
LOG_INFO(_("Issues reported in processing script file: %s"), script_filename.c_str());
fl_alert("%s", _("Script file contains potential issues\nSee documentation and/or Log file for details."));
}
if(sp->restart_flag()) {
fl_alert("%s", _("Some changes made by the script requires program\nrestart before they become active."));
}
if(sp)
delete sp;
}
@ -2845,16 +2843,16 @@ static void script_execute(const char *filename, bool queue_flag)
void cb_scripts(bool reset_path = false)
{
pthread_mutex_lock(&mutex_script_io);
static bool first_time = true;
static char script_filename[FL_PATH_MAX + 1];
std::string new_path = "";
if(reset_path || first_time) {
memset(script_filename, 0, sizeof(script_filename));
strncpy(script_filename, ScriptsDir.c_str(), FL_PATH_MAX);
int len = strnlen(script_filename, FL_PATH_MAX);
if(len > 0) {
len--;
if(script_filename[len] == PATH_CHAR_SEPERATOR);
@ -2862,22 +2860,22 @@ void cb_scripts(bool reset_path = false)
} else {
return;
}
first_time = false;
}
const char *p = FSEL::select((char *)_("Script Files"), (char *)_("*.txt"), \
script_filename);
if(p) {
memset(script_filename, 0, sizeof(script_filename));
strncpy(script_filename, p, FL_PATH_MAX);
Fl::lock();
script_execute(script_filename, false);
Fl::unlock();
}
pthread_mutex_unlock(&mutex_script_io);
}

Wyświetl plik

@ -5658,10 +5658,7 @@ Fl_Check_Button *btnEnable_arq=(Fl_Check_Button *)0;
static void cb_btnEnable_arq(Fl_Check_Button* o, void*) {
if(o->value()) {
progdefaults.changed = true;
progdefaults.data_io_enabled = ARQ_IO;
data_io_enabled = ARQ_IO;
enable_disable_kpsql();
enable_arq();
}
progdefaults.changed = true;
@ -5671,9 +5668,7 @@ Fl_Check_Button *btnEnable_kiss=(Fl_Check_Button *)0;
static void cb_btnEnable_kiss(Fl_Check_Button* o, void*) {
if(o->value()) {
progdefaults.data_io_enabled = KISS_IO;
data_io_enabled = KISS_IO;
enable_disable_kpsql();
enable_kiss();
}
progdefaults.changed = true;
}
@ -5681,10 +5676,14 @@ progdefaults.changed = true;
Fl_Check_Button *btnEnable_ax25_decode=(Fl_Check_Button *)0;
static void cb_btnEnable_ax25_decode(Fl_Check_Button* o, void*) {
if(o->value())
if(o->value()) {
progStatus.ax25_decode_enabled = true;
progdefaults.ax25_decode_enabled = true;
else
}
else {
progStatus.ax25_decode_enabled = false;
progdefaults.ax25_decode_enabled = false;
}
progdefaults.changed = true;
}
@ -5693,8 +5692,10 @@ Fl_Check_Button *btnEnable_csma=(Fl_Check_Button *)0;
static void cb_btnEnable_csma(Fl_Check_Button* o, void*) {
if(o->value()) {
progStatus.csma_enabled = true;
progdefaults.csma_enabled = true;
} else {
progStatus.csma_enabled = false;
progdefaults.csma_enabled = false;
}
progdefaults.changed = true;
@ -5710,56 +5711,69 @@ progdefaults.changed = true;
Fl_Input2 *txtKiss_ip_address=(Fl_Input2 *)0;
static void cb_txtKiss_ip_address(Fl_Input2* o, void*) {
progdefaults.kiss_address = o->value();
progStatus.kiss_address = o->value();
progdefaults.kiss_address = o->value();
progdefaults.changed = true;
}
Fl_Counter *cntKPSQLAttenuation=(Fl_Counter *)0;
static void cb_cntKPSQLAttenuation(Fl_Counter* o, void*) {
progdefaults.kpsql_attenuation = (int) o->value();
update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
progStatus.kpsql_attenuation = (int) o->value();
progdefaults.kpsql_attenuation = (int) o->value();
update_kpsql_fractional_gain(progStatus.kpsql_attenuation);
progdefaults.changed = true;
}
Fl_Input2 *txtKiss_ip_io_port_no=(Fl_Input2 *)0;
static void cb_txtKiss_ip_io_port_no(Fl_Input2* o, void*) {
progdefaults.kiss_io_port = o->value();
progStatus.kiss_io_port = o->value();
progdefaults.kiss_io_port = o->value();
progdefaults.changed = true;
}
Fl_Counter *cntBusyChannelSeconds=(Fl_Counter *)0;
static void cb_cntBusyChannelSeconds(Fl_Counter* o, void*) {
progdefaults.busyChannelSeconds = (int) o->value();
progStatus.busyChannelSeconds = (int) o->value();
progdefaults.busyChannelSeconds = (int) o->value();
progdefaults.changed = true;
}
Fl_Check_Button *btnEnableBusyChannel=(Fl_Check_Button *)0;
static void cb_btnEnableBusyChannel(Fl_Check_Button* o, void*) {
if(o->value())
if(o->value()) {
progStatus.enableBusyChannel = true;
progdefaults.enableBusyChannel = true;
else
}
else {
progStatus.enableBusyChannel = false;
progdefaults.enableBusyChannel = false;
}
progdefaults.changed = true;
}
Fl_Input2 *txtKiss_ip_out_port_no=(Fl_Input2 *)0;
static void cb_txtKiss_ip_out_port_no(Fl_Input2* o, void*) {
progdefaults.kiss_out_port = o->value();
progStatus.kiss_out_port = o->value();
progdefaults.kiss_out_port = o->value();
progdefaults.changed = true;
}
Fl_Check_Button *btnEnable_dual_port=(Fl_Check_Button *)0;
static void cb_btnEnable_dual_port(Fl_Check_Button* o, void*) {
if(o->value())
if(o->value()) {
progStatus.kiss_dual_port_enabled = true;
progdefaults.kiss_dual_port_enabled = true;
else
}
else {
progStatus.kiss_dual_port_enabled = false;
progdefaults.kiss_dual_port_enabled = false;
}
progdefaults.changed = true;
}
@ -5773,46 +5787,78 @@ static void cb_btn_restart_kiss(Fl_Button*, void*) {
Fl_Button *btn_connect_kiss_io=(Fl_Button *)0;
static void cb_btn_connect_kiss_io(Fl_Button*, void*) {
connect_to_kiss_io();
connect_to_kiss_io(true);
}
Fl_Check_Button *btnKissTCPIO=(Fl_Check_Button *)0;
static void cb_btnKissTCPIO(Fl_Check_Button* o, void*) {
if(o->value()) {
progdefaults.kiss_tcp_io = true;
progStatus.kiss_tcp_io = true;
progdefaults.kiss_tcp_io = true;
} else {
progStatus.kiss_tcp_io = false;
progdefaults.kiss_tcp_io = false;
}
kiss_io_set_button_state(0);
progdefaults.changed = true;
}
Fl_Check_Button *btnKissUDPIO=(Fl_Check_Button *)0;
static void cb_btnKissUDPIO(Fl_Check_Button* o, void*) {
if(o->value()) {
progdefaults.kiss_tcp_io = false;
progStatus.kiss_tcp_io = false;
progdefaults.kiss_tcp_io = false;
} else {
progStatus.kiss_tcp_io = true;
progdefaults.kiss_tcp_io = true;
}
kiss_io_set_button_state(0);
progdefaults.changed = true;
}
Fl_Check_Button *btnKissTCPListen=(Fl_Check_Button *)0;
static void cb_btnKissTCPListen(Fl_Check_Button* o, void*) {
if(o->value()) {
progdefaults.kiss_tcp_listen = true;
progStatus.kiss_tcp_listen = true;
progdefaults.kiss_tcp_listen = true;
} else {
progStatus.kiss_tcp_listen = false;
progdefaults.kiss_tcp_listen = false;
};
}
progdefaults.changed = true;
}
Fl_Check_Button *btnEnable_7bit_modem_inhibit=(Fl_Check_Button *)0;
static void cb_btnEnable_7bit_modem_inhibit(Fl_Check_Button* o, void*) {
if(o->value()) {
progStatus.kiss_io_modem_change_inhibit = true;
progdefaults.kiss_io_modem_change_inhibit = true;
}
else {
progStatus.kiss_io_modem_change_inhibit = false;
progdefaults.kiss_io_modem_change_inhibit = false;
}
progdefaults.changed = true;
}
Fl_Check_Button *btnEnable_auto_connect=(Fl_Check_Button *)0;
static void cb_btnEnable_auto_connect(Fl_Check_Button* o, void*) {
if(o->value()) {
progdefaults.tcp_udp_auto_connect = true;
}
else {
progdefaults.tcp_udp_auto_connect = false;
}
progdefaults.changed = true;
}
Fl_Input2 *txtArq_ip_address=(Fl_Input2 *)0;
@ -6851,7 +6897,7 @@ ab and newline are automatically included."));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
{ Fl_Check_Button* o = btn_dockable_macros = new Fl_Check_Button(152, 353, 296, 20, _("Disable dockable macro bar"));
btn_dockable_macros->tooltip(_("Allow minimized main dialog height \n411 pixels with WF height = 100"));
btn_dockable_macros->tooltip(_("Allow minimized main dialog height\n411 pixels with WF height = 100"));
btn_dockable_macros->down_box(FL_DOWN_BOX);
btn_dockable_macros->callback((Fl_Callback*)cb_btn_dockable_macros);
o->value(!progdefaults.dockable_macros);
@ -7381,7 +7427,6 @@ i on a\ntouch screen device such as a tablet."));
tabsWaterfall->color(FL_LIGHT1);
tabsWaterfall->selection_color(FL_LIGHT1);
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Display"));
o->hide();
{ Fl_Group* o = new Fl_Group(50, 63, 496, 190, _("Colors and cursors"));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
@ -7577,6 +7622,7 @@ i on a\ntouch screen device such as a tablet."));
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("FFT Processing"));
o->hide();
{ Fl_Group* o = new Fl_Group(55, 71, 490, 135);
o->box(FL_ENGRAVED_FRAME);
{ Fl_Counter2* o = cntLowFreqCutoff = new Fl_Counter2(100, 89, 70, 22, _("Lower limit"));
@ -7775,7 +7821,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, 335, _("CW"));
tabCW->hide();
{ tabsCW = new Fl_Tabs(0, 50, 600, 335);
tabsCW->selection_color(FL_LIGHT1);
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("General"));
@ -9218,7 +9263,6 @@ i on a\ntouch screen device such as a tablet."));
tabsRTTY->selection_color(FL_LIGHT1);
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Tx"));
o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
o->hide();
{ Fl_ListBox* o = selShift = new Fl_ListBox(65, 104, 100, 20, _("Carrier shift"));
selShift->tooltip(_("Select carrier shift"));
selShift->box(FL_DOWN_BOX);
@ -9374,6 +9418,7 @@ i on a\ntouch screen device such as a tablet."));
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Rx"));
o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
o->hide();
{ Fl_Group* o = new Fl_Group(32, 101, 535, 69, _("Receive"));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
@ -9609,9 +9654,9 @@ le Earth)"));
tabTHOR->end();
} // Fl_Group* tabTHOR
{ tabOther = new Fl_Group(0, 50, 600, 335, _("Other"));
tabOther->hide();
{ tabsOther = new Fl_Tabs(0, 50, 600, 335);
{ tabNavtex = new Fl_Group(0, 75, 600, 310, _("Nav"));
tabNavtex->hide();
{ Fl_Check_Button* o = btnNvtxAdifLog = new Fl_Check_Button(181, 109, 235, 30, _("Log Navtex messages to Adif file"));
btnNvtxAdifLog->down_box(FL_DOWN_BOX);
btnNvtxAdifLog->callback((Fl_Callback*)cb_btnNvtxAdifLog);
@ -9695,6 +9740,7 @@ le Earth)"));
tabWefax->end();
} // Fl_Group* tabWefax
{ tabDFTscan = new Fl_Group(0, 75, 600, 310, _("Scan"));
tabDFTscan->hide();
{ Fl_Counter* o = cnt_dft_scans = new Fl_Counter(235, 154, 132, 21, _("# scans"));
cnt_dft_scans->minimum(10);
cnt_dft_scans->maximum(1000);
@ -9735,7 +9781,6 @@ le Earth)"));
tabsRig->selection_color(FL_LIGHT1);
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("RigCAT"));
o->tooltip(_("Rig Control using xml spec file"));
o->hide();
{ chkUSERIGCAT = new Fl_Check_Button(245, 60, 110, 20, _("Use RigCAT"));
chkUSERIGCAT->tooltip(_("RigCAT used for rig control"));
chkUSERIGCAT->down_box(FL_DOWN_BOX);
@ -10372,6 +10417,7 @@ definition"));
tabXMLRPC->end();
} // Fl_Group* tabXMLRPC
{ tabFLRIG = new Fl_Group(0, 50, 600, 335, _("flrig"));
tabFLRIG->hide();
{ Fl_Output* o = new Fl_Output(75, 77, 465, 58);
o->tooltip(_("\" \""));
o->type(12);
@ -10669,7 +10715,6 @@ nce.\nYou may change the state from either location.\n..."));
tabID->hide();
{ tabsID = new Fl_Tabs(0, 25, 600, 360);
{ tabRsID = new Fl_Group(0, 50, 600, 335, _("RsID"));
tabRsID->hide();
{ Fl_Group* o = new Fl_Group(32, 55, 535, 210, _("Reed-Solomon ID (Rx)"));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
@ -10870,6 +10915,7 @@ gured on the\n\"Notifications\" configure dialog."));
tabVideoID->end();
} // Fl_Group* tabVideoID
{ tabCwID = new Fl_Group(0, 50, 600, 335, _("CW"));
tabCwID->hide();
{ sld = new Fl_Group(32, 146, 536, 127, _("CW Postamble ID"));
sld->box(FL_ENGRAVED_FRAME);
sld->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
@ -11517,7 +11563,6 @@ and restarted if needed."));
tabQRZ->hide();
{ tabsQRZ = new Fl_Tabs(0, 25, 600, 360);
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Call Lookup"));
o->hide();
{ Fl_Group* o = new Fl_Group(34, 56, 538, 122, _("Web Browser lookup"));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
@ -11696,6 +11741,7 @@ and restarted if needed."));
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("eQSL"));
o->hide();
{ Fl_Input2* o = inpEQSL_id = new Fl_Input2(225, 58, 150, 20, _("User ID"));
inpEQSL_id->tooltip(_("Your login name"));
inpEQSL_id->box(FL_DOWN_BOX);
@ -12027,7 +12073,7 @@ and restarted if needed."));
btnEnable_arq->type(102);
btnEnable_arq->down_box(FL_DOWN_BOX);
btnEnable_arq->callback((Fl_Callback*)cb_btnEnable_arq);
if(progdefaults.data_io_enabled == ARQ_IO) o->value(true);
if(progStatus.data_io_enabled == ARQ_IO) o->value(true);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnEnable_arq
{ Fl_Check_Button* o = btnEnable_kiss = new Fl_Check_Button(221, 112, 115, 20, _("Enable KISS"));
@ -12035,7 +12081,7 @@ and restarted if needed."));
btnEnable_kiss->type(102);
btnEnable_kiss->down_box(FL_DOWN_BOX);
btnEnable_kiss->callback((Fl_Callback*)cb_btnEnable_kiss);
if(progdefaults.data_io_enabled == KISS_IO) o->value(true);
if(progStatus.data_io_enabled == KISS_IO) o->value(true);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnEnable_kiss
{ Fl_Check_Button* o = btnEnable_ax25_decode = new Fl_Check_Button(346, 112, 115, 20, _("AX25 Decode"));
@ -12049,7 +12095,7 @@ and restarted if needed."));
btnEnable_csma->tooltip(_("Used for BPQ32"));
btnEnable_csma->down_box(FL_DOWN_BOX);
btnEnable_csma->callback((Fl_Callback*)cb_btnEnable_csma);
if(progdefaults.csma_enabled) o->value(true);
if(progStatus.csma_enabled) o->value(true);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnEnable_csma
{ new Fl_Box(8, 37, 582, 72, _("Enable ARQ for programs that support TCP and FLDIGI ARQ protocol.\nEnable KIS\
@ -12062,12 +12108,12 @@ s require program restart."));
{ Fl_Group* o = new Fl_Group(6, 138, 588, 85, _("KISS"));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
{ Fl_Button* o = btnDefault_kiss_ip = new Fl_Button(425, 193, 73, 25, _("Default"));
{ Fl_Button* o = btnDefault_kiss_ip = new Fl_Button(505, 195, 80, 25, _("Default"));
btnDefault_kiss_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
btnDefault_kiss_ip->callback((Fl_Callback*)cb_btnDefault_kiss_ip);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Button* btnDefault_kiss_ip
{ Fl_Input2* o = txtKiss_ip_address = new Fl_Input2(56, 193, 230, 25, _("Addr"));
{ Fl_Input2* o = txtKiss_ip_address = new Fl_Input2(55, 195, 230, 25, _("Addr"));
txtKiss_ip_address->tooltip(_("IP Address for KISS interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: i\
.e. localhost"));
txtKiss_ip_address->box(FL_DOWN_BOX);
@ -12097,7 +12143,7 @@ s require program restart."));
update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Counter* cntKPSQLAttenuation
{ Fl_Input2* o = txtKiss_ip_io_port_no = new Fl_Input2(333, 164, 55, 25, _("I/O"));
{ Fl_Input2* o = txtKiss_ip_io_port_no = new Fl_Input2(330, 195, 55, 25, _("I/O"));
txtKiss_ip_io_port_no->tooltip(_("IP Address Port Number"));
txtKiss_ip_io_port_no->box(FL_DOWN_BOX);
txtKiss_ip_io_port_no->color(FL_BACKGROUND2_COLOR);
@ -12125,7 +12171,7 @@ s require program restart."));
o->step(1,10);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Counter* cntBusyChannelSeconds
{ Fl_Check_Button* o = btnEnableBusyChannel = new Fl_Check_Button(331, 145, 65, 15, _("Busy"));
{ Fl_Check_Button* o = btnEnableBusyChannel = new Fl_Check_Button(235, 145, 65, 15, _("Busy"));
btnEnableBusyChannel->tooltip(_("Enable Busy Channel"));
btnEnableBusyChannel->down_box(FL_DOWN_BOX);
btnEnableBusyChannel->callback((Fl_Callback*)cb_btnEnableBusyChannel);
@ -12133,7 +12179,7 @@ s require program restart."));
else o->value(false);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnEnableBusyChannel
{ Fl_Input2* o = txtKiss_ip_out_port_no = new Fl_Input2(333, 193, 55, 25, _("O"));
{ Fl_Input2* o = txtKiss_ip_out_port_no = new Fl_Input2(425, 195, 55, 25, _("O"));
txtKiss_ip_out_port_no->tooltip(_("Output port number when same IP address used"));
txtKiss_ip_out_port_no->box(FL_DOWN_BOX);
txtKiss_ip_out_port_no->color(FL_BACKGROUND2_COLOR);
@ -12149,7 +12195,7 @@ s require program restart."));
o->value(progdefaults.kiss_out_port.c_str());
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Input2* txtKiss_ip_out_port_no
{ Fl_Check_Button* o = btnEnable_dual_port = new Fl_Check_Button(485, 169, 90, 16, _("Dual Port"));
{ Fl_Check_Button* o = btnEnable_dual_port = new Fl_Check_Button(360, 145, 55, 16, _("DP"));
btnEnable_dual_port->tooltip(_("Enable when both programs are using the same IP address"));
btnEnable_dual_port->down_box(FL_DOWN_BOX);
btnEnable_dual_port->callback((Fl_Callback*)cb_btnEnable_dual_port);
@ -12161,23 +12207,23 @@ s require program restart."));
btn_restart_kiss->hide();
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Button* btn_restart_kiss
{ Fl_Button* o = btn_connect_kiss_io = new Fl_Button(504, 193, 82, 25, _("Connect"));
{ Fl_Button* o = btn_connect_kiss_io = new Fl_Button(504, 165, 82, 25, _("Start"));
btn_connect_kiss_io->tooltip(_("Return KISS TCP IO connection to a Listening state"));
btn_connect_kiss_io->callback((Fl_Callback*)cb_btn_connect_kiss_io);
(progStatus.ip_lock || !progStatus.kiss_tcp_io) ? o->deactivate() : o->activate();
(progStatus.ip_lock || !progdefaults.kiss_tcp_io) ? o->deactivate() : o->activate();
} // Fl_Button* btn_connect_kiss_io
{ Fl_Check_Button* o = btnKissTCPIO = new Fl_Check_Button(425, 145, 60, 15, _("TCP"));
{ Fl_Check_Button* o = btnKissTCPIO = new Fl_Check_Button(420, 145, 60, 15, _("TCP"));
btnKissTCPIO->tooltip(_("Check to enable TCP/IP IO Connection"));
btnKissTCPIO->down_box(FL_DOWN_BOX);
btnKissTCPIO->callback((Fl_Callback*)cb_btnKissTCPIO);
if(progStatus.kiss_tcp_io) o->value(true); else o->value(false);
if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnKissTCPIO
{ Fl_Check_Button* o = btnKissUDPIO = new Fl_Check_Button(425, 170, 60, 15, _("UDP"));
{ Fl_Check_Button* o = btnKissUDPIO = new Fl_Check_Button(295, 145, 60, 15, _("UDP"));
btnKissUDPIO->tooltip(_("Check to enable UDP/IP IO"));
btnKissUDPIO->down_box(FL_DOWN_BOX);
btnKissUDPIO->callback((Fl_Callback*)cb_btnKissUDPIO);
if(progStatus.kiss_tcp_io) o->value(true); else o->value(false);
if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnKissUDPIO
{ Fl_Check_Button* o = btnKissTCPListen = new Fl_Check_Button(485, 145, 95, 15, _("Listen / Bind"));
@ -12187,6 +12233,20 @@ s require program restart."));
if(progStatus.kiss_tcp_listen) o->value(true); else o->value(false);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnKissTCPListen
{ Fl_Check_Button* o = btnEnable_7bit_modem_inhibit = new Fl_Check_Button(295, 169, 140, 16, _("Inhibit 7bit Modem"));
btnEnable_7bit_modem_inhibit->tooltip(_("Inhibit 7 bit modem change notice on user or RSID reception"));
btnEnable_7bit_modem_inhibit->down_box(FL_DOWN_BOX);
btnEnable_7bit_modem_inhibit->callback((Fl_Callback*)cb_btnEnable_7bit_modem_inhibit);
if(progdefaults.kiss_io_modem_change_inhibit) o->value(true); else o->value(false);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnEnable_7bit_modem_inhibit
{ Fl_Check_Button* o = btnEnable_auto_connect = new Fl_Check_Button(445, 169, 45, 16, _("AC"));
btnEnable_auto_connect->tooltip(_("Connect to host program on FLDIGI start up"));
btnEnable_auto_connect->down_box(FL_DOWN_BOX);
btnEnable_auto_connect->callback((Fl_Callback*)cb_btnEnable_auto_connect);
if(progdefaults.tcp_udp_auto_connect) o->value(true); else o->value(false);
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Check_Button* btnEnable_auto_connect
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(6, 225, 588, 35, _("ARQ"));
@ -12209,7 +12269,7 @@ e. localhost"));
o->value(progdefaults.arq_address.c_str());
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Input2* txtArq_ip_address
{ Fl_Input2* o = txtArq_ip_port_no = new Fl_Input2(333, 229, 55, 25, _("Port"));
{ Fl_Input2* o = txtArq_ip_port_no = new Fl_Input2(330, 229, 55, 25, _("Port"));
txtArq_ip_port_no->tooltip(_("IP Address Port Number"));
txtArq_ip_port_no->box(FL_DOWN_BOX);
txtArq_ip_port_no->color(FL_BACKGROUND2_COLOR);
@ -12265,7 +12325,7 @@ e. localhost"));
o->value(progdefaults.xmlrpc_address.c_str());
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Input2* txtXmlrpc_ip_address
{ Fl_Input2* o = txtXmlrpc_ip_port_no = new Fl_Input2(333, 270, 55, 25, _("Port"));
{ Fl_Input2* o = txtXmlrpc_ip_port_no = new Fl_Input2(330, 270, 55, 25, _("Port"));
txtXmlrpc_ip_port_no->tooltip(_("IP Address Port Number"));
txtXmlrpc_ip_port_no->box(FL_DOWN_BOX);
txtXmlrpc_ip_port_no->color(FL_BACKGROUND2_COLOR);
@ -12313,7 +12373,7 @@ i.e. localhost"));
o->value(progdefaults.flrig_ip_address.c_str());
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Input2* txt_flrig_ip_address
{ Fl_Input2* o = txt_flrig_ip_port = new Fl_Input2(333, 309, 55, 25, _("Port"));
{ Fl_Input2* o = txt_flrig_ip_port = new Fl_Input2(330, 309, 55, 25, _("Port"));
txt_flrig_ip_port->tooltip(_("IP Address Port Number"));
txt_flrig_ip_port->box(FL_DOWN_BOX);
txt_flrig_ip_port->color(FL_BACKGROUND2_COLOR);
@ -12346,7 +12406,7 @@ i.e. localhost"));
o->value(progdefaults.xmllog_address.c_str());
progStatus.ip_lock ? o->deactivate() : o->activate();
} // Fl_Input* txt_fllog_ip_address
{ Fl_Input* o = txt_fllog_ip_port = new Fl_Input(333, 345, 55, 25, _("Port"));
{ Fl_Input* o = txt_fllog_ip_port = new Fl_Input(330, 345, 55, 25, _("Port"));
txt_fllog_ip_port->tooltip(_("IP Address Port Number"));
txt_fllog_ip_port->callback((Fl_Callback*)cb_txt_fllog_ip_port);
txt_fllog_ip_port->align(Fl_Align(FL_ALIGN_RIGHT));

Wyświetl plik

@ -359,7 +359,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {}
Fl_Window {} {
label {Fldigi configuration} open
xywh {1076 134 600 415} type Double color 45 selection_color 51 labelsize 18 align 80 non_modal visible
xywh {893 186 600 415} type Double color 45 selection_color 51 labelsize 18 align 80 non_modal visible
} {
Fl_Tabs tabsConfigure {open
xywh {0 0 600 390} color 50 selection_color 50
@ -1329,7 +1329,7 @@ progdefaults.changed = true;}
label {Disable dockable macro bar}
callback {progdefaults.dockable_macros = !o->value();
progdefaults.changed = true;}
tooltip {Allow minimized main dialog height
tooltip {Allow minimized main dialog height
411 pixels with WF height = 100} xywh {152 353 296 20} down_box DOWN_BOX
code0 {o->value(!progdefaults.dockable_macros);}
}
@ -2584,7 +2584,7 @@ UI_select();}
} {
Fl_Group {} {
label Display open
xywh {0 50 600 335} hide
xywh {0 50 600 335}
} {
Fl_Group {} {
label {Colors and cursors} open
@ -2825,7 +2825,7 @@ progdefaults.changed = true;}
}
Fl_Group {} {
label {FFT Processing} open
xywh {0 50 600 335}
xywh {0 50 600 335} hide
} {
Fl_Group {} {open
xywh {55 71 490 135} box ENGRAVED_FRAME
@ -2970,7 +2970,7 @@ behaves inside the waterfall} xywh {65 207 150 22} box DOWN_BOX color 7 align 8
} {
Fl_Group tabCW {
label CW
xywh {0 50 600 335} hide
xywh {0 50 600 335}
} {
Fl_Tabs tabsCW {open
xywh {0 50 600 335} selection_color 50
@ -4285,7 +4285,7 @@ progdefaults.changed = true;}
} {
Fl_Group {} {
label Tx open
xywh {0 75 600 310} align 5 hide
xywh {0 75 600 310} align 5
} {
Fl_Group selShift {
label {Carrier shift}
@ -4408,7 +4408,7 @@ if (o->value()) {
}
Fl_Group {} {
label Rx open
xywh {0 75 600 310} align 5
xywh {0 75 600 310} align 5 hide
} {
Fl_Group {} {
label Receive open
@ -4634,14 +4634,14 @@ progdefaults.changed = true;}
}
Fl_Group tabOther {
label Other open
xywh {0 50 600 335}
xywh {0 50 600 335} hide
} {
Fl_Tabs tabsOther {open
xywh {0 50 600 335}
} {
Fl_Group tabNavtex {
label Nav
xywh {0 75 600 310} hide
xywh {0 75 600 310}
} {
Fl_Check_Button btnNvtxAdifLog {
label {Log Navtex messages to Adif file}
@ -4732,7 +4732,7 @@ progdefaults.changed = true;}
}
Fl_Group tabDFTscan {
label Scan
xywh {0 75 600 310}
xywh {0 75 600 310} hide
} {
Fl_Counter cnt_dft_scans {
label {\# scans}
@ -4772,7 +4772,7 @@ progdefaults.changed = true;}
} {
Fl_Group {} {
label RigCAT
tooltip {Rig Control using xml spec file} xywh {0 50 600 335} hide
tooltip {Rig Control using xml spec file} xywh {0 50 600 335}
} {
Fl_Check_Button chkUSERIGCAT {
label {Use RigCAT}
@ -5414,7 +5414,7 @@ when both in same macro definition} xywh {210 239 90 21} type Simple align 8 min
}
Fl_Group tabFLRIG {
label flrig open
xywh {0 50 600 335}
xywh {0 50 600 335} hide
} {
Fl_Output {} {
tooltip {" "} xywh {75 77 465 58} type Multiline box BORDER_BOX color 50 align 0
@ -5735,7 +5735,7 @@ progdefaults.changed = true;} open
} {
Fl_Group tabRsID {
label RsID open
xywh {0 50 600 335} hide
xywh {0 50 600 335}
} {
Fl_Group {} {
label {Reed-Solomon ID (Rx)} open
@ -5948,7 +5948,7 @@ progdefaults.changed = true;}
}
Fl_Group tabCwID {
label CW
xywh {0 50 600 335}
xywh {0 50 600 335} hide
} {
Fl_Group sld {
label {CW Postamble ID} open
@ -6563,7 +6563,7 @@ if (progdefaults.kml_enabled) {
} {
Fl_Group {} {
label {Call Lookup} open
xywh {0 50 600 335} hide
xywh {0 50 600 335}
} {
Fl_Group {} {
label {Web Browser lookup} open
@ -6736,7 +6736,7 @@ progdefaults.changed= true;}
}
Fl_Group {} {
label eQSL open
xywh {0 50 600 335}
xywh {0 50 600 335} hide
} {
Fl_Input inpEQSL_id {
label {User ID}
@ -7049,35 +7049,34 @@ kiss_io_set_button_state(0);}
Fl_Check_Button btnEnable_arq {
label {Enable ARQ}
callback {if(o->value()) {
progdefaults.changed = true;
progdefaults.data_io_enabled = ARQ_IO;
data_io_enabled = ARQ_IO;
enable_disable_kpsql();
enable_arq();
}
progdefaults.changed = true;}
tooltip {Used For PSKMail and FLDIGI Suite of Programs} xywh {96 112 115 20} type Radio down_box DOWN_BOX
code0 {if(progdefaults.data_io_enabled == ARQ_IO) o->value(true);}
code0 {if(progStatus.data_io_enabled == ARQ_IO) o->value(true);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Check_Button btnEnable_kiss {
label {Enable KISS}
callback {if(o->value()) {
progdefaults.data_io_enabled = KISS_IO;
data_io_enabled = KISS_IO;
enable_disable_kpsql();
enable_kiss();
}
progdefaults.changed = true;}
tooltip {Used for BPQ32} xywh {221 112 115 20} type Radio down_box DOWN_BOX
code0 {if(progdefaults.data_io_enabled == KISS_IO) o->value(true);}
code0 {if(progStatus.data_io_enabled == KISS_IO) o->value(true);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Check_Button btnEnable_ax25_decode {
label {AX25 Decode}
callback {if(o->value())
callback {if(o->value()) {
progStatus.ax25_decode_enabled = true;
progdefaults.ax25_decode_enabled = true;
else
}
else {
progStatus.ax25_decode_enabled = false;
progdefaults.ax25_decode_enabled = false;
}
progdefaults.changed = true;}
tooltip {Decode AX25 Packets into human readable form} xywh {346 112 115 20} down_box DOWN_BOX
@ -7087,13 +7086,15 @@ progdefaults.changed = true;}
Fl_Check_Button btnEnable_csma {
label {Enable CSMA}
callback {if(o->value()) {
progStatus.csma_enabled = true;
progdefaults.csma_enabled = true;
} else {
progStatus.csma_enabled = false;
progdefaults.csma_enabled = false;
}
progdefaults.changed = true;}
tooltip {Used for BPQ32} xywh {471 112 115 20} down_box DOWN_BOX
code0 {if(progdefaults.csma_enabled) o->value(true);}
code0 {if(progStatus.csma_enabled) o->value(true);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Box {} {
@ -7113,16 +7114,17 @@ KISS/ARQ/XML Addr/Port changes require program restart.}
callback {set_ip_to_default(KISS_IO);
progdefaults.changed = true;}
tooltip {Returns IP Address and port
number to the default value.} xywh {425 193 73 25}
number to the default value.} xywh {505 195 80 25}
code0 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Input txtKiss_ip_address {
label Addr
callback {progdefaults.kiss_address = o->value();
callback {progStatus.kiss_address = o->value();
progdefaults.kiss_address = o->value();
progdefaults.changed = true;}
tooltip {IP Address for KISS interface
IP Address format: nnn.nnn.nnn.nnn
or name: i.e. localhost} xywh {56 193 230 25} align 8 when 1
or name: i.e. localhost} xywh {55 195 230 25} align 8 when 1
code0 {txtKiss_ip_address->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.kiss_address.c_str());}
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
@ -7130,8 +7132,9 @@ or name: i.e. localhost} xywh {56 193 230 25} align 8 when 1
}
Fl_Counter cntKPSQLAttenuation {
label {KPSQL Attenuate}
callback {progdefaults.kpsql_attenuation = (int) o->value();
update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
callback {progStatus.kpsql_attenuation = (int) o->value();
progdefaults.kpsql_attenuation = (int) o->value();
update_kpsql_fractional_gain(progStatus.kpsql_attenuation);
progdefaults.changed = true;}
tooltip Attenuation xywh {56 169 110 20} align 8 minimum 1 maximum 999 step 1 value 1
code0 {o->value(progdefaults.kpsql_attenuation);}
@ -7141,9 +7144,10 @@ progdefaults.changed = true;}
}
Fl_Input txtKiss_ip_io_port_no {
label {I/O}
callback {progdefaults.kiss_io_port = o->value();
callback {progStatus.kiss_io_port = o->value();
progdefaults.kiss_io_port = o->value();
progdefaults.changed = true;}
tooltip {IP Address Port Number} xywh {333 164 55 25} align 8 when 1
tooltip {IP Address Port Number} xywh {330 195 55 25} align 8 when 1
code0 {txtKiss_ip_io_port_no->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.kiss_io_port.c_str());}
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
@ -7151,7 +7155,8 @@ progdefaults.changed = true;}
}
Fl_Counter cntBusyChannelSeconds {
label Continue
callback {progdefaults.busyChannelSeconds = (int) o->value();
callback {progStatus.busyChannelSeconds = (int) o->value();
progdefaults.busyChannelSeconds = (int) o->value();
progdefaults.changed = true;}
tooltip {Continue after in seconds} xywh {56 145 110 20} align 8 minimum 1 maximum 999 step 1 value 1
code0 {o->value(progdefaults.busyChannelSeconds);}
@ -7160,35 +7165,44 @@ progdefaults.changed = true;}
}
Fl_Check_Button btnEnableBusyChannel {
label Busy
callback {if(o->value())
callback {if(o->value()) {
progStatus.enableBusyChannel = true;
progdefaults.enableBusyChannel = true;
else
}
else {
progStatus.enableBusyChannel = false;
progdefaults.enableBusyChannel = false;
}
progdefaults.changed = true;}
tooltip {Enable Busy Channel} xywh {331 145 65 15} down_box DOWN_BOX
tooltip {Enable Busy Channel} xywh {235 145 65 15} down_box DOWN_BOX
code0 {if(progdefaults.enableBusyChannel) o->value(true);}
code1 {else o->value(false);}
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Input txtKiss_ip_out_port_no {
label O
callback {progdefaults.kiss_out_port = o->value();
callback {progStatus.kiss_out_port = o->value();
progdefaults.kiss_out_port = o->value();
progdefaults.changed = true;}
tooltip {Output port number when same IP address used} xywh {333 193 55 25} align 8 when 1
tooltip {Output port number when same IP address used} xywh {425 195 55 25} align 8 when 1
code0 {txtKiss_ip_out_port_no->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.kiss_out_port.c_str());}
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
class Fl_Input2
}
Fl_Check_Button btnEnable_dual_port {
label {Dual Port}
callback {if(o->value())
label DP
callback {if(o->value()) {
progStatus.kiss_dual_port_enabled = true;
progdefaults.kiss_dual_port_enabled = true;
else
}
else {
progStatus.kiss_dual_port_enabled = false;
progdefaults.kiss_dual_port_enabled = false;
}
progdefaults.changed = true;}
tooltip {Enable when both programs are using the same IP address} xywh {485 169 90 16} down_box DOWN_BOX
tooltip {Enable when both programs are using the same IP address} xywh {360 145 55 16} down_box DOWN_BOX
code0 {if(progdefaults.kiss_dual_port_enabled) o->value(true); else o->value(false);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
@ -7199,53 +7213,87 @@ progdefaults.changed = true;}
code0 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Button btn_connect_kiss_io {
label Connect
callback {connect_to_kiss_io();}
tooltip {Return KISS TCP IO connection to a Listening state} xywh {504 193 82 25}
code0 {(progStatus.ip_lock || !progStatus.kiss_tcp_io) ? o->deactivate() : o->activate();}
label Start
callback {connect_to_kiss_io(true);}
tooltip {Return KISS TCP IO connection to a Listening state} xywh {504 165 82 25}
code0 {(progStatus.ip_lock || !progdefaults.kiss_tcp_io) ? o->deactivate() : o->activate();}
}
Fl_Check_Button btnKissTCPIO {
label TCP
callback {if(o->value()) {
progdefaults.kiss_tcp_io = true;
progStatus.kiss_tcp_io = true;
progdefaults.kiss_tcp_io = true;
} else {
progStatus.kiss_tcp_io = false;
progdefaults.kiss_tcp_io = false;
}
kiss_io_set_button_state(0);}
tooltip {Check to enable TCP/IP IO Connection} xywh {425 145 60 15} down_box DOWN_BOX
code0 {if(progStatus.kiss_tcp_io) o->value(true); else o->value(false);}
kiss_io_set_button_state(0);
progdefaults.changed = true;}
tooltip {Check to enable TCP/IP IO Connection} xywh {420 145 60 15} down_box DOWN_BOX
code0 {if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Check_Button btnKissUDPIO {
label UDP
callback {if(o->value()) {
progdefaults.kiss_tcp_io = false;
progStatus.kiss_tcp_io = false;
progdefaults.kiss_tcp_io = false;
} else {
progStatus.kiss_tcp_io = true;
progdefaults.kiss_tcp_io = true;
}
kiss_io_set_button_state(0);}
tooltip {Check to enable UDP/IP IO} xywh {425 170 60 15} down_box DOWN_BOX
code0 {if(progStatus.kiss_tcp_io) o->value(true); else o->value(false);}
kiss_io_set_button_state(0);
progdefaults.changed = true;}
tooltip {Check to enable UDP/IP IO} xywh {295 145 60 15} down_box DOWN_BOX
code0 {if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Check_Button btnKissTCPListen {
label {Listen / Bind}
callback {if(o->value()) {
progdefaults.kiss_tcp_listen = true;
progStatus.kiss_tcp_listen = true;
progdefaults.kiss_tcp_listen = true;
} else {
progStatus.kiss_tcp_listen = false;
progdefaults.kiss_tcp_listen = false;
}}
}
progdefaults.changed = true;}
tooltip {Monitor for TCP connection} xywh {485 145 95 15} down_box DOWN_BOX
code0 {if(progStatus.kiss_tcp_listen) o->value(true); else o->value(false);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Check_Button btnEnable_7bit_modem_inhibit {
label {Inhibit 7bit Modem}
callback {if(o->value()) {
progStatus.kiss_io_modem_change_inhibit = true;
progdefaults.kiss_io_modem_change_inhibit = true;
}
else {
progStatus.kiss_io_modem_change_inhibit = false;
progdefaults.kiss_io_modem_change_inhibit = false;
}
progdefaults.changed = true;}
tooltip {Inhibit 7 bit modem change notice on user or RSID reception} xywh {295 169 140 16} down_box DOWN_BOX
code0 {if(progdefaults.kiss_io_modem_change_inhibit) o->value(true); else o->value(false);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
Fl_Check_Button btnEnable_auto_connect {
label AC
callback {if(o->value()) {
progdefaults.tcp_udp_auto_connect = true;
}
else {
progdefaults.tcp_udp_auto_connect = false;
}
progdefaults.changed = true;}
tooltip {Connect to host program on FLDIGI start up} xywh {445 169 45 16} down_box DOWN_BOX
code0 {if(progdefaults.tcp_udp_auto_connect) o->value(true); else o->value(false);}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}
}
Fl_Group {} {
label ARQ open
@ -7267,7 +7315,7 @@ or name: i.e. localhost} xywh {56 229 230 25} align 8 when 1
label Port
callback {progdefaults.arq_port = o->value();
progdefaults.changed = true;}
tooltip {IP Address Port Number} xywh {333 229 55 25} align 8 when 1
tooltip {IP Address Port Number} xywh {330 229 55 25} align 8 when 1
code0 {o->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.arq_port.c_str());}
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
@ -7319,7 +7367,7 @@ or name: i.e. localhost} xywh {56 270 230 25} align 8 when 1
label Port
callback {progdefaults.xmlrpc_port = o->value();
progdefaults.changed = true;}
tooltip {IP Address Port Number} xywh {333 270 55 25} align 8 when 1
tooltip {IP Address Port Number} xywh {330 270 55 25} align 8 when 1
code0 {o->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.xmlrpc_port.c_str());}
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
@ -7360,7 +7408,7 @@ or name: i.e. localhost} xywh {56 309 230 25} align 8 when 1
label Port
callback {progdefaults.flrig_ip_port = o->value();
progdefaults.changed = true;}
tooltip {IP Address Port Number} xywh {333 309 55 25} align 8 when 1
tooltip {IP Address Port Number} xywh {330 309 55 25} align 8 when 1
code0 {o->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.flrig_ip_port.c_str());}
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
@ -7390,7 +7438,7 @@ or name: i.e. localhost} xywh {56 345 230 25} align 8
Fl_Input txt_fllog_ip_port {
label Port
callback {progdefaults.xmllog_port = o->value();}
tooltip {IP Address Port Number} xywh {333 345 55 25} align 8
tooltip {IP Address Port Number} xywh {330 345 55 25} align 8
code0 {o->value(progdefaults.xmllog_port.c_str());}
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
}

Wyświetl plik

@ -1450,12 +1450,12 @@ void init_modem(trx_mode mode, int freq)
LOG_INFO("Invaild Modem for KISS I/O (%s)", mode_info[mode].sname);
if(!fl_choice2(_("Switch to ARQ I/O"), _("Yes"), _("No"), NULL)) {
btnEnable_kiss->value(false);
btnEnable_kiss->do_callback();
int _yes = false;
if(!progdefaults.kiss_io_modem_change_inhibit)
_yes = fl_choice2(_("Switch to ARQ I/O"), _("No"), _("Yes"), NULL);
btnEnable_arq->value(true);
btnEnable_arq->do_callback();
if(_yes) {
enable_arq();
} else {
std::string modem_name;
modem_name.assign(mode_info[current_mode].sname);
@ -2737,7 +2737,7 @@ void cb_mnuPicViewer(Fl_Menu_ *, void *) {
void cb_sldrSquelch(Fl_Slider* o, void*) {
if(progStatus.pwrsqlonoff) {
if(progStatus.kpsql_enabled) {
progStatus.sldrPwrSquelchValue = o->value();
} else {
progStatus.sldrSquelchValue = o->value();
@ -3238,18 +3238,23 @@ void cbSQL(Fl_Widget *w, void *vi)
void cbPwrSQL(Fl_Widget *w, void *vi)
{
if(data_io_enabled == KISS_IO) {
if(progStatus.data_io_enabled == KISS_IO) {
FL_LOCK_D();
Fl_Button *b = (Fl_Button *)w;
b->activate();
int v = b->value();
if(!v)
if(!v) {
sldrSquelch->value(progStatus.sldrSquelchValue);
else
progStatus.kpsql_enabled = false;
progdefaults.kpsql_enabled = false;
b->clear();
} else {
sldrSquelch->value(progStatus.sldrPwrSquelchValue);
progStatus.kpsql_enabled = true;
progdefaults.kpsql_enabled = true;
b->set();
}
FL_UNLOCK_D();
progStatus.pwrsqlonoff = v ? true : false;
} else {
FL_LOCK_D();
Fl_Button *b = (Fl_Button *)w;
@ -7193,8 +7198,8 @@ void create_fl_digi_main_primary() {
btnSQL->tooltip(_("Squelch"));
btnPSQL->selection_color(progdefaults.Sql1Color);
btnPSQL->value(progdefaults.kpsql_enabled);
btnPSQL->callback(cbPwrSQL, 0);
btnPSQL->value(1);
btnPSQL->tooltip(_("Monitor KISS Pwr Squelch"));
if(progdefaults.data_io_enabled == KISS_IO)
@ -7837,7 +7842,7 @@ void create_fl_digi_main_WF_only() {
btnSQL->tooltip(_("Squelch"));
btnPSQL->selection_color(progdefaults.Sql1Color);
btnPSQL->callback(cbPwrSQL, 0);
btnPSQL->value(1);
btnPSQL->value(progdefaults.kpsql_enabled);
btnPSQL->tooltip(_("Monitor KISS Pwr Squelch"));
if(progdefaults.data_io_enabled == KISS_IO)
@ -7948,7 +7953,7 @@ static void callback_set_metric(double metric)
if (active_modem->get_mode() == MODE_IFKP)
ifkp_s2n_progress->value(metric);
if(progStatus.pwrsqlonoff) {
if(progStatus.kpsql_enabled) {
if ((metric >= progStatus.sldrPwrSquelchValue) || inhibit_tx_seconds)
btnPSQL->selection_color(progdefaults.Sql2Color);
else
@ -9127,21 +9132,33 @@ void notch_off()
void enable_kiss(void)
{
if(btnEnable_arq->value()) {
btnEnable_arq->value(false);
}
progdefaults.changed = true;
progdefaults.data_io_enabled = KISS_IO;
progStatus.data_io_enabled = KISS_IO;
data_io_enabled = KISS_IO;
btnEnable_kiss->value(true);
btnEnable_arq->value(false);
enable_disable_kpsql();
}
void enable_arq(void)
{
if(btnEnable_kiss->value()) {
btnEnable_kiss->value(false);
}
progdefaults.changed = true;
progdefaults.data_io_enabled = ARQ_IO;
progStatus.data_io_enabled = ARQ_IO;
data_io_enabled = ARQ_IO;
btnEnable_arq->value(true);
btnEnable_kiss->value(false);
enable_disable_kpsql();
}
@ -9150,12 +9167,16 @@ void enable_disable_kpsql(void)
if(progdefaults.data_io_enabled == KISS_IO) {
check_kiss_modem();
btnPSQL->activate();
if(progStatus.kpsql_enabled || progdefaults.kpsql_enabled) {
btnPSQL->value(true);
btnPSQL->do_callback();
}
} else {
sldrSquelch->value(progStatus.sldrSquelchValue);
progStatus.pwrsqlonoff = false;
btnPSQL->value(0);
btnPSQL->value(false);
btnPSQL->deactivate();
}
progStatus.data_io_enabled = progdefaults.data_io_enabled;
}
@ -9175,6 +9196,8 @@ void disable_config_p2p_io_widgets(void)
cntBusyChannelSeconds->deactivate();
btnDefault_kiss_ip->deactivate();
btn_restart_kiss->deactivate();
btnEnable_7bit_modem_inhibit->deactivate();
btnEnable_auto_connect->deactivate();
txtArq_ip_address->deactivate();
txtArq_ip_port_no->deactivate();
@ -9213,6 +9236,8 @@ void enable_config_p2p_io_widgets(void)
cntBusyChannelSeconds->activate();
btnDefault_kiss_ip->activate();
btn_restart_kiss->activate();
btnEnable_7bit_modem_inhibit->activate();
btnEnable_auto_connect->activate();
txtArq_ip_address->activate();
txtArq_ip_port_no->activate();

Wyświetl plik

@ -57,7 +57,7 @@ const struct mode_info_t mode_info[NUM_MODES] = {
{ MODE_DOMINOEX5, &dominoex5_modem, "DOMEX5", "DominoEX 5", "DOMINOEX5", "DOMINO", "DM 5", DISABLED_IO },
{ MODE_DOMINOEX8, &dominoex8_modem, "DOMEX8", "DominoEX 8", "DOMINOEX8", "DOMINO", "DM 8", DISABLED_IO },
{ MODE_DOMINOEX11, &dominoex11_modem, "DOMX11", "DominoEX 11", "DOMINOEX11", "DOMINO", "DM11", DISABLED_IO },
{ MODE_DOMINOEX16, &dominoex16_modem, "DOMX16", "DominoEX 16", "DOMINOEX16", "DOMINO", "DM16", DISABLED_IO },
{ MODE_DOMINOEX16, &dominoex16_modem, "DOMX16", "DominoEX 16", "DOMINOEX16", "DOMINO", "DM16", ARQ_IO | KISS_IO },
{ MODE_DOMINOEX22, &dominoex22_modem, "DOMX22", "DominoEX 22", "DOMINOEX22", "DOMINO", "DM22", ARQ_IO | KISS_IO },
{ MODE_DOMINOEX44, &dominoex44_modem, "DOMX44", "DominoEX 44", "DOMINOEX44", "DOMINO", "DM44", ARQ_IO | KISS_IO },
{ MODE_DOMINOEX88, &dominoex88_modem, "DOMX88", "DominoEX 88", "DOMINOEX88", "DOMINO", "DM88", ARQ_IO | KISS_IO },
@ -71,13 +71,13 @@ const struct mode_info_t mode_info[NUM_MODES] = {
{ MODE_HELL80, &feld_80modem, "HELL80", "Hell 80", "", "HELL80", "HL80", DISABLED_IO },
{ MODE_MFSK8, &mfsk8_modem, "MFSK8", "MFSK-8", "MFSK8", "MFSK8", "MK 8", DISABLED_IO },
{ MODE_MFSK16, &mfsk16_modem, "MFSK16", "MFSK-16", "MFSK16", "MFSK16", "MK16", ARQ_IO },
{ MODE_MFSK16, &mfsk16_modem, "MFSK16", "MFSK-16", "MFSK16", "MFSK16", "MK16", ARQ_IO | KISS_IO },
{ MODE_MFSK32, &mfsk32_modem, "MFSK32", "MFSK-32", "MFSK32", "MFSK32", "MK32", ARQ_IO | KISS_IO },
{ MODE_MFSK4, &mfsk4_modem, "MFSK4", "MFSK-4", "MFSK4", "MFSK4", "MK 4", DISABLED_IO },
{ MODE_MFSK11, &mfsk11_modem, "MFSK11", "MFSK-11", "MFSK11", "MFSK11", "MK11", DISABLED_IO },
{ MODE_MFSK22, &mfsk22_modem, "MFSK22", "MFSK-22", "MFSK22", "MFSK22", "MK22", DISABLED_IO },
{ MODE_MFSK31, &mfsk31_modem, "MFSK31", "MFSK-31", "MFSK31", "MFSK31", "MK31", ARQ_IO },
{ MODE_MFSK31, &mfsk31_modem, "MFSK31", "MFSK-31", "MFSK31", "MFSK31", "MK31", ARQ_IO | KISS_IO },
{ MODE_MFSK64, &mfsk64_modem, "MFSK64", "MFSK-64", "MFSK64", "MFSK64", "MK64", ARQ_IO | KISS_IO },
{ MODE_MFSK128, &mfsk128_modem, "MFSK128", "MFSK-128", "MFSK128", "MFSK128", "MK128", ARQ_IO | KISS_IO },
{ MODE_MFSK64L, &mfsk64l_modem, "MFSK64L", "MFSK-64L", "MFSK64L", "MFSK64L", "MK64L", ARQ_IO | KISS_IO },
@ -204,9 +204,9 @@ const struct mode_info_t mode_info[NUM_MODES] = {
std::ostream& operator<<(std::ostream& s, const qrg_mode_t& m)
{
return s << m.rfcarrier << ' '
<< m.rmode << ' '
<< m.carrier << ' '
return s << m.rfcarrier << ' '
<< m.rmode << ' '
<< m.carrier << ' '
<< mode_info[m.mode].sname << ' '
<< m.usage;
}

Wyświetl plik

@ -730,6 +730,8 @@ extern Fl_Button *btn_connect_kiss_io;
extern Fl_Check_Button *btnKissTCPIO;
extern Fl_Check_Button *btnKissUDPIO;
extern Fl_Check_Button *btnKissTCPListen;
extern Fl_Check_Button *btnEnable_7bit_modem_inhibit;
extern Fl_Check_Button *btnEnable_auto_connect;
extern Fl_Input2 *txtArq_ip_address;
extern Fl_Input2 *txtArq_ip_port_no;
extern Fl_Button *btnDefault_arq_ip;

Wyświetl plik

@ -1680,17 +1680,26 @@
"Number of seconds to wait before transmit resume", \
3) \
ELEM_(int, kpsql_attenuation, "KPSQL_ATTENUATION", \
"KPSQL Attenuation in 1/n of 1:1 Gain", \
2) \
"KPSQL Attenuation in 1/n of 1:1 Gain", \
2) \
ELEM_(bool, csma_enabled, "CSMA_ENABLED", \
"Use CSMA on heavy traffic channels (AX25)", \
true) \
ELEM_(bool, kiss_tcp_io, "KISS_TCP_IO", \
"Connect kiss io via TCP/IP vise UDP/IP", \
false) \
ELEM_(bool, kiss_tcp_io, "KISS_TCP_IO", \
"Connect kiss io via TCP/IP vise UDP/IP", \
false) \
ELEM_(bool, kiss_tcp_listen, "KISS_TCP_LISTEN", \
"Listen for TCP connection (Server mode)", \
false) \
ELEM_(bool, kpsql_enabled, "KPSQL_ENABLED", \
"Enable/Disable KPSQL", \
false) \
ELEM_(bool, tcp_udp_auto_connect, "TCP_UDP_AUTO_CONNECT", \
"Make Connect Attemp on Fldigi Start", \
false) \
ELEM_(bool, kiss_io_modem_change_inhibit, "KISS_IO_MODEM_CHANGE_INHIBIT", \
"Enable/Disable Modem Change to a non 8 bit when KISS IO is in use", \
false) \
ELEM_(std::string, flrig_ip_address, "FLRIG_IP_ADDRESS", \
"IP Address of flrig server", \
DEFAULT_FLRIG_IP_ADDRESS) \

Wyświetl plik

@ -29,8 +29,6 @@
#include "gettext.h"
#define IO_CONNECT_STR _("Connect")
#define IO_DISCONNECT_STR _("Disc")
#define IO_START_STR _("Start")
#define IO_STOP_STR _("Stop")
@ -62,7 +60,7 @@ enum {DISABLED_IO, ARQ_IO, KISS_IO, XMLRPC_IO, FLRIG_IO, FLLOG_IO};
// This variable indepent of progdefaults.data_io_enabled
// and progStatus.data_io_enabled
// Only on start de we assign this variable with progStatus.data_io_enabled.
// Only on start do we assign this variable with progStatus.data_io_enabled.
// This is one way assignment as we dont want to save all of the available states
// this variable will have.
extern int data_io_enabled; // Located in kiss_io.cxx
@ -80,6 +78,9 @@ extern void WriteKISS(const char data);
extern void WriteKISS(const char *data);
extern void WriteKISS(const char *data, size_t size);
extern void WriteKISS(std::string data);
extern bool kiss_thread_running(void);
extern bool kiss_auto_connect(void);
extern void check_kiss_modem(void);
extern int kiss_get_char(void);
@ -91,7 +92,7 @@ extern bool bcast_rsid_kiss_frame(int new_wf_pos, int new_mode, int old_wf_pos,
extern void bcast_trxc_kiss_frame(void);
extern void update_kpsql_fractional_gain(int value);
extern void kiss_io_set_button_state(void *);
extern void connect_to_kiss_io(void);
extern void connect_to_kiss_io(bool);
// ARQ implementation
extern void arq_init(void);

Wyświetl plik

@ -29,6 +29,9 @@
#define _FILTER_H
#include "complex.h"
#ifndef M_PI
#define M_PI (3.1415926535897932385)
#endif
//=====================================================================
// FIR filters

Wyświetl plik

@ -55,6 +55,9 @@
#define KISS_BUFFER_FACTOR 2
#define HDLC_BUFFER_FACTOR 3
#define KISS_CONNECT_RETRY_COUNT 10
#define KISS_RETRY_WAIT_TIME 1000
#define MAX_TEMP_BUFFER_SIZE 32000
#define TX_BUFFER_TIMEOUT (60 * 10) // Ten minute timeout
@ -147,6 +150,8 @@ static void set_sql_on_off(char *);
static void set_trxs_bc_mode(char *);
static void set_txbe_bc_mode(char *);
static void set_wf_cursor_pos(char *);
static void set_reply_tx_lock(char *);
static void TransmitCSMA();
static void WriteToHostBuffered(const char *data, size_t size);
//static void WriteToHostBuffered(const char *data);
@ -167,6 +172,8 @@ void ReadFromHostSocket(void);
//static void set_busy_state_bc_mode(char * arg);
static void reply_busy_state(char * arg);
bool kiss_thread_running(void);
#ifdef KISS_RX_THREAD
static void *ReadFromHostSocket(void *args);
#else

Wyświetl plik

@ -36,6 +36,9 @@
#else
# include <winsock2.h>
# include <windows.h>
# ifndef ENOTCONN
# define ENOTCONN WSAENOTCONN
# endif
#endif
#include <string>

Wyświetl plik

@ -80,7 +80,6 @@ struct status {
double sldrPwrSquelchValue;
bool afconoff;
bool sqlonoff;
bool pwrsqlonoff;
int scopeX;
int scopeY;
bool scopeVisible;
@ -166,9 +165,12 @@ struct status {
bool csma_enabled;
bool kiss_tcp_io;
bool kiss_tcp_listen;
bool kpsql_enabled;
bool ip_lock;
bool kiss_io_modem_change_inhibit;
double squelch_value;
bool psk8DCDShortFlag;
std::string browser_search;
bool meters;

Wyświetl plik

@ -24,13 +24,27 @@
#include <config.h>
#include <time.h>
#include <sys/time.h>
#ifdef __MINGW32__
# include <pthread.h>
#else
# if !HAVE_CLOCK_GETTIME
enum clockid_t { CLOCK_REALTIME, CLOCK_MONOTONIC };
int clock_gettime(clockid_t clock_id, struct timespec* tp);
# endif
#endif
#if !HAVE_CLOCK_GETTIME
// enum clockid_t { CLOCK_REALTIME, CLOCK_MONOTONIC };
#ifndef __clockid_t_defined
typedef int clockid_t;
#define __clockid_t_defined 1
#endif /* __clockid_t_defined */
#ifndef CLOCK_REALTIME
#define CLOCK_REALTIME 0
#endif
#ifndef CLOCK_MONOTONIC
#define CLOCK_MONOTONIC 1
#endif
int clock_gettime(clockid_t clock_id, struct timespec* tp);
#endif
struct timespec operator+(const struct timespec &t0, const double &t);

Wyświetl plik

@ -251,16 +251,27 @@ void start_process(string executable)
void toggle_io_port_selection(int io_mode)
{
switch(io_mode) {
case ARQ_IO:
btnEnable_kiss->do_callback();
btnEnable_arq->do_callback();
progdefaults.changed = false;
break;
enable_arq();
progdefaults.changed = false;
break;
case KISS_IO:
btnEnable_arq->do_callback();
btnEnable_kiss->do_callback();
enable_kiss();
if(progdefaults.tcp_udp_auto_connect) {
btn_connect_kiss_io->value(1);
btn_connect_kiss_io->do_callback();
}
if(progdefaults.kpsql_enabled) {
btnPSQL->value(progdefaults.kpsql_enabled);
btnPSQL->do_callback();
}
progdefaults.changed = false;
break;
@ -348,12 +359,12 @@ void delayed_startup(void *)
data_io_enabled = DISABLED_IO;
arq_init();
//kiss_init();
if (progdefaults.connect_to_maclogger) maclogger_init();
data_io_enabled = progStatus.data_io_enabled;
toggle_io_port_selection(data_io_enabled);
disable_config_p2p_io_widgets();
notify_start();
@ -843,10 +854,10 @@ void generate_option_help(void) {
<< " The default is: " << progdefaults.data_io_enabled << "\n\n"
<< " --kiss-server-address HOSTNAME\n"
<< " Set the KISS UDP server address\n"
<< " Set the KISS TCP/UDP server address\n"
<< " The default is: " << progdefaults.kiss_address << "\n\n"
<< " --kiss-server-port-io I/O PORT\n"
<< " Set the KISS UDP server I/O port\n"
<< " Set the KISS TCP/UDP server I/O port\n"
<< " The default is: " << progdefaults.kiss_io_port << "\n\n"
<< " --kiss-server-port-o Output PORT\n"
<< " Set the KISS UDP server output port\n"

Plik diff jest za duży Load Diff

Wyświetl plik

@ -59,12 +59,14 @@
#include <cstdlib>
#include <cmath>
#include <cstdio>
#include <errno.h>
//#undef NDEBUG
#include "debug.h"
#include "socket.h"
#if HAVE_GETADDRINFO && !defined(AI_NUMERICSERV)
# define AI_NUMERICSERV 0
#endif

Wyświetl plik

@ -119,7 +119,6 @@ status progStatus = {
5.0, // double sldrPwrSquelchValue
true, // bool afconoff
true, // bool sqlonoff
false, // bool pwrsqlonoff
50, // int scopeX;
50, // int scopeY;
false, // bool scopeVisible;
@ -201,6 +200,8 @@ status progStatus = {
progdefaults.csma_enabled,
progdefaults.kiss_tcp_io,
progdefaults.kiss_tcp_listen,
progdefaults.kpsql_enabled,
progdefaults.kiss_io_modem_change_inhibit,
true,
0.0,
progdefaults.psk8DCDShortFlag,
@ -326,7 +327,8 @@ void status::saveLastState()
csma_enabled = progdefaults.csma_enabled;
kiss_tcp_io = progdefaults.kiss_tcp_io;
kiss_tcp_listen = progdefaults.kiss_tcp_listen;
kpsql_enabled = progdefaults.kpsql_enabled;
kiss_io_modem_change_inhibit = progdefaults.kiss_io_modem_change_inhibit;
squelch_value = 0;
Fl_Preferences spref(HomeDir.c_str(), "w1hkj.com", PACKAGE_TARNAME);
@ -336,7 +338,6 @@ void status::saveLastState()
spref.set("mode_name", mode_info[lastmode].sname);
spref.set("squelch_enabled", sqlonoff);
spref.set("pwr_squelch_enabled", pwrsqlonoff);
spref.set("squelch_level", sldrSquelchValue);
spref.set("pwr_squelch_level", sldrPwrSquelchValue);
spref.set("afc_enabled", afconoff);
@ -479,7 +480,7 @@ if (!bWF_only) {
spref.set("kiss_dual_port_enabled", kiss_dual_port_enabled);
}
if(override_data_io_enabled != DISABLED_IO)
if(!override_data_io_enabled)
spref.set("data_io_enabled", data_io_enabled);
spref.set("ax25_decode_enabled", ax25_decode_enabled);
@ -489,6 +490,8 @@ if (!bWF_only) {
spref.set("csma_enabled", csma_enabled);
spref.set("kiss_tcp_io", kiss_tcp_io);
spref.set("kiss_tcp_listen", kiss_tcp_listen);
spref.set("kpsql_enabled", kpsql_enabled);
spref.set("kiss_io_modem_change_inhibit", kiss_io_modem_change_inhibit);
spref.set("browser_search", browser_search.c_str());
@ -527,7 +530,6 @@ void status::loadLastState()
}
spref.get("squelch_enabled", i, sqlonoff); sqlonoff = i;
spref.get("pwr_squelch_enabled", i, pwrsqlonoff); pwrsqlonoff = i;
spref.get("squelch_level", i, sldrSquelchValue); sldrSquelchValue = i;
spref.get("pwr_squelch_level", i, sldrPwrSquelchValue); sldrPwrSquelchValue = i;
spref.get("afc_enabled", i, afconoff); afconoff = i;
@ -710,7 +712,7 @@ void status::loadLastState()
spref.get("kiss_dual_port_enabled", i, kiss_dual_port_enabled); kiss_dual_port_enabled = i;
}
if(override_data_io_enabled != DISABLED_IO)
if(!override_data_io_enabled)
spref.get("data_io_enabled", i, data_io_enabled); data_io_enabled = i;
spref.get("ax25_decode_enabled", i, ax25_decode_enabled); ax25_decode_enabled = i;
@ -720,6 +722,8 @@ void status::loadLastState()
spref.get("csma_enabled", i, csma_enabled); csma_enabled = i;
spref.get("kiss_tcp_io", i, kiss_tcp_io); kiss_tcp_io = i;
spref.get("kiss_tcp_listen", i, kiss_tcp_listen); kiss_tcp_listen = i;
spref.get("kpsql_enabled", i, kpsql_enabled); kpsql_enabled = i;
spref.get("kiss_io_modem_change_inhibit", i, kiss_io_modem_change_inhibit); kiss_io_modem_change_inhibit = i;
spref.get("psk8DCDShortFlag", i, psk8DCDShortFlag); psk8DCDShortFlag = i;
@ -826,13 +830,13 @@ void status::initLastState()
data_io_enabled = ARQ_IO;
progdefaults.data_io_enabled = ARQ_IO;
progStatus.data_io_enabled = ARQ_IO;
pwrsqlonoff = false;
kpsql_enabled = false;
}
btnSQL->value(sqlonoff);
btnPSQL->value(pwrsqlonoff);
btnPSQL->value(kpsql_enabled);
if(pwrsqlonoff)
if(kpsql_enabled)
sldrSquelch->value(sldrPwrSquelchValue);
else
sldrSquelch->value(sldrSquelchValue);

Wyświetl plik

@ -118,6 +118,15 @@ void xmlrpc_rig_set_qsy(long long rfc)
// set / get pairs
//======================================================================
//----------------------------------------------------------------------
// To prevent a FLTK library thread deadlock on MacOSX
//----------------------------------------------------------------------
static void ptt_on_off_failure(void * ptt_flag)
{
int flag = *((int *) ptt_flag);
fl_alert2("fldigi/flrig PTT %s failure", flag ? "ON" : "OFF");
}
//----------------------------------------------------------------------
// push to talk
//----------------------------------------------------------------------
@ -126,6 +135,7 @@ static int wait_ptt_timeout = 5; // 5 polls and then disable wait
static int ptt_state = 0;
static int new_ptt = -1;
static int last_new_ptt = -1;
void exec_flrig_ptt() {
if (!connected_to_flrig) {
@ -149,7 +159,7 @@ void exec_flrig_ptt() {
wait_ptt = true;
wait_ptt_timeout = 10;
ptt_state = new_ptt;
LOG_INFO("ptt %s in %d msec",
LOG_INFO("ptt %s in %d msec",
ptt_state ? "ON" : "OFF",
i*50 + (j + 1)*20);
new_ptt = -1;
@ -159,10 +169,14 @@ void exec_flrig_ptt() {
}
}
}
wait_ptt = false;
wait_ptt_timeout = 0;
LOG_ERROR("%s", "rig.set_ptt failed (3)");
fl_alert2("fldigi/flrig PTT %s failure", new_ptt ? "ON" : "OFF");
// FLTK thread dead lock on MacOSX. Call in main thread.
// fl_alert2("fldigi/flrig PTT %s failure", new_ptt ? "ON" : "OFF");
last_new_ptt = new_ptt;
REQ(ptt_on_off_failure, (void *) &last_new_ptt);
new_ptt = -1;
return;
}
@ -535,7 +549,7 @@ void xmlrpc_rig_post_bws(void *)
string labels1 = bws_result[1][0];
static char btn1_label[2];
btn1_label[0] = labels1[0]; btn1_label[1] = 0;
btn1_label[0] = labels1[0]; btn1_label[1] = 0;
qso_btnBW1->label(btn1_label);
qso_btnBW1->redraw_label();
qso_btnBW1->redraw();
@ -567,7 +581,7 @@ void xmlrpc_rig_post_bws(void *)
string labels2 = bws_result[0][0];
static char btn2_label[2];
btn2_label[0] = labels2[0]; btn2_label[1] = 0;
btn2_label[0] = labels2[0]; btn2_label[1] = 0;
qso_btnBW2->label(btn2_label);
qso_btnBW2->redraw_label();
qso_btnBW2->redraw();

Wyświetl plik

@ -313,7 +313,7 @@ void modem::set_metric(double m)
void modem::display_metric(double m)
{
set_metric(m);
if(!progStatus.pwrsqlonoff)
if(!progStatus.kpsql_enabled)
::global_display_metric(m);
}