flrig auto off

* add ability to shutdown flrig/xcvr during fldigi
    shutdown
This commit is contained in:
David Freese 2020-02-28 11:59:14 -06:00
parent 8cc4f134c5
commit ece3e24866
7 changed files with 75 additions and 32 deletions

View file

@ -5785,9 +5785,9 @@ static void cb_btn_reconnect_flrig_server_mirror(Fl_Button*, void*) {
reconnect_to_flrig();
}
Fl_Check_Button *btn_fldigi_client_to_fldigi=(Fl_Check_Button *)0;
Fl_Check_Button *btn_fldigi_client_to_flrig=(Fl_Check_Button *)0;
static void cb_btn_fldigi_client_to_fldigi(Fl_Check_Button* o, void*) {
static void cb_btn_fldigi_client_to_flrig(Fl_Check_Button* o, void*) {
progdefaults.fldigi_client_to_flrig=o->value();
if (o->value()) {
progdefaults.chkUSEHAMLIBis = false;
@ -5798,6 +5798,13 @@ if (o->value()) {
progdefaults.changed=true;
}
Fl_Check_Button *btn_flrig_auto_shutdown=(Fl_Check_Button *)0;
static void cb_btn_flrig_auto_shutdown(Fl_Check_Button* o, void*) {
progdefaults.flrig_auto_shutdown=o->value();
progdefaults.changed=true;
}
Fl_Group *grpRigCat=(Fl_Group *)0;
Fl_Check_Button *chkUSERIGCAT=(Fl_Check_Button *)0;
@ -5805,7 +5812,7 @@ Fl_Check_Button *chkUSERIGCAT=(Fl_Check_Button *)0;
static void cb_chkUSERIGCAT(Fl_Check_Button* o, void*) {
if (o->value() == 1) {
chkUSEHAMLIB->value(0);
btn_fldigi_client_to_fldigi->value(0);
btn_fldigi_client_to_flrig->value(0);
progdefaults.chkUSERIGCATis = true;
progdefaults.fldigi_client_to_flrig = false;
btnInitRIGCAT->labelcolor(FL_RED);
@ -6363,7 +6370,7 @@ static void cb_chkUSEHAMLIB(Fl_Check_Button* o, void*) {
progdefaults.chkUSEHAMLIBis = o->value();
if (o->value() == 1) {
chkUSERIGCAT->value(0);
btn_fldigi_client_to_fldigi->value(0);
btn_fldigi_client_to_flrig->value(0);
progdefaults.chkUSERIGCATis = false;
progdefaults.fldigi_client_to_flrig = false;
btnInitHAMLIB->labelcolor(FL_RED);
@ -14827,11 +14834,11 @@ ed)"));
grpRigFlrig->box(FL_ENGRAVED_BOX);
grpRigFlrig->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
grpRigFlrig->hide();
{ Fl_Group* o = new Fl_Group(209, 196, 580, 90, _("\"Disable PTT keys modem if multiple instances of fldigi (client)\nare connec\
{ Fl_Group* o = new Fl_Group(209, 233, 580, 90, _("\"Disable PTT keys modem if multiple instances of fldigi (client)\nare connec\
ted to a single flrig (server)."));
o->box(FL_ENGRAVED_BOX);
o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
{ Fl_Check_Button* o = chk_flrig_keys_modem = new Fl_Check_Button(439, 244, 183, 20, _("Flrig PTT keys modem"));
{ Fl_Check_Button* o = chk_flrig_keys_modem = new Fl_Check_Button(439, 281, 183, 20, _("Flrig PTT keys modem"));
chk_flrig_keys_modem->tooltip(_("\" \""));
chk_flrig_keys_modem->down_box(FL_DOWN_BOX);
chk_flrig_keys_modem->callback((Fl_Callback*)cb_chk_flrig_keys_modem);
@ -14839,15 +14846,15 @@ ted to a single flrig (server)."));
} // Fl_Check_Button* chk_flrig_keys_modem
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(209, 111, 580, 81, _("flrig xmlrpc server parameters\nthese controls are mirrored on the IO configu\
{ Fl_Group* o = new Fl_Group(209, 148, 580, 81, _("flrig xmlrpc server parameters\nthese controls are mirrored on the IO configu\
ration tab"));
o->box(FL_ENGRAVED_FRAME);
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
{ btnDefault_flrig_ip_mirror = new Fl_Button(613, 157, 73, 24, _("Default"));
{ btnDefault_flrig_ip_mirror = new Fl_Button(613, 194, 73, 24, _("Default"));
btnDefault_flrig_ip_mirror->tooltip(_("Returns IP Address and port\nnumber to the default value."));
btnDefault_flrig_ip_mirror->callback((Fl_Callback*)cb_btnDefault_flrig_ip_mirror);
} // Fl_Button* btnDefault_flrig_ip_mirror
{ Fl_Input2* o = txt_flrig_ip_address_mirror = new Fl_Input2(244, 157, 230, 24, _("Addr"));
{ Fl_Input2* o = txt_flrig_ip_address_mirror = new Fl_Input2(244, 194, 230, 24, _("Addr"));
txt_flrig_ip_address_mirror->tooltip(_("IP Address for flrig interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: \
i.e. localhost"));
txt_flrig_ip_address_mirror->box(FL_DOWN_BOX);
@ -14863,7 +14870,7 @@ i.e. localhost"));
o->labelsize(FL_NORMAL_SIZE);
o->value(progdefaults.flrig_ip_address.c_str());
} // Fl_Input2* txt_flrig_ip_address_mirror
{ Fl_Input2* o = txt_flrig_ip_port_mirror = new Fl_Input2(518, 157, 55, 24, _("Port"));
{ Fl_Input2* o = txt_flrig_ip_port_mirror = new Fl_Input2(518, 194, 55, 24, _("Port"));
txt_flrig_ip_port_mirror->tooltip(_("IP Address Port Number"));
txt_flrig_ip_port_mirror->box(FL_DOWN_BOX);
txt_flrig_ip_port_mirror->color(FL_BACKGROUND2_COLOR);
@ -14878,21 +14885,27 @@ i.e. localhost"));
o->labelsize(FL_NORMAL_SIZE);
o->value(progdefaults.flrig_ip_port.c_str());
} // Fl_Input2* txt_flrig_ip_port_mirror
{ btn_reconnect_flrig_server_mirror = new Fl_Button(693, 157, 82, 24, _("Reconnect"));
{ btn_reconnect_flrig_server_mirror = new Fl_Button(693, 194, 82, 24, _("Reconnect"));
btn_reconnect_flrig_server_mirror->tooltip(_("Press only if you change the address/port"));
btn_reconnect_flrig_server_mirror->callback((Fl_Callback*)cb_btn_reconnect_flrig_server_mirror);
} // Fl_Button* btn_reconnect_flrig_server_mirror
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(209, 54, 580, 52, _("flrig is the preferred method of tranceiver control"));
{ Fl_Group* o = new Fl_Group(209, 54, 580, 90, _("flrig is the preferred method of tranceiver control"));
o->box(FL_ENGRAVED_BOX);
o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
{ Fl_Check_Button* o = btn_fldigi_client_to_fldigi = new Fl_Check_Button(234, 81, 70, 15, _("Enable flrig xcvr control with fldigi as client"));
btn_fldigi_client_to_fldigi->tooltip(_("Disable if flrig not used."));
btn_fldigi_client_to_fldigi->down_box(FL_DOWN_BOX);
btn_fldigi_client_to_fldigi->callback((Fl_Callback*)cb_btn_fldigi_client_to_fldigi);
{ Fl_Check_Button* o = btn_fldigi_client_to_flrig = new Fl_Check_Button(234, 81, 70, 15, _("Enable flrig xcvr control with fldigi as client"));
btn_fldigi_client_to_flrig->tooltip(_("Disable if flrig not used."));
btn_fldigi_client_to_flrig->down_box(FL_DOWN_BOX);
btn_fldigi_client_to_flrig->callback((Fl_Callback*)cb_btn_fldigi_client_to_flrig);
o->value(progdefaults.fldigi_client_to_flrig);
} // Fl_Check_Button* btn_fldigi_client_to_fldigi
} // Fl_Check_Button* btn_fldigi_client_to_flrig
{ Fl_Check_Button* o = btn_flrig_auto_shutdown = new Fl_Check_Button(234, 112, 70, 15, _("Shutdown flrig with fldigi"));
btn_flrig_auto_shutdown->tooltip(_("Disable if flrig not used."));
btn_flrig_auto_shutdown->down_box(FL_DOWN_BOX);
btn_flrig_auto_shutdown->callback((Fl_Callback*)cb_btn_flrig_auto_shutdown);
o->value(progdefaults.flrig_auto_shutdown);
} // Fl_Check_Button* btn_flrig_auto_shutdown
o->end();
} // Fl_Group* o
CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/flrig"));

View file

@ -2326,7 +2326,7 @@ progdefaults.changed = true;}
}
}
Fl_Group {} {
label {Logging/MacLogger} selected
label {Logging/MacLogger}
xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide
code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/MacLogger"));}
code1 {config_pages.push_back(p);}
@ -5524,7 +5524,7 @@ progdefaults.changed = true;} open
}
}
Fl_Group {} {
label {Modem/TTY/nanoIO} open
label {Modem/TTY/nanoIO}
xywh {200 0 600 350} box FLAT_BOX align 21 hide
code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/nanoIO"));}
code1 {config_pages.push_back(p);}
@ -7443,20 +7443,20 @@ progdefaults.changed = true;} open
Fl_Group {} {
label {"Disable PTT keys modem if multiple instances of fldigi (client)
are connected to a single flrig (server).} open
xywh {209 196 580 90} box ENGRAVED_BOX align 17
xywh {209 233 580 90} box ENGRAVED_BOX align 17
} {
Fl_Check_Button chk_flrig_keys_modem {
label {Flrig PTT keys modem}
callback {progdefaults.flrig_keys_modem = o->value();
progdefaults.changed = true;}
tooltip {" "} xywh {439 244 183 20} down_box DOWN_BOX
tooltip {" "} xywh {439 281 183 20} down_box DOWN_BOX
code0 {o->value(progdefaults.flrig_keys_modem);}
}
}
Fl_Group {} {
label {flrig xmlrpc server parameters
these controls are mirrored on the IO configuration tab} open
xywh {209 111 580 81} box ENGRAVED_FRAME align 21
xywh {209 148 580 81} box ENGRAVED_FRAME align 21
} {
Fl_Button btnDefault_flrig_ip_mirror {
label Default
@ -7465,7 +7465,7 @@ txt_flrig_ip_address_mirror->value(progdefaults.flrig_ip_address.c_str());
txt_flrig_ip_port_mirror->value(progdefaults.flrig_ip_port.c_str());
progdefaults.changed = true;}
tooltip {Returns IP Address and port
number to the default value.} xywh {613 157 73 24}
number to the default value.} xywh {613 194 73 24}
}
Fl_Input txt_flrig_ip_address_mirror {
label Addr
@ -7474,7 +7474,7 @@ txt_flrig_ip_address->value(progdefaults.flrig_ip_address.c_str());
progdefaults.changed = true;}
tooltip {IP Address for flrig interface
IP Address format: nnn.nnn.nnn.nnn
or name: i.e. localhost} xywh {244 157 230 24} align 8 when 1
or name: i.e. localhost} xywh {244 194 230 24} align 8 when 1
code0 {o->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.flrig_ip_address.c_str());}
class Fl_Input2
@ -7484,7 +7484,7 @@ or name: i.e. localhost} xywh {244 157 230 24} align 8 when 1
callback {progdefaults.flrig_ip_port = o->value();
txt_flrig_ip_port->value(progdefaults.flrig_ip_port.c_str());
progdefaults.changed = true;}
tooltip {IP Address Port Number} xywh {518 157 55 24} align 8 when 1
tooltip {IP Address Port Number} xywh {518 194 55 24} align 8 when 1
code0 {o->labelsize(FL_NORMAL_SIZE);}
code1 {o->value(progdefaults.flrig_ip_port.c_str());}
class Fl_Input2
@ -7492,15 +7492,15 @@ progdefaults.changed = true;}
Fl_Button btn_reconnect_flrig_server_mirror {
label Reconnect
callback {reconnect_to_flrig();}
tooltip {Press only if you change the address/port} xywh {693 157 82 24}
tooltip {Press only if you change the address/port} xywh {693 194 82 24}
code0 {\#include "rigsupport.h"}
}
}
Fl_Group {} {
label {flrig is the preferred method of tranceiver control} open
xywh {209 54 580 52} box ENGRAVED_BOX align 17
xywh {209 54 580 90} box ENGRAVED_BOX align 17
} {
Fl_Check_Button btn_fldigi_client_to_fldigi {
Fl_Check_Button btn_fldigi_client_to_flrig {
label {Enable flrig xcvr control with fldigi as client}
callback {progdefaults.fldigi_client_to_flrig=o->value();
if (o->value()) {
@ -7513,6 +7513,13 @@ progdefaults.changed=true;}
tooltip {Disable if flrig not used.} xywh {234 81 70 15} down_box DOWN_BOX
code0 {o->value(progdefaults.fldigi_client_to_flrig);}
}
Fl_Check_Button btn_flrig_auto_shutdown {
label {Shutdown flrig with fldigi}
callback {progdefaults.flrig_auto_shutdown=o->value();
progdefaults.changed=true;}
tooltip {Disable if flrig not used.} xywh {234 112 70 15} down_box DOWN_BOX
code0 {o->value(progdefaults.flrig_auto_shutdown);}
}
}
}
Fl_Group grpRigCat {
@ -7526,7 +7533,7 @@ progdefaults.changed=true;}
label {Use RigCAT}
callback {if (o->value() == 1) {
chkUSEHAMLIB->value(0);
btn_fldigi_client_to_fldigi->value(0);
btn_fldigi_client_to_flrig->value(0);
progdefaults.chkUSERIGCATis = true;
progdefaults.fldigi_client_to_flrig = false;
btnInitRIGCAT->labelcolor(FL_RED);
@ -8189,7 +8196,7 @@ progdefaults.changed=true;}
callback {progdefaults.chkUSEHAMLIBis = o->value();
if (o->value() == 1) {
chkUSERIGCAT->value(0);
btn_fldigi_client_to_fldigi->value(0);
btn_fldigi_client_to_flrig->value(0);
progdefaults.chkUSERIGCATis = false;
progdefaults.fldigi_client_to_flrig = false;
btnInitHAMLIB->labelcolor(FL_RED);
@ -8199,7 +8206,7 @@ if (o->value() == 1) {
progdefaults.initInterface();
}
progdefaults.changed = true;}
progdefaults.changed = true;} selected
tooltip {Hamlib used for rig control} xywh {451 31 100 20} down_box DOWN_BOX
}
Fl_Group grpHamlib {open

View file

@ -692,7 +692,8 @@ extern Fl_Button *btnDefault_flrig_ip_mirror;
extern Fl_Input2 *txt_flrig_ip_address_mirror;
extern Fl_Input2 *txt_flrig_ip_port_mirror;
extern Fl_Button *btn_reconnect_flrig_server_mirror;
extern Fl_Check_Button *btn_fldigi_client_to_fldigi;
extern Fl_Check_Button *btn_fldigi_client_to_flrig;
extern Fl_Check_Button *btn_flrig_auto_shutdown;
extern Fl_Group *grpRigCat;
extern Fl_Check_Button *chkUSERIGCAT;
extern Fl_Group *grpRigCAT;

View file

@ -1225,6 +1225,9 @@
ELEM_(bool, fldigi_client_to_flrig, "CLIENT_TO_FLRIG", \
"True if flrig xmlrpc server is used for xcvr control", \
false) \
ELEM_(bool, flrig_auto_shutdown, "FLRIG_AUTO_SHUTDOWN", \
"True to shutdown flrig when closing fldigi", \
false) \
ELEM_(bool, btnusb, "BTNUSB", \
"This setting is currently unused", \
true) \

View file

@ -87,6 +87,7 @@ extern bool connected_to_flrig;
extern void xmlrpc_rig_set_qsy(long long rfc);
extern bool xmlrpc_USB();
extern void xmlrpc_send_command(std::string cmd);
extern void xmlrpc_shutdown_flrig();
extern void FLRIG_set_flrig_ab(int n);
extern void FLRIG_start_flrig_thread();

View file

@ -1257,6 +1257,10 @@ void exit_process() {
kiss_close(false);
maclogger_close();
if (progdefaults.flrig_auto_shutdown)
xmlrpc_shutdown_flrig();
XML_RPC_Server::stop();
if (progdefaults.usepskrep)

View file

@ -1083,3 +1083,17 @@ void xmlrpc_send_command(std::string cmd)
} catch (...) {}
}
void xmlrpc_shutdown_flrig()
{
if (!connected_to_flrig) return;
guard_lock flrig_lock(&mutex_flrig);
XmlRpcValue val, result;
try {
if (!flrig_client->execute("rig.shutdown", XmlRpcValue(), result, timeout)) {
LOG_ERROR("%s", "rig.shutdown failed");
} else {
LOG_VERBOSE("%s", "rig.shutdown OK");
}
} catch (...) {}
}