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();
|
widget->do_callback();
|
||||||
|
|
||||||
data = index;
|
data = index;
|
||||||
|
|
||||||
return script_no_errors;
|
return script_no_errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1245,11 +1245,9 @@ int process_io_active_port(ScriptParsing *sp, SCRIPT_COMMANDS *sc)
|
||||||
return script_no_errors;
|
return script_no_errors;
|
||||||
|
|
||||||
if(value.find(PARM_KISS) != std::string::npos) {
|
if(value.find(PARM_KISS) != std::string::npos) {
|
||||||
btnEnable_kiss->value(true);
|
enable_kiss();
|
||||||
btnEnable_kiss->do_callback();
|
|
||||||
} else if(value.find(PARM_ARQ) != std::string::npos) {
|
} else if(value.find(PARM_ARQ) != std::string::npos) {
|
||||||
btnEnable_arq->value(true);
|
enable_arq();
|
||||||
btnEnable_arq->do_callback();
|
|
||||||
} else {
|
} else {
|
||||||
return script_invalid_parameter;
|
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)
|
static void script_execute(const char *filename, bool queue_flag)
|
||||||
{
|
{
|
||||||
|
|
||||||
ScriptParsing *sp = 0;
|
ScriptParsing *sp = 0;
|
||||||
static std::string script_filename = "";
|
static std::string script_filename = "";
|
||||||
|
|
||||||
if(!filename) {
|
if(!filename) {
|
||||||
LOG_INFO(_("Script file name (path) null pointer"));
|
LOG_INFO(_("Script file name (path) null pointer"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
script_filename.assign(filename);
|
script_filename.assign(filename);
|
||||||
|
|
||||||
if(script_filename.empty()) {
|
if(script_filename.empty()) {
|
||||||
LOG_INFO(_("Script file name (path) invalid"));
|
LOG_INFO(_("Script file name (path) invalid"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sp = new ScriptParsing;
|
sp = new ScriptParsing;
|
||||||
|
|
||||||
if(!sp) {
|
if(!sp) {
|
||||||
LOG_INFO(_("Script Parsing Class Allocation Fail (%s)"), script_filename.c_str());
|
LOG_INFO(_("Script Parsing Class Allocation Fail (%s)"), script_filename.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO(_("Executing script file: %s"), script_filename.c_str());
|
LOG_INFO(_("Executing script file: %s"), script_filename.c_str());
|
||||||
|
|
||||||
sp->parse_commands((char *) script_filename.c_str());
|
sp->parse_commands((char *) script_filename.c_str());
|
||||||
|
|
||||||
if(sp->script_errors()) {
|
if(sp->script_errors()) {
|
||||||
LOG_INFO(_("Issues reported in processing script file: %s"), script_filename.c_str());
|
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."));
|
fl_alert("%s", _("Script file contains potential issues\nSee documentation and/or Log file for details."));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(sp->restart_flag()) {
|
if(sp->restart_flag()) {
|
||||||
fl_alert("%s", _("Some changes made by the script requires program\nrestart before they become active."));
|
fl_alert("%s", _("Some changes made by the script requires program\nrestart before they become active."));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(sp)
|
if(sp)
|
||||||
delete sp;
|
delete sp;
|
||||||
}
|
}
|
||||||
|
@ -2845,16 +2843,16 @@ static void script_execute(const char *filename, bool queue_flag)
|
||||||
void cb_scripts(bool reset_path = false)
|
void cb_scripts(bool reset_path = false)
|
||||||
{
|
{
|
||||||
pthread_mutex_lock(&mutex_script_io);
|
pthread_mutex_lock(&mutex_script_io);
|
||||||
|
|
||||||
static bool first_time = true;
|
static bool first_time = true;
|
||||||
static char script_filename[FL_PATH_MAX + 1];
|
static char script_filename[FL_PATH_MAX + 1];
|
||||||
std::string new_path = "";
|
std::string new_path = "";
|
||||||
|
|
||||||
if(reset_path || first_time) {
|
if(reset_path || first_time) {
|
||||||
memset(script_filename, 0, sizeof(script_filename));
|
memset(script_filename, 0, sizeof(script_filename));
|
||||||
strncpy(script_filename, ScriptsDir.c_str(), FL_PATH_MAX);
|
strncpy(script_filename, ScriptsDir.c_str(), FL_PATH_MAX);
|
||||||
int len = strnlen(script_filename, FL_PATH_MAX);
|
int len = strnlen(script_filename, FL_PATH_MAX);
|
||||||
|
|
||||||
if(len > 0) {
|
if(len > 0) {
|
||||||
len--;
|
len--;
|
||||||
if(script_filename[len] == PATH_CHAR_SEPERATOR);
|
if(script_filename[len] == PATH_CHAR_SEPERATOR);
|
||||||
|
@ -2862,22 +2860,22 @@ void cb_scripts(bool reset_path = false)
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
first_time = false;
|
first_time = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *p = FSEL::select((char *)_("Script Files"), (char *)_("*.txt"), \
|
const char *p = FSEL::select((char *)_("Script Files"), (char *)_("*.txt"), \
|
||||||
script_filename);
|
script_filename);
|
||||||
|
|
||||||
if(p) {
|
if(p) {
|
||||||
memset(script_filename, 0, sizeof(script_filename));
|
memset(script_filename, 0, sizeof(script_filename));
|
||||||
strncpy(script_filename, p, FL_PATH_MAX);
|
strncpy(script_filename, p, FL_PATH_MAX);
|
||||||
|
|
||||||
Fl::lock();
|
Fl::lock();
|
||||||
script_execute(script_filename, false);
|
script_execute(script_filename, false);
|
||||||
Fl::unlock();
|
Fl::unlock();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&mutex_script_io);
|
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*) {
|
static void cb_btnEnable_arq(Fl_Check_Button* o, void*) {
|
||||||
if(o->value()) {
|
if(o->value()) {
|
||||||
progdefaults.changed = true;
|
enable_arq();
|
||||||
progdefaults.data_io_enabled = ARQ_IO;
|
|
||||||
data_io_enabled = ARQ_IO;
|
|
||||||
enable_disable_kpsql();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;
|
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*) {
|
static void cb_btnEnable_kiss(Fl_Check_Button* o, void*) {
|
||||||
if(o->value()) {
|
if(o->value()) {
|
||||||
progdefaults.data_io_enabled = KISS_IO;
|
enable_kiss();
|
||||||
data_io_enabled = KISS_IO;
|
|
||||||
enable_disable_kpsql();
|
|
||||||
}
|
}
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
@ -5681,10 +5676,14 @@ progdefaults.changed = true;
|
||||||
Fl_Check_Button *btnEnable_ax25_decode=(Fl_Check_Button *)0;
|
Fl_Check_Button *btnEnable_ax25_decode=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
static void cb_btnEnable_ax25_decode(Fl_Check_Button* o, void*) {
|
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;
|
progdefaults.ax25_decode_enabled = true;
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
|
progStatus.ax25_decode_enabled = false;
|
||||||
progdefaults.ax25_decode_enabled = false;
|
progdefaults.ax25_decode_enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;
|
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*) {
|
static void cb_btnEnable_csma(Fl_Check_Button* o, void*) {
|
||||||
if(o->value()) {
|
if(o->value()) {
|
||||||
|
progStatus.csma_enabled = true;
|
||||||
progdefaults.csma_enabled = true;
|
progdefaults.csma_enabled = true;
|
||||||
} else {
|
} else {
|
||||||
|
progStatus.csma_enabled = false;
|
||||||
progdefaults.csma_enabled = false;
|
progdefaults.csma_enabled = false;
|
||||||
}
|
}
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
|
@ -5710,56 +5711,69 @@ progdefaults.changed = true;
|
||||||
Fl_Input2 *txtKiss_ip_address=(Fl_Input2 *)0;
|
Fl_Input2 *txtKiss_ip_address=(Fl_Input2 *)0;
|
||||||
|
|
||||||
static void cb_txtKiss_ip_address(Fl_Input2* o, void*) {
|
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;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Counter *cntKPSQLAttenuation=(Fl_Counter *)0;
|
Fl_Counter *cntKPSQLAttenuation=(Fl_Counter *)0;
|
||||||
|
|
||||||
static void cb_cntKPSQLAttenuation(Fl_Counter* o, void*) {
|
static void cb_cntKPSQLAttenuation(Fl_Counter* o, void*) {
|
||||||
progdefaults.kpsql_attenuation = (int) o->value();
|
progStatus.kpsql_attenuation = (int) o->value();
|
||||||
update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
|
progdefaults.kpsql_attenuation = (int) o->value();
|
||||||
|
update_kpsql_fractional_gain(progStatus.kpsql_attenuation);
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Input2 *txtKiss_ip_io_port_no=(Fl_Input2 *)0;
|
Fl_Input2 *txtKiss_ip_io_port_no=(Fl_Input2 *)0;
|
||||||
|
|
||||||
static void cb_txtKiss_ip_io_port_no(Fl_Input2* o, void*) {
|
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;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Counter *cntBusyChannelSeconds=(Fl_Counter *)0;
|
Fl_Counter *cntBusyChannelSeconds=(Fl_Counter *)0;
|
||||||
|
|
||||||
static void cb_cntBusyChannelSeconds(Fl_Counter* o, void*) {
|
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;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Check_Button *btnEnableBusyChannel=(Fl_Check_Button *)0;
|
Fl_Check_Button *btnEnableBusyChannel=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
static void cb_btnEnableBusyChannel(Fl_Check_Button* o, void*) {
|
static void cb_btnEnableBusyChannel(Fl_Check_Button* o, void*) {
|
||||||
if(o->value())
|
if(o->value()) {
|
||||||
|
progStatus.enableBusyChannel = true;
|
||||||
progdefaults.enableBusyChannel = true;
|
progdefaults.enableBusyChannel = true;
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
|
progStatus.enableBusyChannel = false;
|
||||||
progdefaults.enableBusyChannel = false;
|
progdefaults.enableBusyChannel = false;
|
||||||
|
}
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Input2 *txtKiss_ip_out_port_no=(Fl_Input2 *)0;
|
Fl_Input2 *txtKiss_ip_out_port_no=(Fl_Input2 *)0;
|
||||||
|
|
||||||
static void cb_txtKiss_ip_out_port_no(Fl_Input2* o, void*) {
|
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;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Check_Button *btnEnable_dual_port=(Fl_Check_Button *)0;
|
Fl_Check_Button *btnEnable_dual_port=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
static void cb_btnEnable_dual_port(Fl_Check_Button* o, void*) {
|
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;
|
progdefaults.kiss_dual_port_enabled = true;
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
|
progStatus.kiss_dual_port_enabled = false;
|
||||||
progdefaults.kiss_dual_port_enabled = false;
|
progdefaults.kiss_dual_port_enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;
|
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;
|
Fl_Button *btn_connect_kiss_io=(Fl_Button *)0;
|
||||||
|
|
||||||
static void cb_btn_connect_kiss_io(Fl_Button*, void*) {
|
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;
|
Fl_Check_Button *btnKissTCPIO=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
static void cb_btnKissTCPIO(Fl_Check_Button* o, void*) {
|
static void cb_btnKissTCPIO(Fl_Check_Button* o, void*) {
|
||||||
if(o->value()) {
|
if(o->value()) {
|
||||||
progdefaults.kiss_tcp_io = true;
|
|
||||||
progStatus.kiss_tcp_io = true;
|
progStatus.kiss_tcp_io = true;
|
||||||
|
progdefaults.kiss_tcp_io = true;
|
||||||
} else {
|
} else {
|
||||||
progStatus.kiss_tcp_io = false;
|
progStatus.kiss_tcp_io = false;
|
||||||
progdefaults.kiss_tcp_io = false;
|
progdefaults.kiss_tcp_io = false;
|
||||||
}
|
}
|
||||||
kiss_io_set_button_state(0);
|
kiss_io_set_button_state(0);
|
||||||
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Check_Button *btnKissUDPIO=(Fl_Check_Button *)0;
|
Fl_Check_Button *btnKissUDPIO=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
static void cb_btnKissUDPIO(Fl_Check_Button* o, void*) {
|
static void cb_btnKissUDPIO(Fl_Check_Button* o, void*) {
|
||||||
if(o->value()) {
|
if(o->value()) {
|
||||||
progdefaults.kiss_tcp_io = false;
|
|
||||||
progStatus.kiss_tcp_io = false;
|
progStatus.kiss_tcp_io = false;
|
||||||
|
progdefaults.kiss_tcp_io = false;
|
||||||
} else {
|
} else {
|
||||||
progStatus.kiss_tcp_io = true;
|
progStatus.kiss_tcp_io = true;
|
||||||
progdefaults.kiss_tcp_io = true;
|
progdefaults.kiss_tcp_io = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
kiss_io_set_button_state(0);
|
kiss_io_set_button_state(0);
|
||||||
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Check_Button *btnKissTCPListen=(Fl_Check_Button *)0;
|
Fl_Check_Button *btnKissTCPListen=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
static void cb_btnKissTCPListen(Fl_Check_Button* o, void*) {
|
static void cb_btnKissTCPListen(Fl_Check_Button* o, void*) {
|
||||||
if(o->value()) {
|
if(o->value()) {
|
||||||
progdefaults.kiss_tcp_listen = true;
|
|
||||||
progStatus.kiss_tcp_listen = true;
|
progStatus.kiss_tcp_listen = true;
|
||||||
|
progdefaults.kiss_tcp_listen = true;
|
||||||
} else {
|
} else {
|
||||||
progStatus.kiss_tcp_listen = false;
|
progStatus.kiss_tcp_listen = false;
|
||||||
progdefaults.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;
|
Fl_Input2 *txtArq_ip_address=(Fl_Input2 *)0;
|
||||||
|
@ -6851,7 +6897,7 @@ ab and newline are automatically included."));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
|
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"));
|
{ 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->down_box(FL_DOWN_BOX);
|
||||||
btn_dockable_macros->callback((Fl_Callback*)cb_btn_dockable_macros);
|
btn_dockable_macros->callback((Fl_Callback*)cb_btn_dockable_macros);
|
||||||
o->value(!progdefaults.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->color(FL_LIGHT1);
|
||||||
tabsWaterfall->selection_color(FL_LIGHT1);
|
tabsWaterfall->selection_color(FL_LIGHT1);
|
||||||
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Display"));
|
{ 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"));
|
{ Fl_Group* o = new Fl_Group(50, 63, 496, 190, _("Colors and cursors"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
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();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("FFT Processing"));
|
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("FFT Processing"));
|
||||||
|
o->hide();
|
||||||
{ Fl_Group* o = new Fl_Group(55, 71, 490, 135);
|
{ Fl_Group* o = new Fl_Group(55, 71, 490, 135);
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
{ Fl_Counter2* o = cntLowFreqCutoff = new Fl_Counter2(100, 89, 70, 22, _("Lower limit"));
|
{ 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->selection_color(FL_LIGHT1);
|
||||||
tabsModems->align(Fl_Align(FL_ALIGN_TOP_RIGHT));
|
tabsModems->align(Fl_Align(FL_ALIGN_TOP_RIGHT));
|
||||||
{ tabCW = new Fl_Group(0, 50, 600, 335, _("CW"));
|
{ tabCW = new Fl_Group(0, 50, 600, 335, _("CW"));
|
||||||
tabCW->hide();
|
|
||||||
{ tabsCW = new Fl_Tabs(0, 50, 600, 335);
|
{ tabsCW = new Fl_Tabs(0, 50, 600, 335);
|
||||||
tabsCW->selection_color(FL_LIGHT1);
|
tabsCW->selection_color(FL_LIGHT1);
|
||||||
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("General"));
|
{ 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);
|
tabsRTTY->selection_color(FL_LIGHT1);
|
||||||
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Tx"));
|
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Tx"));
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
|
o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
|
||||||
o->hide();
|
|
||||||
{ Fl_ListBox* o = selShift = new Fl_ListBox(65, 104, 100, 20, _("Carrier shift"));
|
{ Fl_ListBox* o = selShift = new Fl_ListBox(65, 104, 100, 20, _("Carrier shift"));
|
||||||
selShift->tooltip(_("Select carrier shift"));
|
selShift->tooltip(_("Select carrier shift"));
|
||||||
selShift->box(FL_DOWN_BOX);
|
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
|
||||||
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Rx"));
|
{ Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Rx"));
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
|
o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
|
||||||
|
o->hide();
|
||||||
{ Fl_Group* o = new Fl_Group(32, 101, 535, 69, _("Receive"));
|
{ Fl_Group* o = new Fl_Group(32, 101, 535, 69, _("Receive"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||||
|
@ -9609,9 +9654,9 @@ le Earth)"));
|
||||||
tabTHOR->end();
|
tabTHOR->end();
|
||||||
} // Fl_Group* tabTHOR
|
} // Fl_Group* tabTHOR
|
||||||
{ tabOther = new Fl_Group(0, 50, 600, 335, _("Other"));
|
{ tabOther = new Fl_Group(0, 50, 600, 335, _("Other"));
|
||||||
|
tabOther->hide();
|
||||||
{ tabsOther = new Fl_Tabs(0, 50, 600, 335);
|
{ tabsOther = new Fl_Tabs(0, 50, 600, 335);
|
||||||
{ tabNavtex = new Fl_Group(0, 75, 600, 310, _("Nav"));
|
{ 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"));
|
{ 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->down_box(FL_DOWN_BOX);
|
||||||
btnNvtxAdifLog->callback((Fl_Callback*)cb_btnNvtxAdifLog);
|
btnNvtxAdifLog->callback((Fl_Callback*)cb_btnNvtxAdifLog);
|
||||||
|
@ -9695,6 +9740,7 @@ le Earth)"));
|
||||||
tabWefax->end();
|
tabWefax->end();
|
||||||
} // Fl_Group* tabWefax
|
} // Fl_Group* tabWefax
|
||||||
{ tabDFTscan = new Fl_Group(0, 75, 600, 310, _("Scan"));
|
{ 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"));
|
{ Fl_Counter* o = cnt_dft_scans = new Fl_Counter(235, 154, 132, 21, _("# scans"));
|
||||||
cnt_dft_scans->minimum(10);
|
cnt_dft_scans->minimum(10);
|
||||||
cnt_dft_scans->maximum(1000);
|
cnt_dft_scans->maximum(1000);
|
||||||
|
@ -9735,7 +9781,6 @@ le Earth)"));
|
||||||
tabsRig->selection_color(FL_LIGHT1);
|
tabsRig->selection_color(FL_LIGHT1);
|
||||||
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("RigCAT"));
|
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("RigCAT"));
|
||||||
o->tooltip(_("Rig Control using xml spec file"));
|
o->tooltip(_("Rig Control using xml spec file"));
|
||||||
o->hide();
|
|
||||||
{ chkUSERIGCAT = new Fl_Check_Button(245, 60, 110, 20, _("Use RigCAT"));
|
{ chkUSERIGCAT = new Fl_Check_Button(245, 60, 110, 20, _("Use RigCAT"));
|
||||||
chkUSERIGCAT->tooltip(_("RigCAT used for rig control"));
|
chkUSERIGCAT->tooltip(_("RigCAT used for rig control"));
|
||||||
chkUSERIGCAT->down_box(FL_DOWN_BOX);
|
chkUSERIGCAT->down_box(FL_DOWN_BOX);
|
||||||
|
@ -10372,6 +10417,7 @@ definition"));
|
||||||
tabXMLRPC->end();
|
tabXMLRPC->end();
|
||||||
} // Fl_Group* tabXMLRPC
|
} // Fl_Group* tabXMLRPC
|
||||||
{ tabFLRIG = new Fl_Group(0, 50, 600, 335, _("flrig"));
|
{ tabFLRIG = new Fl_Group(0, 50, 600, 335, _("flrig"));
|
||||||
|
tabFLRIG->hide();
|
||||||
{ Fl_Output* o = new Fl_Output(75, 77, 465, 58);
|
{ Fl_Output* o = new Fl_Output(75, 77, 465, 58);
|
||||||
o->tooltip(_("\" \""));
|
o->tooltip(_("\" \""));
|
||||||
o->type(12);
|
o->type(12);
|
||||||
|
@ -10669,7 +10715,6 @@ nce.\nYou may change the state from either location.\n..."));
|
||||||
tabID->hide();
|
tabID->hide();
|
||||||
{ tabsID = new Fl_Tabs(0, 25, 600, 360);
|
{ tabsID = new Fl_Tabs(0, 25, 600, 360);
|
||||||
{ tabRsID = new Fl_Group(0, 50, 600, 335, _("RsID"));
|
{ 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)"));
|
{ Fl_Group* o = new Fl_Group(32, 55, 535, 210, _("Reed-Solomon ID (Rx)"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||||
|
@ -10870,6 +10915,7 @@ gured on the\n\"Notifications\" configure dialog."));
|
||||||
tabVideoID->end();
|
tabVideoID->end();
|
||||||
} // Fl_Group* tabVideoID
|
} // Fl_Group* tabVideoID
|
||||||
{ tabCwID = new Fl_Group(0, 50, 600, 335, _("CW"));
|
{ tabCwID = new Fl_Group(0, 50, 600, 335, _("CW"));
|
||||||
|
tabCwID->hide();
|
||||||
{ sld = new Fl_Group(32, 146, 536, 127, _("CW Postamble ID"));
|
{ sld = new Fl_Group(32, 146, 536, 127, _("CW Postamble ID"));
|
||||||
sld->box(FL_ENGRAVED_FRAME);
|
sld->box(FL_ENGRAVED_FRAME);
|
||||||
sld->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
sld->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||||
|
@ -11517,7 +11563,6 @@ and restarted if needed."));
|
||||||
tabQRZ->hide();
|
tabQRZ->hide();
|
||||||
{ tabsQRZ = new Fl_Tabs(0, 25, 600, 360);
|
{ tabsQRZ = new Fl_Tabs(0, 25, 600, 360);
|
||||||
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Call Lookup"));
|
{ 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"));
|
{ Fl_Group* o = new Fl_Group(34, 56, 538, 122, _("Web Browser lookup"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||||
|
@ -11696,6 +11741,7 @@ and restarted if needed."));
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
{ Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("eQSL"));
|
{ 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"));
|
{ Fl_Input2* o = inpEQSL_id = new Fl_Input2(225, 58, 150, 20, _("User ID"));
|
||||||
inpEQSL_id->tooltip(_("Your login name"));
|
inpEQSL_id->tooltip(_("Your login name"));
|
||||||
inpEQSL_id->box(FL_DOWN_BOX);
|
inpEQSL_id->box(FL_DOWN_BOX);
|
||||||
|
@ -12027,7 +12073,7 @@ and restarted if needed."));
|
||||||
btnEnable_arq->type(102);
|
btnEnable_arq->type(102);
|
||||||
btnEnable_arq->down_box(FL_DOWN_BOX);
|
btnEnable_arq->down_box(FL_DOWN_BOX);
|
||||||
btnEnable_arq->callback((Fl_Callback*)cb_btnEnable_arq);
|
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();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Check_Button* btnEnable_arq
|
} // Fl_Check_Button* btnEnable_arq
|
||||||
{ Fl_Check_Button* o = btnEnable_kiss = new Fl_Check_Button(221, 112, 115, 20, _("Enable KISS"));
|
{ 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->type(102);
|
||||||
btnEnable_kiss->down_box(FL_DOWN_BOX);
|
btnEnable_kiss->down_box(FL_DOWN_BOX);
|
||||||
btnEnable_kiss->callback((Fl_Callback*)cb_btnEnable_kiss);
|
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();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Check_Button* btnEnable_kiss
|
} // Fl_Check_Button* btnEnable_kiss
|
||||||
{ Fl_Check_Button* o = btnEnable_ax25_decode = new Fl_Check_Button(346, 112, 115, 20, _("AX25 Decode"));
|
{ 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->tooltip(_("Used for BPQ32"));
|
||||||
btnEnable_csma->down_box(FL_DOWN_BOX);
|
btnEnable_csma->down_box(FL_DOWN_BOX);
|
||||||
btnEnable_csma->callback((Fl_Callback*)cb_btnEnable_csma);
|
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();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Check_Button* btnEnable_csma
|
} // 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\
|
{ 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"));
|
{ Fl_Group* o = new Fl_Group(6, 138, 588, 85, _("KISS"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
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->tooltip(_("Returns IP Address and port\nnumber to the default value."));
|
||||||
btnDefault_kiss_ip->callback((Fl_Callback*)cb_btnDefault_kiss_ip);
|
btnDefault_kiss_ip->callback((Fl_Callback*)cb_btnDefault_kiss_ip);
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Button* btnDefault_kiss_ip
|
} // 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\
|
txtKiss_ip_address->tooltip(_("IP Address for KISS interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: i\
|
||||||
.e. localhost"));
|
.e. localhost"));
|
||||||
txtKiss_ip_address->box(FL_DOWN_BOX);
|
txtKiss_ip_address->box(FL_DOWN_BOX);
|
||||||
|
@ -12097,7 +12143,7 @@ s require program restart."));
|
||||||
update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
|
update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Counter* cntKPSQLAttenuation
|
} // 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->tooltip(_("IP Address Port Number"));
|
||||||
txtKiss_ip_io_port_no->box(FL_DOWN_BOX);
|
txtKiss_ip_io_port_no->box(FL_DOWN_BOX);
|
||||||
txtKiss_ip_io_port_no->color(FL_BACKGROUND2_COLOR);
|
txtKiss_ip_io_port_no->color(FL_BACKGROUND2_COLOR);
|
||||||
|
@ -12125,7 +12171,7 @@ s require program restart."));
|
||||||
o->step(1,10);
|
o->step(1,10);
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Counter* cntBusyChannelSeconds
|
} // 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->tooltip(_("Enable Busy Channel"));
|
||||||
btnEnableBusyChannel->down_box(FL_DOWN_BOX);
|
btnEnableBusyChannel->down_box(FL_DOWN_BOX);
|
||||||
btnEnableBusyChannel->callback((Fl_Callback*)cb_btnEnableBusyChannel);
|
btnEnableBusyChannel->callback((Fl_Callback*)cb_btnEnableBusyChannel);
|
||||||
|
@ -12133,7 +12179,7 @@ s require program restart."));
|
||||||
else o->value(false);
|
else o->value(false);
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Check_Button* btnEnableBusyChannel
|
} // 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->tooltip(_("Output port number when same IP address used"));
|
||||||
txtKiss_ip_out_port_no->box(FL_DOWN_BOX);
|
txtKiss_ip_out_port_no->box(FL_DOWN_BOX);
|
||||||
txtKiss_ip_out_port_no->color(FL_BACKGROUND2_COLOR);
|
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());
|
o->value(progdefaults.kiss_out_port.c_str());
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Input2* txtKiss_ip_out_port_no
|
} // 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->tooltip(_("Enable when both programs are using the same IP address"));
|
||||||
btnEnable_dual_port->down_box(FL_DOWN_BOX);
|
btnEnable_dual_port->down_box(FL_DOWN_BOX);
|
||||||
btnEnable_dual_port->callback((Fl_Callback*)cb_btnEnable_dual_port);
|
btnEnable_dual_port->callback((Fl_Callback*)cb_btnEnable_dual_port);
|
||||||
|
@ -12161,23 +12207,23 @@ s require program restart."));
|
||||||
btn_restart_kiss->hide();
|
btn_restart_kiss->hide();
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Button* btn_restart_kiss
|
} // 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->tooltip(_("Return KISS TCP IO connection to a Listening state"));
|
||||||
btn_connect_kiss_io->callback((Fl_Callback*)cb_btn_connect_kiss_io);
|
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_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->tooltip(_("Check to enable TCP/IP IO Connection"));
|
||||||
btnKissTCPIO->down_box(FL_DOWN_BOX);
|
btnKissTCPIO->down_box(FL_DOWN_BOX);
|
||||||
btnKissTCPIO->callback((Fl_Callback*)cb_btnKissTCPIO);
|
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();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Check_Button* btnKissTCPIO
|
} // 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->tooltip(_("Check to enable UDP/IP IO"));
|
||||||
btnKissUDPIO->down_box(FL_DOWN_BOX);
|
btnKissUDPIO->down_box(FL_DOWN_BOX);
|
||||||
btnKissUDPIO->callback((Fl_Callback*)cb_btnKissUDPIO);
|
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();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Check_Button* btnKissUDPIO
|
} // Fl_Check_Button* btnKissUDPIO
|
||||||
{ Fl_Check_Button* o = btnKissTCPListen = new Fl_Check_Button(485, 145, 95, 15, _("Listen / Bind"));
|
{ 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);
|
if(progStatus.kiss_tcp_listen) o->value(true); else o->value(false);
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Check_Button* btnKissTCPListen
|
} // 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();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
{ Fl_Group* o = new Fl_Group(6, 225, 588, 35, _("ARQ"));
|
{ Fl_Group* o = new Fl_Group(6, 225, 588, 35, _("ARQ"));
|
||||||
|
@ -12209,7 +12269,7 @@ e. localhost"));
|
||||||
o->value(progdefaults.arq_address.c_str());
|
o->value(progdefaults.arq_address.c_str());
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Input2* txtArq_ip_address
|
} // 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->tooltip(_("IP Address Port Number"));
|
||||||
txtArq_ip_port_no->box(FL_DOWN_BOX);
|
txtArq_ip_port_no->box(FL_DOWN_BOX);
|
||||||
txtArq_ip_port_no->color(FL_BACKGROUND2_COLOR);
|
txtArq_ip_port_no->color(FL_BACKGROUND2_COLOR);
|
||||||
|
@ -12265,7 +12325,7 @@ e. localhost"));
|
||||||
o->value(progdefaults.xmlrpc_address.c_str());
|
o->value(progdefaults.xmlrpc_address.c_str());
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Input2* txtXmlrpc_ip_address
|
} // 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->tooltip(_("IP Address Port Number"));
|
||||||
txtXmlrpc_ip_port_no->box(FL_DOWN_BOX);
|
txtXmlrpc_ip_port_no->box(FL_DOWN_BOX);
|
||||||
txtXmlrpc_ip_port_no->color(FL_BACKGROUND2_COLOR);
|
txtXmlrpc_ip_port_no->color(FL_BACKGROUND2_COLOR);
|
||||||
|
@ -12313,7 +12373,7 @@ i.e. localhost"));
|
||||||
o->value(progdefaults.flrig_ip_address.c_str());
|
o->value(progdefaults.flrig_ip_address.c_str());
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Input2* txt_flrig_ip_address
|
} // 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->tooltip(_("IP Address Port Number"));
|
||||||
txt_flrig_ip_port->box(FL_DOWN_BOX);
|
txt_flrig_ip_port->box(FL_DOWN_BOX);
|
||||||
txt_flrig_ip_port->color(FL_BACKGROUND2_COLOR);
|
txt_flrig_ip_port->color(FL_BACKGROUND2_COLOR);
|
||||||
|
@ -12346,7 +12406,7 @@ i.e. localhost"));
|
||||||
o->value(progdefaults.xmllog_address.c_str());
|
o->value(progdefaults.xmllog_address.c_str());
|
||||||
progStatus.ip_lock ? o->deactivate() : o->activate();
|
progStatus.ip_lock ? o->deactivate() : o->activate();
|
||||||
} // Fl_Input* txt_fllog_ip_address
|
} // 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->tooltip(_("IP Address Port Number"));
|
||||||
txt_fllog_ip_port->callback((Fl_Callback*)cb_txt_fllog_ip_port);
|
txt_fllog_ip_port->callback((Fl_Callback*)cb_txt_fllog_ip_port);
|
||||||
txt_fllog_ip_port->align(Fl_Align(FL_ALIGN_RIGHT));
|
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[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {}
|
static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {}
|
||||||
Fl_Window {} {
|
Fl_Window {} {
|
||||||
label {Fldigi configuration} open
|
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
|
Fl_Tabs tabsConfigure {open
|
||||||
xywh {0 0 600 390} color 50 selection_color 50
|
xywh {0 0 600 390} color 50 selection_color 50
|
||||||
|
@ -1329,7 +1329,7 @@ progdefaults.changed = true;}
|
||||||
label {Disable dockable macro bar}
|
label {Disable dockable macro bar}
|
||||||
callback {progdefaults.dockable_macros = !o->value();
|
callback {progdefaults.dockable_macros = !o->value();
|
||||||
progdefaults.changed = true;}
|
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
|
411 pixels with WF height = 100} xywh {152 353 296 20} down_box DOWN_BOX
|
||||||
code0 {o->value(!progdefaults.dockable_macros);}
|
code0 {o->value(!progdefaults.dockable_macros);}
|
||||||
}
|
}
|
||||||
|
@ -2584,7 +2584,7 @@ UI_select();}
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label Display open
|
label Display open
|
||||||
xywh {0 50 600 335} hide
|
xywh {0 50 600 335}
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {Colors and cursors} open
|
label {Colors and cursors} open
|
||||||
|
@ -2825,7 +2825,7 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {FFT Processing} open
|
label {FFT Processing} open
|
||||||
xywh {0 50 600 335}
|
xywh {0 50 600 335} hide
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {55 71 490 135} box ENGRAVED_FRAME
|
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 {
|
Fl_Group tabCW {
|
||||||
label CW
|
label CW
|
||||||
xywh {0 50 600 335} hide
|
xywh {0 50 600 335}
|
||||||
} {
|
} {
|
||||||
Fl_Tabs tabsCW {open
|
Fl_Tabs tabsCW {open
|
||||||
xywh {0 50 600 335} selection_color 50
|
xywh {0 50 600 335} selection_color 50
|
||||||
|
@ -4285,7 +4285,7 @@ progdefaults.changed = true;}
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label Tx open
|
label Tx open
|
||||||
xywh {0 75 600 310} align 5 hide
|
xywh {0 75 600 310} align 5
|
||||||
} {
|
} {
|
||||||
Fl_Group selShift {
|
Fl_Group selShift {
|
||||||
label {Carrier shift}
|
label {Carrier shift}
|
||||||
|
@ -4408,7 +4408,7 @@ if (o->value()) {
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label Rx open
|
label Rx open
|
||||||
xywh {0 75 600 310} align 5
|
xywh {0 75 600 310} align 5 hide
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label Receive open
|
label Receive open
|
||||||
|
@ -4634,14 +4634,14 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Group tabOther {
|
Fl_Group tabOther {
|
||||||
label Other open
|
label Other open
|
||||||
xywh {0 50 600 335}
|
xywh {0 50 600 335} hide
|
||||||
} {
|
} {
|
||||||
Fl_Tabs tabsOther {open
|
Fl_Tabs tabsOther {open
|
||||||
xywh {0 50 600 335}
|
xywh {0 50 600 335}
|
||||||
} {
|
} {
|
||||||
Fl_Group tabNavtex {
|
Fl_Group tabNavtex {
|
||||||
label Nav
|
label Nav
|
||||||
xywh {0 75 600 310} hide
|
xywh {0 75 600 310}
|
||||||
} {
|
} {
|
||||||
Fl_Check_Button btnNvtxAdifLog {
|
Fl_Check_Button btnNvtxAdifLog {
|
||||||
label {Log Navtex messages to Adif file}
|
label {Log Navtex messages to Adif file}
|
||||||
|
@ -4732,7 +4732,7 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Group tabDFTscan {
|
Fl_Group tabDFTscan {
|
||||||
label Scan
|
label Scan
|
||||||
xywh {0 75 600 310}
|
xywh {0 75 600 310} hide
|
||||||
} {
|
} {
|
||||||
Fl_Counter cnt_dft_scans {
|
Fl_Counter cnt_dft_scans {
|
||||||
label {\# scans}
|
label {\# scans}
|
||||||
|
@ -4772,7 +4772,7 @@ progdefaults.changed = true;}
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label RigCAT
|
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 {
|
Fl_Check_Button chkUSERIGCAT {
|
||||||
label {Use RigCAT}
|
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 {
|
Fl_Group tabFLRIG {
|
||||||
label flrig open
|
label flrig open
|
||||||
xywh {0 50 600 335}
|
xywh {0 50 600 335} hide
|
||||||
} {
|
} {
|
||||||
Fl_Output {} {
|
Fl_Output {} {
|
||||||
tooltip {" "} xywh {75 77 465 58} type Multiline box BORDER_BOX color 50 align 0
|
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 {
|
Fl_Group tabRsID {
|
||||||
label RsID open
|
label RsID open
|
||||||
xywh {0 50 600 335} hide
|
xywh {0 50 600 335}
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {Reed-Solomon ID (Rx)} open
|
label {Reed-Solomon ID (Rx)} open
|
||||||
|
@ -5948,7 +5948,7 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Group tabCwID {
|
Fl_Group tabCwID {
|
||||||
label CW
|
label CW
|
||||||
xywh {0 50 600 335}
|
xywh {0 50 600 335} hide
|
||||||
} {
|
} {
|
||||||
Fl_Group sld {
|
Fl_Group sld {
|
||||||
label {CW Postamble ID} open
|
label {CW Postamble ID} open
|
||||||
|
@ -6563,7 +6563,7 @@ if (progdefaults.kml_enabled) {
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {Call Lookup} open
|
label {Call Lookup} open
|
||||||
xywh {0 50 600 335} hide
|
xywh {0 50 600 335}
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {Web Browser lookup} open
|
label {Web Browser lookup} open
|
||||||
|
@ -6736,7 +6736,7 @@ progdefaults.changed= true;}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label eQSL open
|
label eQSL open
|
||||||
xywh {0 50 600 335}
|
xywh {0 50 600 335} hide
|
||||||
} {
|
} {
|
||||||
Fl_Input inpEQSL_id {
|
Fl_Input inpEQSL_id {
|
||||||
label {User ID}
|
label {User ID}
|
||||||
|
@ -7049,35 +7049,34 @@ kiss_io_set_button_state(0);}
|
||||||
Fl_Check_Button btnEnable_arq {
|
Fl_Check_Button btnEnable_arq {
|
||||||
label {Enable ARQ}
|
label {Enable ARQ}
|
||||||
callback {if(o->value()) {
|
callback {if(o->value()) {
|
||||||
progdefaults.changed = true;
|
enable_arq();
|
||||||
progdefaults.data_io_enabled = ARQ_IO;
|
|
||||||
data_io_enabled = ARQ_IO;
|
|
||||||
enable_disable_kpsql();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Used For PSKMail and FLDIGI Suite of Programs} xywh {96 112 115 20} type Radio down_box DOWN_BOX
|
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();}
|
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnEnable_kiss {
|
Fl_Check_Button btnEnable_kiss {
|
||||||
label {Enable KISS}
|
label {Enable KISS}
|
||||||
callback {if(o->value()) {
|
callback {if(o->value()) {
|
||||||
progdefaults.data_io_enabled = KISS_IO;
|
enable_kiss();
|
||||||
data_io_enabled = KISS_IO;
|
|
||||||
enable_disable_kpsql();
|
|
||||||
}
|
}
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Used for BPQ32} xywh {221 112 115 20} type Radio down_box DOWN_BOX
|
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();}
|
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnEnable_ax25_decode {
|
Fl_Check_Button btnEnable_ax25_decode {
|
||||||
label {AX25 Decode}
|
label {AX25 Decode}
|
||||||
callback {if(o->value())
|
callback {if(o->value()) {
|
||||||
|
progStatus.ax25_decode_enabled = true;
|
||||||
progdefaults.ax25_decode_enabled = true;
|
progdefaults.ax25_decode_enabled = true;
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
|
progStatus.ax25_decode_enabled = false;
|
||||||
progdefaults.ax25_decode_enabled = false;
|
progdefaults.ax25_decode_enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Decode AX25 Packets into human readable form} xywh {346 112 115 20} down_box DOWN_BOX
|
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 {
|
Fl_Check_Button btnEnable_csma {
|
||||||
label {Enable CSMA}
|
label {Enable CSMA}
|
||||||
callback {if(o->value()) {
|
callback {if(o->value()) {
|
||||||
|
progStatus.csma_enabled = true;
|
||||||
progdefaults.csma_enabled = true;
|
progdefaults.csma_enabled = true;
|
||||||
} else {
|
} else {
|
||||||
|
progStatus.csma_enabled = false;
|
||||||
progdefaults.csma_enabled = false;
|
progdefaults.csma_enabled = false;
|
||||||
}
|
}
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Used for BPQ32} xywh {471 112 115 20} down_box DOWN_BOX
|
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();}
|
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Box {} {
|
Fl_Box {} {
|
||||||
|
@ -7113,16 +7114,17 @@ KISS/ARQ/XML Addr/Port changes require program restart.}
|
||||||
callback {set_ip_to_default(KISS_IO);
|
callback {set_ip_to_default(KISS_IO);
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Returns IP Address and port
|
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();}
|
code0 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Input txtKiss_ip_address {
|
Fl_Input txtKiss_ip_address {
|
||||||
label Addr
|
label Addr
|
||||||
callback {progdefaults.kiss_address = o->value();
|
callback {progStatus.kiss_address = o->value();
|
||||||
|
progdefaults.kiss_address = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {IP Address for KISS interface
|
tooltip {IP Address for KISS interface
|
||||||
IP Address format: nnn.nnn.nnn.nnn
|
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);}
|
code0 {txtKiss_ip_address->labelsize(FL_NORMAL_SIZE);}
|
||||||
code1 {o->value(progdefaults.kiss_address.c_str());}
|
code1 {o->value(progdefaults.kiss_address.c_str());}
|
||||||
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
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 {
|
Fl_Counter cntKPSQLAttenuation {
|
||||||
label {KPSQL Attenuate}
|
label {KPSQL Attenuate}
|
||||||
callback {progdefaults.kpsql_attenuation = (int) o->value();
|
callback {progStatus.kpsql_attenuation = (int) o->value();
|
||||||
update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
|
progdefaults.kpsql_attenuation = (int) o->value();
|
||||||
|
update_kpsql_fractional_gain(progStatus.kpsql_attenuation);
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip Attenuation xywh {56 169 110 20} align 8 minimum 1 maximum 999 step 1 value 1
|
tooltip Attenuation xywh {56 169 110 20} align 8 minimum 1 maximum 999 step 1 value 1
|
||||||
code0 {o->value(progdefaults.kpsql_attenuation);}
|
code0 {o->value(progdefaults.kpsql_attenuation);}
|
||||||
|
@ -7141,9 +7144,10 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Input txtKiss_ip_io_port_no {
|
Fl_Input txtKiss_ip_io_port_no {
|
||||||
label {I/O}
|
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;}
|
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);}
|
code0 {txtKiss_ip_io_port_no->labelsize(FL_NORMAL_SIZE);}
|
||||||
code1 {o->value(progdefaults.kiss_io_port.c_str());}
|
code1 {o->value(progdefaults.kiss_io_port.c_str());}
|
||||||
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
|
@ -7151,7 +7155,8 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Counter cntBusyChannelSeconds {
|
Fl_Counter cntBusyChannelSeconds {
|
||||||
label Continue
|
label Continue
|
||||||
callback {progdefaults.busyChannelSeconds = (int) o->value();
|
callback {progStatus.busyChannelSeconds = (int) o->value();
|
||||||
|
progdefaults.busyChannelSeconds = (int) o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Continue after in seconds} xywh {56 145 110 20} align 8 minimum 1 maximum 999 step 1 value 1
|
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);}
|
code0 {o->value(progdefaults.busyChannelSeconds);}
|
||||||
|
@ -7160,35 +7165,44 @@ progdefaults.changed = true;}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnEnableBusyChannel {
|
Fl_Check_Button btnEnableBusyChannel {
|
||||||
label Busy
|
label Busy
|
||||||
callback {if(o->value())
|
callback {if(o->value()) {
|
||||||
|
progStatus.enableBusyChannel = true;
|
||||||
progdefaults.enableBusyChannel = true;
|
progdefaults.enableBusyChannel = true;
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
|
progStatus.enableBusyChannel = false;
|
||||||
progdefaults.enableBusyChannel = false;
|
progdefaults.enableBusyChannel = false;
|
||||||
|
}
|
||||||
progdefaults.changed = true;}
|
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);}
|
code0 {if(progdefaults.enableBusyChannel) o->value(true);}
|
||||||
code1 {else o->value(false);}
|
code1 {else o->value(false);}
|
||||||
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Input txtKiss_ip_out_port_no {
|
Fl_Input txtKiss_ip_out_port_no {
|
||||||
label O
|
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;}
|
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);}
|
code0 {txtKiss_ip_out_port_no->labelsize(FL_NORMAL_SIZE);}
|
||||||
code1 {o->value(progdefaults.kiss_out_port.c_str());}
|
code1 {o->value(progdefaults.kiss_out_port.c_str());}
|
||||||
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
class Fl_Input2
|
class Fl_Input2
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnEnable_dual_port {
|
Fl_Check_Button btnEnable_dual_port {
|
||||||
label {Dual Port}
|
label DP
|
||||||
callback {if(o->value())
|
callback {if(o->value()) {
|
||||||
|
progStatus.kiss_dual_port_enabled = true;
|
||||||
progdefaults.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.kiss_dual_port_enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;}
|
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);}
|
code0 {if(progdefaults.kiss_dual_port_enabled) o->value(true); else o->value(false);}
|
||||||
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
|
@ -7199,53 +7213,87 @@ progdefaults.changed = true;}
|
||||||
code0 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
code0 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Button btn_connect_kiss_io {
|
Fl_Button btn_connect_kiss_io {
|
||||||
label Connect
|
label Start
|
||||||
callback {connect_to_kiss_io();}
|
callback {connect_to_kiss_io(true);}
|
||||||
tooltip {Return KISS TCP IO connection to a Listening state} xywh {504 193 82 25}
|
tooltip {Return KISS TCP IO connection to a Listening state} xywh {504 165 82 25}
|
||||||
code0 {(progStatus.ip_lock || !progStatus.kiss_tcp_io) ? o->deactivate() : o->activate();}
|
code0 {(progStatus.ip_lock || !progdefaults.kiss_tcp_io) ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnKissTCPIO {
|
Fl_Check_Button btnKissTCPIO {
|
||||||
label TCP
|
label TCP
|
||||||
callback {if(o->value()) {
|
callback {if(o->value()) {
|
||||||
progdefaults.kiss_tcp_io = true;
|
|
||||||
progStatus.kiss_tcp_io = true;
|
progStatus.kiss_tcp_io = true;
|
||||||
|
progdefaults.kiss_tcp_io = true;
|
||||||
} else {
|
} else {
|
||||||
progStatus.kiss_tcp_io = false;
|
progStatus.kiss_tcp_io = false;
|
||||||
progdefaults.kiss_tcp_io = false;
|
progdefaults.kiss_tcp_io = false;
|
||||||
}
|
}
|
||||||
kiss_io_set_button_state(0);}
|
kiss_io_set_button_state(0);
|
||||||
tooltip {Check to enable TCP/IP IO Connection} xywh {425 145 60 15} down_box DOWN_BOX
|
progdefaults.changed = true;}
|
||||||
code0 {if(progStatus.kiss_tcp_io) o->value(true); else o->value(false);}
|
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();}
|
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnKissUDPIO {
|
Fl_Check_Button btnKissUDPIO {
|
||||||
label UDP
|
label UDP
|
||||||
callback {if(o->value()) {
|
callback {if(o->value()) {
|
||||||
progdefaults.kiss_tcp_io = false;
|
|
||||||
progStatus.kiss_tcp_io = false;
|
progStatus.kiss_tcp_io = false;
|
||||||
|
progdefaults.kiss_tcp_io = false;
|
||||||
} else {
|
} else {
|
||||||
progStatus.kiss_tcp_io = true;
|
progStatus.kiss_tcp_io = true;
|
||||||
progdefaults.kiss_tcp_io = true;
|
progdefaults.kiss_tcp_io = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
kiss_io_set_button_state(0);}
|
kiss_io_set_button_state(0);
|
||||||
tooltip {Check to enable UDP/IP IO} xywh {425 170 60 15} down_box DOWN_BOX
|
progdefaults.changed = true;}
|
||||||
code0 {if(progStatus.kiss_tcp_io) o->value(true); else o->value(false);}
|
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();}
|
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnKissTCPListen {
|
Fl_Check_Button btnKissTCPListen {
|
||||||
label {Listen / Bind}
|
label {Listen / Bind}
|
||||||
callback {if(o->value()) {
|
callback {if(o->value()) {
|
||||||
progdefaults.kiss_tcp_listen = true;
|
|
||||||
progStatus.kiss_tcp_listen = true;
|
progStatus.kiss_tcp_listen = true;
|
||||||
|
progdefaults.kiss_tcp_listen = true;
|
||||||
} else {
|
} else {
|
||||||
progStatus.kiss_tcp_listen = false;
|
progStatus.kiss_tcp_listen = false;
|
||||||
progdefaults.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
|
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);}
|
code0 {if(progStatus.kiss_tcp_listen) o->value(true); else o->value(false);}
|
||||||
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
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 {} {
|
Fl_Group {} {
|
||||||
label ARQ open
|
label ARQ open
|
||||||
|
@ -7267,7 +7315,7 @@ or name: i.e. localhost} xywh {56 229 230 25} align 8 when 1
|
||||||
label Port
|
label Port
|
||||||
callback {progdefaults.arq_port = o->value();
|
callback {progdefaults.arq_port = o->value();
|
||||||
progdefaults.changed = true;}
|
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);}
|
code0 {o->labelsize(FL_NORMAL_SIZE);}
|
||||||
code1 {o->value(progdefaults.arq_port.c_str());}
|
code1 {o->value(progdefaults.arq_port.c_str());}
|
||||||
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
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
|
label Port
|
||||||
callback {progdefaults.xmlrpc_port = o->value();
|
callback {progdefaults.xmlrpc_port = o->value();
|
||||||
progdefaults.changed = true;}
|
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);}
|
code0 {o->labelsize(FL_NORMAL_SIZE);}
|
||||||
code1 {o->value(progdefaults.xmlrpc_port.c_str());}
|
code1 {o->value(progdefaults.xmlrpc_port.c_str());}
|
||||||
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
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
|
label Port
|
||||||
callback {progdefaults.flrig_ip_port = o->value();
|
callback {progdefaults.flrig_ip_port = o->value();
|
||||||
progdefaults.changed = true;}
|
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);}
|
code0 {o->labelsize(FL_NORMAL_SIZE);}
|
||||||
code1 {o->value(progdefaults.flrig_ip_port.c_str());}
|
code1 {o->value(progdefaults.flrig_ip_port.c_str());}
|
||||||
code2 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
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 {
|
Fl_Input txt_fllog_ip_port {
|
||||||
label Port
|
label Port
|
||||||
callback {progdefaults.xmllog_port = o->value();}
|
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());}
|
code0 {o->value(progdefaults.xmllog_port.c_str());}
|
||||||
code1 {progStatus.ip_lock ? o->deactivate() : o->activate();}
|
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);
|
LOG_INFO("Invaild Modem for KISS I/O (%s)", mode_info[mode].sname);
|
||||||
|
|
||||||
if(!fl_choice2(_("Switch to ARQ I/O"), _("Yes"), _("No"), NULL)) {
|
int _yes = false;
|
||||||
btnEnable_kiss->value(false);
|
if(!progdefaults.kiss_io_modem_change_inhibit)
|
||||||
btnEnable_kiss->do_callback();
|
_yes = fl_choice2(_("Switch to ARQ I/O"), _("No"), _("Yes"), NULL);
|
||||||
|
|
||||||
btnEnable_arq->value(true);
|
if(_yes) {
|
||||||
btnEnable_arq->do_callback();
|
enable_arq();
|
||||||
} else {
|
} else {
|
||||||
std::string modem_name;
|
std::string modem_name;
|
||||||
modem_name.assign(mode_info[current_mode].sname);
|
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*) {
|
void cb_sldrSquelch(Fl_Slider* o, void*) {
|
||||||
|
|
||||||
if(progStatus.pwrsqlonoff) {
|
if(progStatus.kpsql_enabled) {
|
||||||
progStatus.sldrPwrSquelchValue = o->value();
|
progStatus.sldrPwrSquelchValue = o->value();
|
||||||
} else {
|
} else {
|
||||||
progStatus.sldrSquelchValue = o->value();
|
progStatus.sldrSquelchValue = o->value();
|
||||||
|
@ -3238,18 +3238,23 @@ void cbSQL(Fl_Widget *w, void *vi)
|
||||||
|
|
||||||
void cbPwrSQL(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_LOCK_D();
|
||||||
Fl_Button *b = (Fl_Button *)w;
|
Fl_Button *b = (Fl_Button *)w;
|
||||||
b->activate();
|
b->activate();
|
||||||
int v = b->value();
|
int v = b->value();
|
||||||
if(!v)
|
if(!v) {
|
||||||
sldrSquelch->value(progStatus.sldrSquelchValue);
|
sldrSquelch->value(progStatus.sldrSquelchValue);
|
||||||
else
|
progStatus.kpsql_enabled = false;
|
||||||
|
progdefaults.kpsql_enabled = false;
|
||||||
|
b->clear();
|
||||||
|
} else {
|
||||||
sldrSquelch->value(progStatus.sldrPwrSquelchValue);
|
sldrSquelch->value(progStatus.sldrPwrSquelchValue);
|
||||||
|
progStatus.kpsql_enabled = true;
|
||||||
|
progdefaults.kpsql_enabled = true;
|
||||||
|
b->set();
|
||||||
|
}
|
||||||
FL_UNLOCK_D();
|
FL_UNLOCK_D();
|
||||||
progStatus.pwrsqlonoff = v ? true : false;
|
|
||||||
} else {
|
} else {
|
||||||
FL_LOCK_D();
|
FL_LOCK_D();
|
||||||
Fl_Button *b = (Fl_Button *)w;
|
Fl_Button *b = (Fl_Button *)w;
|
||||||
|
@ -7193,8 +7198,8 @@ void create_fl_digi_main_primary() {
|
||||||
btnSQL->tooltip(_("Squelch"));
|
btnSQL->tooltip(_("Squelch"));
|
||||||
|
|
||||||
btnPSQL->selection_color(progdefaults.Sql1Color);
|
btnPSQL->selection_color(progdefaults.Sql1Color);
|
||||||
|
btnPSQL->value(progdefaults.kpsql_enabled);
|
||||||
btnPSQL->callback(cbPwrSQL, 0);
|
btnPSQL->callback(cbPwrSQL, 0);
|
||||||
btnPSQL->value(1);
|
|
||||||
btnPSQL->tooltip(_("Monitor KISS Pwr Squelch"));
|
btnPSQL->tooltip(_("Monitor KISS Pwr Squelch"));
|
||||||
|
|
||||||
if(progdefaults.data_io_enabled == KISS_IO)
|
if(progdefaults.data_io_enabled == KISS_IO)
|
||||||
|
@ -7837,7 +7842,7 @@ void create_fl_digi_main_WF_only() {
|
||||||
btnSQL->tooltip(_("Squelch"));
|
btnSQL->tooltip(_("Squelch"));
|
||||||
btnPSQL->selection_color(progdefaults.Sql1Color);
|
btnPSQL->selection_color(progdefaults.Sql1Color);
|
||||||
btnPSQL->callback(cbPwrSQL, 0);
|
btnPSQL->callback(cbPwrSQL, 0);
|
||||||
btnPSQL->value(1);
|
btnPSQL->value(progdefaults.kpsql_enabled);
|
||||||
btnPSQL->tooltip(_("Monitor KISS Pwr Squelch"));
|
btnPSQL->tooltip(_("Monitor KISS Pwr Squelch"));
|
||||||
|
|
||||||
if(progdefaults.data_io_enabled == KISS_IO)
|
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)
|
if (active_modem->get_mode() == MODE_IFKP)
|
||||||
ifkp_s2n_progress->value(metric);
|
ifkp_s2n_progress->value(metric);
|
||||||
|
|
||||||
if(progStatus.pwrsqlonoff) {
|
if(progStatus.kpsql_enabled) {
|
||||||
if ((metric >= progStatus.sldrPwrSquelchValue) || inhibit_tx_seconds)
|
if ((metric >= progStatus.sldrPwrSquelchValue) || inhibit_tx_seconds)
|
||||||
btnPSQL->selection_color(progdefaults.Sql2Color);
|
btnPSQL->selection_color(progdefaults.Sql2Color);
|
||||||
else
|
else
|
||||||
|
@ -9127,21 +9132,33 @@ void notch_off()
|
||||||
|
|
||||||
void enable_kiss(void)
|
void enable_kiss(void)
|
||||||
{
|
{
|
||||||
|
if(btnEnable_arq->value()) {
|
||||||
|
btnEnable_arq->value(false);
|
||||||
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
progdefaults.data_io_enabled = KISS_IO;
|
progdefaults.data_io_enabled = KISS_IO;
|
||||||
|
progStatus.data_io_enabled = KISS_IO;
|
||||||
data_io_enabled = KISS_IO;
|
data_io_enabled = KISS_IO;
|
||||||
|
|
||||||
btnEnable_kiss->value(true);
|
btnEnable_kiss->value(true);
|
||||||
btnEnable_arq->value(false);
|
|
||||||
enable_disable_kpsql();
|
enable_disable_kpsql();
|
||||||
}
|
}
|
||||||
|
|
||||||
void enable_arq(void)
|
void enable_arq(void)
|
||||||
{
|
{
|
||||||
|
if(btnEnable_kiss->value()) {
|
||||||
|
btnEnable_kiss->value(false);
|
||||||
|
}
|
||||||
|
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
progdefaults.data_io_enabled = ARQ_IO;
|
progdefaults.data_io_enabled = ARQ_IO;
|
||||||
|
progStatus.data_io_enabled = ARQ_IO;
|
||||||
data_io_enabled = ARQ_IO;
|
data_io_enabled = ARQ_IO;
|
||||||
|
|
||||||
btnEnable_arq->value(true);
|
btnEnable_arq->value(true);
|
||||||
btnEnable_kiss->value(false);
|
|
||||||
enable_disable_kpsql();
|
enable_disable_kpsql();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9150,12 +9167,16 @@ void enable_disable_kpsql(void)
|
||||||
if(progdefaults.data_io_enabled == KISS_IO) {
|
if(progdefaults.data_io_enabled == KISS_IO) {
|
||||||
check_kiss_modem();
|
check_kiss_modem();
|
||||||
btnPSQL->activate();
|
btnPSQL->activate();
|
||||||
|
if(progStatus.kpsql_enabled || progdefaults.kpsql_enabled) {
|
||||||
|
btnPSQL->value(true);
|
||||||
|
btnPSQL->do_callback();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
sldrSquelch->value(progStatus.sldrSquelchValue);
|
sldrSquelch->value(progStatus.sldrSquelchValue);
|
||||||
progStatus.pwrsqlonoff = false;
|
btnPSQL->value(false);
|
||||||
btnPSQL->value(0);
|
|
||||||
btnPSQL->deactivate();
|
btnPSQL->deactivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
progStatus.data_io_enabled = progdefaults.data_io_enabled;
|
progStatus.data_io_enabled = progdefaults.data_io_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9175,6 +9196,8 @@ void disable_config_p2p_io_widgets(void)
|
||||||
cntBusyChannelSeconds->deactivate();
|
cntBusyChannelSeconds->deactivate();
|
||||||
btnDefault_kiss_ip->deactivate();
|
btnDefault_kiss_ip->deactivate();
|
||||||
btn_restart_kiss->deactivate();
|
btn_restart_kiss->deactivate();
|
||||||
|
btnEnable_7bit_modem_inhibit->deactivate();
|
||||||
|
btnEnable_auto_connect->deactivate();
|
||||||
|
|
||||||
txtArq_ip_address->deactivate();
|
txtArq_ip_address->deactivate();
|
||||||
txtArq_ip_port_no->deactivate();
|
txtArq_ip_port_no->deactivate();
|
||||||
|
@ -9213,6 +9236,8 @@ void enable_config_p2p_io_widgets(void)
|
||||||
cntBusyChannelSeconds->activate();
|
cntBusyChannelSeconds->activate();
|
||||||
btnDefault_kiss_ip->activate();
|
btnDefault_kiss_ip->activate();
|
||||||
btn_restart_kiss->activate();
|
btn_restart_kiss->activate();
|
||||||
|
btnEnable_7bit_modem_inhibit->activate();
|
||||||
|
btnEnable_auto_connect->activate();
|
||||||
|
|
||||||
txtArq_ip_address->activate();
|
txtArq_ip_address->activate();
|
||||||
txtArq_ip_port_no->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_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_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_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_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_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 },
|
{ 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_HELL80, &feld_80modem, "HELL80", "Hell 80", "", "HELL80", "HL80", DISABLED_IO },
|
||||||
|
|
||||||
{ MODE_MFSK8, &mfsk8_modem, "MFSK8", "MFSK-8", "MFSK8", "MFSK8", "MK 8", 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_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_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_MFSK11, &mfsk11_modem, "MFSK11", "MFSK-11", "MFSK11", "MFSK11", "MK11", DISABLED_IO },
|
||||||
{ MODE_MFSK22, &mfsk22_modem, "MFSK22", "MFSK-22", "MFSK22", "MFSK22", "MK22", 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_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_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 },
|
{ 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)
|
std::ostream& operator<<(std::ostream& s, const qrg_mode_t& m)
|
||||||
{
|
{
|
||||||
return s << m.rfcarrier << ' '
|
return s << m.rfcarrier << ' '
|
||||||
<< m.rmode << ' '
|
<< m.rmode << ' '
|
||||||
<< m.carrier << ' '
|
<< m.carrier << ' '
|
||||||
<< mode_info[m.mode].sname << ' '
|
<< mode_info[m.mode].sname << ' '
|
||||||
<< m.usage;
|
<< m.usage;
|
||||||
}
|
}
|
||||||
|
|
|
@ -730,6 +730,8 @@ extern Fl_Button *btn_connect_kiss_io;
|
||||||
extern Fl_Check_Button *btnKissTCPIO;
|
extern Fl_Check_Button *btnKissTCPIO;
|
||||||
extern Fl_Check_Button *btnKissUDPIO;
|
extern Fl_Check_Button *btnKissUDPIO;
|
||||||
extern Fl_Check_Button *btnKissTCPListen;
|
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_address;
|
||||||
extern Fl_Input2 *txtArq_ip_port_no;
|
extern Fl_Input2 *txtArq_ip_port_no;
|
||||||
extern Fl_Button *btnDefault_arq_ip;
|
extern Fl_Button *btnDefault_arq_ip;
|
||||||
|
|
|
@ -1680,17 +1680,26 @@
|
||||||
"Number of seconds to wait before transmit resume", \
|
"Number of seconds to wait before transmit resume", \
|
||||||
3) \
|
3) \
|
||||||
ELEM_(int, kpsql_attenuation, "KPSQL_ATTENUATION", \
|
ELEM_(int, kpsql_attenuation, "KPSQL_ATTENUATION", \
|
||||||
"KPSQL Attenuation in 1/n of 1:1 Gain", \
|
"KPSQL Attenuation in 1/n of 1:1 Gain", \
|
||||||
2) \
|
2) \
|
||||||
ELEM_(bool, csma_enabled, "CSMA_ENABLED", \
|
ELEM_(bool, csma_enabled, "CSMA_ENABLED", \
|
||||||
"Use CSMA on heavy traffic channels (AX25)", \
|
"Use CSMA on heavy traffic channels (AX25)", \
|
||||||
true) \
|
true) \
|
||||||
ELEM_(bool, kiss_tcp_io, "KISS_TCP_IO", \
|
ELEM_(bool, kiss_tcp_io, "KISS_TCP_IO", \
|
||||||
"Connect kiss io via TCP/IP vise UDP/IP", \
|
"Connect kiss io via TCP/IP vise UDP/IP", \
|
||||||
false) \
|
false) \
|
||||||
ELEM_(bool, kiss_tcp_listen, "KISS_TCP_LISTEN", \
|
ELEM_(bool, kiss_tcp_listen, "KISS_TCP_LISTEN", \
|
||||||
"Listen for TCP connection (Server mode)", \
|
"Listen for TCP connection (Server mode)", \
|
||||||
false) \
|
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", \
|
ELEM_(std::string, flrig_ip_address, "FLRIG_IP_ADDRESS", \
|
||||||
"IP Address of flrig server", \
|
"IP Address of flrig server", \
|
||||||
DEFAULT_FLRIG_IP_ADDRESS) \
|
DEFAULT_FLRIG_IP_ADDRESS) \
|
||||||
|
|
|
@ -29,8 +29,6 @@
|
||||||
|
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
|
|
||||||
#define IO_CONNECT_STR _("Connect")
|
|
||||||
#define IO_DISCONNECT_STR _("Disc")
|
|
||||||
#define IO_START_STR _("Start")
|
#define IO_START_STR _("Start")
|
||||||
#define IO_STOP_STR _("Stop")
|
#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
|
// This variable indepent of progdefaults.data_io_enabled
|
||||||
// and progStatus.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 is one way assignment as we dont want to save all of the available states
|
||||||
// this variable will have.
|
// this variable will have.
|
||||||
extern int data_io_enabled; // Located in kiss_io.cxx
|
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);
|
||||||
extern void WriteKISS(const char *data, size_t size);
|
extern void WriteKISS(const char *data, size_t size);
|
||||||
extern void WriteKISS(std::string data);
|
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 void check_kiss_modem(void);
|
||||||
extern int kiss_get_char(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 bcast_trxc_kiss_frame(void);
|
||||||
extern void update_kpsql_fractional_gain(int value);
|
extern void update_kpsql_fractional_gain(int value);
|
||||||
extern void kiss_io_set_button_state(void *);
|
extern void kiss_io_set_button_state(void *);
|
||||||
extern void connect_to_kiss_io(void);
|
extern void connect_to_kiss_io(bool);
|
||||||
|
|
||||||
// ARQ implementation
|
// ARQ implementation
|
||||||
extern void arq_init(void);
|
extern void arq_init(void);
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
#define _FILTER_H
|
#define _FILTER_H
|
||||||
|
|
||||||
#include "complex.h"
|
#include "complex.h"
|
||||||
|
#ifndef M_PI
|
||||||
|
#define M_PI (3.1415926535897932385)
|
||||||
|
#endif
|
||||||
|
|
||||||
//=====================================================================
|
//=====================================================================
|
||||||
// FIR filters
|
// FIR filters
|
||||||
|
|
|
@ -55,6 +55,9 @@
|
||||||
#define KISS_BUFFER_FACTOR 2
|
#define KISS_BUFFER_FACTOR 2
|
||||||
#define HDLC_BUFFER_FACTOR 3
|
#define HDLC_BUFFER_FACTOR 3
|
||||||
|
|
||||||
|
#define KISS_CONNECT_RETRY_COUNT 10
|
||||||
|
#define KISS_RETRY_WAIT_TIME 1000
|
||||||
|
|
||||||
#define MAX_TEMP_BUFFER_SIZE 32000
|
#define MAX_TEMP_BUFFER_SIZE 32000
|
||||||
|
|
||||||
#define TX_BUFFER_TIMEOUT (60 * 10) // Ten minute timeout
|
#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_trxs_bc_mode(char *);
|
||||||
static void set_txbe_bc_mode(char *);
|
static void set_txbe_bc_mode(char *);
|
||||||
static void set_wf_cursor_pos(char *);
|
static void set_wf_cursor_pos(char *);
|
||||||
|
static void set_reply_tx_lock(char *);
|
||||||
|
|
||||||
static void TransmitCSMA();
|
static void TransmitCSMA();
|
||||||
static void WriteToHostBuffered(const char *data, size_t size);
|
static void WriteToHostBuffered(const char *data, size_t size);
|
||||||
//static void WriteToHostBuffered(const char *data);
|
//static void WriteToHostBuffered(const char *data);
|
||||||
|
@ -167,6 +172,8 @@ void ReadFromHostSocket(void);
|
||||||
//static void set_busy_state_bc_mode(char * arg);
|
//static void set_busy_state_bc_mode(char * arg);
|
||||||
static void reply_busy_state(char * arg);
|
static void reply_busy_state(char * arg);
|
||||||
|
|
||||||
|
bool kiss_thread_running(void);
|
||||||
|
|
||||||
#ifdef KISS_RX_THREAD
|
#ifdef KISS_RX_THREAD
|
||||||
static void *ReadFromHostSocket(void *args);
|
static void *ReadFromHostSocket(void *args);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -36,6 +36,9 @@
|
||||||
#else
|
#else
|
||||||
# include <winsock2.h>
|
# include <winsock2.h>
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
|
# ifndef ENOTCONN
|
||||||
|
# define ENOTCONN WSAENOTCONN
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
|
@ -80,7 +80,6 @@ struct status {
|
||||||
double sldrPwrSquelchValue;
|
double sldrPwrSquelchValue;
|
||||||
bool afconoff;
|
bool afconoff;
|
||||||
bool sqlonoff;
|
bool sqlonoff;
|
||||||
bool pwrsqlonoff;
|
|
||||||
int scopeX;
|
int scopeX;
|
||||||
int scopeY;
|
int scopeY;
|
||||||
bool scopeVisible;
|
bool scopeVisible;
|
||||||
|
@ -166,9 +165,12 @@ struct status {
|
||||||
bool csma_enabled;
|
bool csma_enabled;
|
||||||
bool kiss_tcp_io;
|
bool kiss_tcp_io;
|
||||||
bool kiss_tcp_listen;
|
bool kiss_tcp_listen;
|
||||||
|
bool kpsql_enabled;
|
||||||
bool ip_lock;
|
bool ip_lock;
|
||||||
|
bool kiss_io_modem_change_inhibit;
|
||||||
double squelch_value;
|
double squelch_value;
|
||||||
bool psk8DCDShortFlag;
|
bool psk8DCDShortFlag;
|
||||||
|
|
||||||
std::string browser_search;
|
std::string browser_search;
|
||||||
|
|
||||||
bool meters;
|
bool meters;
|
||||||
|
|
|
@ -24,13 +24,27 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
# include <pthread.h>
|
# include <pthread.h>
|
||||||
#else
|
#endif
|
||||||
# if !HAVE_CLOCK_GETTIME
|
|
||||||
enum clockid_t { CLOCK_REALTIME, CLOCK_MONOTONIC };
|
#if !HAVE_CLOCK_GETTIME
|
||||||
int clock_gettime(clockid_t clock_id, struct timespec* tp);
|
// enum clockid_t { CLOCK_REALTIME, CLOCK_MONOTONIC };
|
||||||
# endif
|
#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
|
#endif
|
||||||
|
|
||||||
struct timespec operator+(const struct timespec &t0, const double &t);
|
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)
|
void toggle_io_port_selection(int io_mode)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch(io_mode) {
|
switch(io_mode) {
|
||||||
case ARQ_IO:
|
case ARQ_IO:
|
||||||
btnEnable_kiss->do_callback();
|
enable_arq();
|
||||||
btnEnable_arq->do_callback();
|
progdefaults.changed = false;
|
||||||
progdefaults.changed = false;
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
case KISS_IO:
|
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;
|
progdefaults.changed = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -348,12 +359,12 @@ void delayed_startup(void *)
|
||||||
data_io_enabled = DISABLED_IO;
|
data_io_enabled = DISABLED_IO;
|
||||||
|
|
||||||
arq_init();
|
arq_init();
|
||||||
//kiss_init();
|
|
||||||
if (progdefaults.connect_to_maclogger) maclogger_init();
|
if (progdefaults.connect_to_maclogger) maclogger_init();
|
||||||
data_io_enabled = progStatus.data_io_enabled;
|
data_io_enabled = progStatus.data_io_enabled;
|
||||||
|
|
||||||
|
|
||||||
toggle_io_port_selection(data_io_enabled);
|
toggle_io_port_selection(data_io_enabled);
|
||||||
|
disable_config_p2p_io_widgets();
|
||||||
|
|
||||||
notify_start();
|
notify_start();
|
||||||
|
|
||||||
|
@ -843,10 +854,10 @@ void generate_option_help(void) {
|
||||||
<< " The default is: " << progdefaults.data_io_enabled << "\n\n"
|
<< " The default is: " << progdefaults.data_io_enabled << "\n\n"
|
||||||
|
|
||||||
<< " --kiss-server-address HOSTNAME\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"
|
<< " The default is: " << progdefaults.kiss_address << "\n\n"
|
||||||
<< " --kiss-server-port-io I/O PORT\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"
|
<< " The default is: " << progdefaults.kiss_io_port << "\n\n"
|
||||||
<< " --kiss-server-port-o Output PORT\n"
|
<< " --kiss-server-port-o Output PORT\n"
|
||||||
<< " Set the KISS UDP server 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 <cstdlib>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
//#undef NDEBUG
|
//#undef NDEBUG
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
#include "socket.h"
|
#include "socket.h"
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_GETADDRINFO && !defined(AI_NUMERICSERV)
|
#if HAVE_GETADDRINFO && !defined(AI_NUMERICSERV)
|
||||||
# define AI_NUMERICSERV 0
|
# define AI_NUMERICSERV 0
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -119,7 +119,6 @@ status progStatus = {
|
||||||
5.0, // double sldrPwrSquelchValue
|
5.0, // double sldrPwrSquelchValue
|
||||||
true, // bool afconoff
|
true, // bool afconoff
|
||||||
true, // bool sqlonoff
|
true, // bool sqlonoff
|
||||||
false, // bool pwrsqlonoff
|
|
||||||
50, // int scopeX;
|
50, // int scopeX;
|
||||||
50, // int scopeY;
|
50, // int scopeY;
|
||||||
false, // bool scopeVisible;
|
false, // bool scopeVisible;
|
||||||
|
@ -201,6 +200,8 @@ status progStatus = {
|
||||||
progdefaults.csma_enabled,
|
progdefaults.csma_enabled,
|
||||||
progdefaults.kiss_tcp_io,
|
progdefaults.kiss_tcp_io,
|
||||||
progdefaults.kiss_tcp_listen,
|
progdefaults.kiss_tcp_listen,
|
||||||
|
progdefaults.kpsql_enabled,
|
||||||
|
progdefaults.kiss_io_modem_change_inhibit,
|
||||||
true,
|
true,
|
||||||
0.0,
|
0.0,
|
||||||
progdefaults.psk8DCDShortFlag,
|
progdefaults.psk8DCDShortFlag,
|
||||||
|
@ -326,7 +327,8 @@ void status::saveLastState()
|
||||||
csma_enabled = progdefaults.csma_enabled;
|
csma_enabled = progdefaults.csma_enabled;
|
||||||
kiss_tcp_io = progdefaults.kiss_tcp_io;
|
kiss_tcp_io = progdefaults.kiss_tcp_io;
|
||||||
kiss_tcp_listen = progdefaults.kiss_tcp_listen;
|
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;
|
squelch_value = 0;
|
||||||
|
|
||||||
Fl_Preferences spref(HomeDir.c_str(), "w1hkj.com", PACKAGE_TARNAME);
|
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("mode_name", mode_info[lastmode].sname);
|
||||||
spref.set("squelch_enabled", sqlonoff);
|
spref.set("squelch_enabled", sqlonoff);
|
||||||
spref.set("pwr_squelch_enabled", pwrsqlonoff);
|
|
||||||
spref.set("squelch_level", sldrSquelchValue);
|
spref.set("squelch_level", sldrSquelchValue);
|
||||||
spref.set("pwr_squelch_level", sldrPwrSquelchValue);
|
spref.set("pwr_squelch_level", sldrPwrSquelchValue);
|
||||||
spref.set("afc_enabled", afconoff);
|
spref.set("afc_enabled", afconoff);
|
||||||
|
@ -479,7 +480,7 @@ if (!bWF_only) {
|
||||||
spref.set("kiss_dual_port_enabled", kiss_dual_port_enabled);
|
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("data_io_enabled", data_io_enabled);
|
||||||
|
|
||||||
spref.set("ax25_decode_enabled", ax25_decode_enabled);
|
spref.set("ax25_decode_enabled", ax25_decode_enabled);
|
||||||
|
@ -489,6 +490,8 @@ if (!bWF_only) {
|
||||||
spref.set("csma_enabled", csma_enabled);
|
spref.set("csma_enabled", csma_enabled);
|
||||||
spref.set("kiss_tcp_io", kiss_tcp_io);
|
spref.set("kiss_tcp_io", kiss_tcp_io);
|
||||||
spref.set("kiss_tcp_listen", kiss_tcp_listen);
|
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());
|
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("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("squelch_level", i, sldrSquelchValue); sldrSquelchValue = i;
|
||||||
spref.get("pwr_squelch_level", i, sldrPwrSquelchValue); sldrPwrSquelchValue = i;
|
spref.get("pwr_squelch_level", i, sldrPwrSquelchValue); sldrPwrSquelchValue = i;
|
||||||
spref.get("afc_enabled", i, afconoff); afconoff = 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;
|
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("data_io_enabled", i, data_io_enabled); data_io_enabled = i;
|
||||||
|
|
||||||
spref.get("ax25_decode_enabled", i, ax25_decode_enabled); ax25_decode_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("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_io", i, kiss_tcp_io); kiss_tcp_io = i;
|
||||||
spref.get("kiss_tcp_listen", i, kiss_tcp_listen); kiss_tcp_listen = 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;
|
spref.get("psk8DCDShortFlag", i, psk8DCDShortFlag); psk8DCDShortFlag = i;
|
||||||
|
|
||||||
|
@ -826,13 +830,13 @@ void status::initLastState()
|
||||||
data_io_enabled = ARQ_IO;
|
data_io_enabled = ARQ_IO;
|
||||||
progdefaults.data_io_enabled = ARQ_IO;
|
progdefaults.data_io_enabled = ARQ_IO;
|
||||||
progStatus.data_io_enabled = ARQ_IO;
|
progStatus.data_io_enabled = ARQ_IO;
|
||||||
pwrsqlonoff = false;
|
kpsql_enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
btnSQL->value(sqlonoff);
|
btnSQL->value(sqlonoff);
|
||||||
btnPSQL->value(pwrsqlonoff);
|
btnPSQL->value(kpsql_enabled);
|
||||||
|
|
||||||
if(pwrsqlonoff)
|
if(kpsql_enabled)
|
||||||
sldrSquelch->value(sldrPwrSquelchValue);
|
sldrSquelch->value(sldrPwrSquelchValue);
|
||||||
else
|
else
|
||||||
sldrSquelch->value(sldrSquelchValue);
|
sldrSquelch->value(sldrSquelchValue);
|
||||||
|
|
|
@ -118,6 +118,15 @@ void xmlrpc_rig_set_qsy(long long rfc)
|
||||||
// set / get pairs
|
// 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
|
// 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 ptt_state = 0;
|
||||||
|
|
||||||
static int new_ptt = -1;
|
static int new_ptt = -1;
|
||||||
|
static int last_new_ptt = -1;
|
||||||
|
|
||||||
void exec_flrig_ptt() {
|
void exec_flrig_ptt() {
|
||||||
if (!connected_to_flrig) {
|
if (!connected_to_flrig) {
|
||||||
|
@ -149,7 +159,7 @@ void exec_flrig_ptt() {
|
||||||
wait_ptt = true;
|
wait_ptt = true;
|
||||||
wait_ptt_timeout = 10;
|
wait_ptt_timeout = 10;
|
||||||
ptt_state = new_ptt;
|
ptt_state = new_ptt;
|
||||||
LOG_INFO("ptt %s in %d msec",
|
LOG_INFO("ptt %s in %d msec",
|
||||||
ptt_state ? "ON" : "OFF",
|
ptt_state ? "ON" : "OFF",
|
||||||
i*50 + (j + 1)*20);
|
i*50 + (j + 1)*20);
|
||||||
new_ptt = -1;
|
new_ptt = -1;
|
||||||
|
@ -159,10 +169,14 @@ void exec_flrig_ptt() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_ptt = false;
|
wait_ptt = false;
|
||||||
wait_ptt_timeout = 0;
|
wait_ptt_timeout = 0;
|
||||||
LOG_ERROR("%s", "rig.set_ptt failed (3)");
|
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;
|
new_ptt = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -535,7 +549,7 @@ void xmlrpc_rig_post_bws(void *)
|
||||||
|
|
||||||
string labels1 = bws_result[1][0];
|
string labels1 = bws_result[1][0];
|
||||||
static char btn1_label[2];
|
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->label(btn1_label);
|
||||||
qso_btnBW1->redraw_label();
|
qso_btnBW1->redraw_label();
|
||||||
qso_btnBW1->redraw();
|
qso_btnBW1->redraw();
|
||||||
|
@ -567,7 +581,7 @@ void xmlrpc_rig_post_bws(void *)
|
||||||
|
|
||||||
string labels2 = bws_result[0][0];
|
string labels2 = bws_result[0][0];
|
||||||
static char btn2_label[2];
|
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->label(btn2_label);
|
||||||
qso_btnBW2->redraw_label();
|
qso_btnBW2->redraw_label();
|
||||||
qso_btnBW2->redraw();
|
qso_btnBW2->redraw();
|
||||||
|
|
|
@ -313,7 +313,7 @@ void modem::set_metric(double m)
|
||||||
void modem::display_metric(double m)
|
void modem::display_metric(double m)
|
||||||
{
|
{
|
||||||
set_metric(m);
|
set_metric(m);
|
||||||
if(!progStatus.pwrsqlonoff)
|
if(!progStatus.kpsql_enabled)
|
||||||
::global_display_metric(m);
|
::global_display_metric(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue