kopia lustrzana https://github.com/jamescoxon/dl-fldigi
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
rodzic
e14bbb60af
commit
4b2005e7f7
|
@ -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
|
||||
])
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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();}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -29,6 +29,9 @@
|
|||
#define _FILTER_H
|
||||
|
||||
#include "complex.h"
|
||||
#ifndef M_PI
|
||||
#define M_PI (3.1415926535897932385)
|
||||
#endif
|
||||
|
||||
//=====================================================================
|
||||
// FIR filters
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -36,6 +36,9 @@
|
|||
#else
|
||||
# include <winsock2.h>
|
||||
# include <windows.h>
|
||||
# ifndef ENOTCONN
|
||||
# define ENOTCONN WSAENOTCONN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
31
src/main.cxx
31
src/main.cxx
|
@ -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"
|
||||
|
|
5066
src/misc/kiss_io.cxx
5066
src/misc/kiss_io.cxx
Plik diff jest za duży
Load Diff
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue