* Default values for the following variables are read from
      the hamlib backend when a new rig is selected
        baudrate, retries, timeout, write_delay, post_write_delay
      The respective configuration controls are updated accordingly.
      User may over ride the default settings.
pull/2/head
David Freese 2009-03-27 08:56:28 -05:00
rodzic b89df53afa
commit a04d475027
7 zmienionych plików z 115 dodań i 68 usunięć

Wyświetl plik

@ -16,6 +16,7 @@
#include "Viewer.h"
#include "pskrep.h"
#include "logsupport.h"
#include "hamlib.h"
Fl_Double_Window *dlgConfig;
void set_qrz_buttons(Fl_Button* b) {
@ -1360,7 +1361,7 @@ Fl_ComboBox *cboHamlibRig=(Fl_ComboBox *)0;
static void cb_cboHamlibRig(Fl_ComboBox*, void*) {
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
hamlib_get_defaults();
}
Fl_Input_Choice *inpRIGdev=(Fl_Input_Choice *)0;
@ -1369,7 +1370,6 @@ static void cb_inpRIGdev(Fl_Input_Choice* o, void*) {
progdefaults.HamRigDevice = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Choice *mnuBaudRate=(Fl_Choice *)0;
@ -1378,16 +1378,14 @@ static void cb_mnuBaudRate(Fl_Choice* o, void*) {
progdefaults.HamRigBaudrate = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Counter *cntHamlibtRetries=(Fl_Counter *)0;
Fl_Counter *cntHamlibRetries=(Fl_Counter *)0;
static void cb_cntHamlibtRetries(Fl_Counter* o, void*) {
static void cb_cntHamlibRetries(Fl_Counter* o, void*) {
progdefaults.HamlibRetries = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Counter *cntHamlibTimeout=(Fl_Counter *)0;
@ -1396,7 +1394,6 @@ static void cb_cntHamlibTimeout(Fl_Counter* o, void*) {
progdefaults.HamlibTimeout = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Counter *cntHamlibWait=(Fl_Counter *)0;
@ -1405,7 +1402,6 @@ static void cb_cntHamlibWait(Fl_Counter* o, void*) {
progdefaults.HamlibWait = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Input2 *inpHamlibConfig=(Fl_Input2 *)0;
@ -1414,7 +1410,6 @@ static void cb_inpHamlibConfig(Fl_Input2* o, void*) {
progdefaults.HamConfig = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Button *btnInitHAMLIB=(Fl_Button *)0;
@ -1439,7 +1434,6 @@ static void cb_btnHamlibCMDptt(Fl_Round_Button* o, void*) {
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Check_Button *btnHamlibDTRplus=(Fl_Check_Button *)0;
@ -1448,7 +1442,6 @@ static void cb_btnHamlibDTRplus(Fl_Check_Button* o, void*) {
progdefaults.HamlibDTRplus = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Check_Button *chkHamlibRTSplus=(Fl_Check_Button *)0;
@ -1460,7 +1453,6 @@ chkHamlibRTSCTSflow->value(0);
}
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Check_Button *chkHamlibRTSCTSflow=(Fl_Check_Button *)0;
@ -1474,7 +1466,6 @@ if (o->value() == 1) {
}
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Check_Button *chkHamlibXONXOFFflow=(Fl_Check_Button *)0;
@ -1487,7 +1478,6 @@ if (o->value() == 1) {
}
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Counter *cntHamlibWriteDelay=(Fl_Counter *)0;
@ -1496,7 +1486,6 @@ static void cb_cntHamlibWriteDelay(Fl_Counter* o, void*) {
progdefaults.HamlibWriteDelay = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;
}
Fl_Group *grpMemmap=(Fl_Group *)0;
@ -2078,6 +2067,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
{ tabOperator = new Fl_Group(0, 25, 500, 345, _("Operator"));
tabOperator->callback((Fl_Callback*)cb_tabOperator);
tabOperator->when(FL_WHEN_CHANGED);
tabOperator->hide();
{ Fl_Group* o = new Fl_Group(5, 35, 490, 165, _("Station"));
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
@ -3429,10 +3419,10 @@ an merging"));
tabModems->end();
} // Fl_Group* tabModems
{ tabRig = new Fl_Group(0, 25, 500, 345, _("Rig"));
tabRig->hide();
{ tabsRig = new Fl_Tabs(0, 25, 500, 345);
tabsRig->selection_color(FL_LIGHT1);
{ Fl_Group* o = new Fl_Group(0, 50, 500, 320, _("Hardware PTT"));
o->hide();
{ grpHWPTT = new Fl_Group(5, 100, 490, 190);
grpHWPTT->box(FL_ENGRAVED_FRAME);
{ inpTTYdev = new Fl_Input_Choice(200, 143, 150, 22, _("Device:"));
@ -3614,7 +3604,6 @@ an merging"));
o->end();
} // Fl_Group* o
{ tabHamlib = new Fl_Group(0, 50, 500, 320, _("Hamlib"));
tabHamlib->hide();
{ chkUSEHAMLIB = new Fl_Check_Button(195, 60, 100, 20, _("Use Hamlib"));
chkUSEHAMLIB->tooltip(_("Hamlib used for rig control"));
chkUSEHAMLIB->down_box(FL_DOWN_BOX);
@ -3649,29 +3638,29 @@ an merging"));
o->add(szBaudRates);
o->value(progdefaults.HamRigBaudrate);
} // Fl_Choice* mnuBaudRate
{ Fl_Counter* o = cntHamlibtRetries = new Fl_Counter(15, 140, 75, 20, _("Retries"));
cntHamlibtRetries->tooltip(_("Number of times to resend\ncommand before giving up"));
cntHamlibtRetries->type(1);
cntHamlibtRetries->minimum(1);
cntHamlibtRetries->maximum(10);
cntHamlibtRetries->step(1);
cntHamlibtRetries->value(5);
cntHamlibtRetries->callback((Fl_Callback*)cb_cntHamlibtRetries);
cntHamlibtRetries->align(FL_ALIGN_TOP_LEFT);
{ Fl_Counter* o = cntHamlibRetries = new Fl_Counter(15, 140, 100, 20, _("Retries"));
cntHamlibRetries->tooltip(_("Number of times to resend\ncommand before giving up"));
cntHamlibRetries->type(1);
cntHamlibRetries->minimum(1);
cntHamlibRetries->maximum(10);
cntHamlibRetries->step(1);
cntHamlibRetries->value(5);
cntHamlibRetries->callback((Fl_Callback*)cb_cntHamlibRetries);
cntHamlibRetries->align(FL_ALIGN_TOP_LEFT);
o->value(progdefaults.HamlibRetries);
} // Fl_Counter* cntHamlibtRetries
{ Fl_Counter* o = cntHamlibTimeout = new Fl_Counter(150, 140, 75, 20, _("Retry interval (ms)"));
} // Fl_Counter* cntHamlibRetries
{ Fl_Counter* o = cntHamlibTimeout = new Fl_Counter(150, 140, 100, 20, _("Retry interval (ms)"));
cntHamlibTimeout->tooltip(_("Msec\'s between retries"));
cntHamlibTimeout->type(1);
cntHamlibTimeout->minimum(2);
cntHamlibTimeout->maximum(200);
cntHamlibTimeout->maximum(20000);
cntHamlibTimeout->step(1);
cntHamlibTimeout->value(10);
cntHamlibTimeout->callback((Fl_Callback*)cb_cntHamlibTimeout);
cntHamlibTimeout->align(FL_ALIGN_TOP_LEFT);
o->value(progdefaults.HamlibTimeout);
} // Fl_Counter* cntHamlibTimeout
{ Fl_Counter* o = cntHamlibWait = new Fl_Counter(150, 186, 75, 20, _("Post write delay (ms)"));
{ Fl_Counter* o = cntHamlibWait = new Fl_Counter(150, 186, 100, 20, _("Post write delay (ms)"));
cntHamlibWait->tooltip(_("Msec\'s between sequential commands"));
cntHamlibWait->type(1);
cntHamlibWait->minimum(0);
@ -3737,7 +3726,7 @@ an merging"));
chkHamlibXONXOFFflow->callback((Fl_Callback*)cb_chkHamlibXONXOFFflow);
o->value(progdefaults.HamlibXONXOFFflow);
} // Fl_Check_Button* chkHamlibXONXOFFflow
{ Fl_Counter* o = cntHamlibWriteDelay = new Fl_Counter(15, 186, 75, 20, _("Write delay (ms)"));
{ Fl_Counter* o = cntHamlibWriteDelay = new Fl_Counter(15, 186, 100, 20, _("Write delay (ms)"));
cntHamlibWriteDelay->tooltip(_("Msec\'s between sequential commands"));
cntHamlibWriteDelay->type(1);
cntHamlibWriteDelay->minimum(0);

Wyświetl plik

@ -49,6 +49,8 @@ decl {\#include "flinput2.h"} {public
decl {\#include "logsupport.h"} {}
decl {\#include "hamlib.h"} {}
decl {Fl_Double_Window *dlgConfig;} {public
}
@ -81,8 +83,8 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
} {
Fl_Group tabOperator {
label Operator
callback {progdefaults.changed = true;} open selected
xywh {0 25 500 345} when 1
callback {progdefaults.changed = true;} open
xywh {0 25 500 345} when 1 hide
} {
Fl_Group {} {
label Station open
@ -1400,14 +1402,14 @@ progdefaults.changed = true;}
}
Fl_Group tabRig {
label Rig open
xywh {0 25 500 345} hide
xywh {0 25 500 345}
} {
Fl_Tabs tabsRig {open
xywh {0 25 500 345} selection_color 50
} {
Fl_Group {} {
label {Hardware PTT} open
xywh {0 50 500 320}
xywh {0 50 500 320} hide
} {
Fl_Group grpHWPTT {open
xywh {5 100 490 190} box ENGRAVED_FRAME
@ -1673,7 +1675,7 @@ progdefaults.changed = true;}
}
Fl_Group tabHamlib {
label Hamlib open
xywh {0 50 500 320} hide
xywh {0 50 500 320}
} {
Fl_Check_Button chkUSEHAMLIB {
label {Use Hamlib}
@ -1692,14 +1694,14 @@ btnInitHAMLIB->redraw();
progdefaults.changed = true;}
tooltip {Hamlib used for rig control} xywh {195 60 100 20} down_box DOWN_BOX
}
Fl_Group grpHamlib {open
Fl_Group grpHamlib {open selected
xywh {5 83 490 277} box ENGRAVED_FRAME
} {
Fl_Box cboHamlibRig {
label {Rig:}
callback {btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
hamlib_get_defaults();}
tooltip {Select the rig by name} xywh {65 93 160 22} box DOWN_BOX color 7 align 4
code0 {o->readonly();}
class Fl_ComboBox
@ -1708,8 +1710,7 @@ progdefaults.changed = true;}
label {Device:}
callback {progdefaults.HamRigDevice = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;} open
btnInitHAMLIB->redraw_label();} open
tooltip {Serial port} xywh {340 93 144 22}
code0 {o->value(progdefaults.HamRigDevice.c_str());}
} {}
@ -1717,46 +1718,41 @@ progdefaults.changed = true;} open
label {Baud rate:}
callback {progdefaults.HamRigBaudrate = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;} open
btnInitHAMLIB->redraw_label();} open
tooltip {Serial port baud rate} xywh {385 139 99 22} down_box BORDER_BOX align 5
code0 {o->add(szBaudRates);}
code1 {o->value(progdefaults.HamRigBaudrate);}
} {}
Fl_Counter cntHamlibtRetries {
Fl_Counter cntHamlibRetries {
label Retries
callback {progdefaults.HamlibRetries = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
btnInitHAMLIB->redraw_label();}
tooltip {Number of times to resend
command before giving up} xywh {15 140 75 20} type Simple align 5 minimum 1 maximum 10 step 1 value 5
command before giving up} xywh {15 140 100 20} type Simple align 5 minimum 1 maximum 10 step 1 value 5
code0 {o->value(progdefaults.HamlibRetries);}
}
Fl_Counter cntHamlibTimeout {
label {Retry interval (ms)}
callback {progdefaults.HamlibTimeout = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
tooltip {Msec's between retries} xywh {150 140 75 20} type Simple align 5 minimum 2 maximum 200 step 1 value 10
btnInitHAMLIB->redraw_label();}
tooltip {Msec's between retries} xywh {150 140 100 20} type Simple align 5 minimum 2 maximum 20000 step 1 value 10
code0 {o->value(progdefaults.HamlibTimeout);}
}
Fl_Counter cntHamlibWait {
label {Post write delay (ms)}
callback {progdefaults.HamlibWait = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
tooltip {Msec's between sequential commands} xywh {150 186 75 20} type Simple align 5 minimum 0 maximum 100 step 1 value 5
btnInitHAMLIB->redraw_label();}
tooltip {Msec's between sequential commands} xywh {150 186 100 20} type Simple align 5 minimum 0 maximum 100 step 1 value 5
code0 {o->value(progdefaults.HamlibWait);}
}
Fl_Input inpHamlibConfig {
label {Advanced configuration:}
callback {progdefaults.HamConfig = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
btnInitHAMLIB->redraw_label();}
tooltip {Optional configuration
in format: param=val ...} xywh {20 326 320 22} align 5
code0 {inpHamlibConfig->value(progdefaults.HamConfig.c_str());}
@ -1781,8 +1777,7 @@ effect when rig mode changes.} xywh {340 217 144 22} down_box BORDER_BOX align 5
callback {progdefaults.HamlibCMDptt=o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
btnInitHAMLIB->redraw_label();}
tooltip {PTT is a hamlib command} xywh {45 218 200 20} down_box DIAMOND_DOWN_BOX selection_color 1
code0 {o->value(progdefaults.HamlibCMDptt);}
}
@ -1790,8 +1785,7 @@ progdefaults.changed = true;}
label {DTR +12}
callback {progdefaults.HamlibDTRplus = o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
btnInitHAMLIB->redraw_label();}
tooltip {Initial state of DTR} xywh {45 248 90 20} down_box DOWN_BOX
code0 {o->value(progdefaults.HamlibDTRplus);}
}
@ -1802,8 +1796,7 @@ if (o->value() == 1) {
chkHamlibRTSCTSflow->value(0);
}
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
btnInitHAMLIB->redraw_label();}
tooltip {Initial state of RTS} xywh {269 248 85 20} down_box DOWN_BOX
code0 {o->value(progdefaults.HamlibRTSplus);}
}
@ -1816,8 +1809,7 @@ if (o->value() == 1) {
progdefaults.HamlibXONXOFFflow = false;
}
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
btnInitHAMLIB->redraw_label();}
tooltip {Rig requires RTS/CTS flow control} xywh {45 281 170 20} down_box DOWN_BOX
code0 {o->value(progdefaults.HamlibRTSCTSflow);}
}
@ -1829,8 +1821,7 @@ if (o->value() == 1) {
progdefaults.HamlibRTSCTSflow = false;
}
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
btnInitHAMLIB->redraw_label();}
tooltip {Rig requires Xon/Xoff flow control} xywh {269 281 185 20} down_box DOWN_BOX
code0 {o->value(progdefaults.HamlibXONXOFFflow);}
}
@ -1838,9 +1829,8 @@ progdefaults.changed = true;}
label {Write delay (ms)}
callback {progdefaults.HamlibWriteDelay = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
progdefaults.changed = true;}
tooltip {Msec's between sequential commands} xywh {15 186 75 20} type Simple align 5 minimum 0 maximum 100 step 1
btnInitHAMLIB->redraw_label();}
tooltip {Msec's between sequential commands} xywh {15 186 100 20} type Simple align 5 minimum 0 maximum 100 step 1
code0 {o->value(progdefaults.HamlibWriteDelay);}
}
}

Wyświetl plik

@ -217,7 +217,7 @@ extern Fl_Group *grpHamlib;
extern Fl_ComboBox *cboHamlibRig;
extern Fl_Input_Choice *inpRIGdev;
extern Fl_Choice *mnuBaudRate;
extern Fl_Counter *cntHamlibtRetries;
extern Fl_Counter *cntHamlibRetries;
extern Fl_Counter *cntHamlibTimeout;
extern Fl_Counter *cntHamlibWait;
extern Fl_Input2 *inpHamlibConfig;

Wyświetl plik

@ -377,6 +377,7 @@ struct configuration
void testCommPorts();
const char* strBaudRate();
int BaudRate(size_t);
int nBaudRate(const char *);
void initFonts(void);
};

Wyświetl plik

@ -22,6 +22,7 @@ extern int hamlib_setmode(rmode_t);
extern rmode_t hamlib_getmode();
extern int hamlib_setwidth(pbwidth_t);
extern pbwidth_t hamlib_getwidth();
extern void hamlib_get_defaults();
#endif

Wyświetl plik

@ -668,6 +668,14 @@ const char* configuration::strBaudRate()
return (szBaudRates[HamRigBaudrate + 1]);
}
int configuration::nBaudRate(const char *szBR)
{
for (size_t i = 1; i < sizeof(szBaudRates); i++)
if (strcmp(szBaudRates[i], szBR) == 0)
return i - 1;
return 0;
}
int configuration::BaudRate(size_t n)
{
if (n > sizeof(szBaudRates) + 1) return 1200;

Wyświetl plik

@ -71,6 +71,64 @@ void show_error(const char* msg1, const char* msg2 = 0)
LOG_ERROR("%s", error.c_str());
}
void hamlib_get_defaults()
{
char szParam[40];
progdefaults.HamRigModel = hamlib_get_rig_model(cboHamlibRig->index());
xcvr->init(progdefaults.HamRigModel);
if (xcvr->getCaps()->port_type != RIG_PORT_SERIAL) {
xcvr->close();
return;
}
xcvr->getConf("serial_speed", szParam);
progdefaults.HamRigBaudrate = progdefaults.nBaudRate(szParam);
mnuBaudRate->value(progdefaults.HamRigBaudrate);
xcvr->getConf("post_write_delay", szParam);
sscanf(szParam, "%d", &progdefaults.HamlibWait);
cntHamlibWait->value(progdefaults.HamlibWait);
xcvr->getConf("write_delay", szParam);
sscanf(szParam, "%d", &progdefaults.HamlibWriteDelay);
cntHamlibWriteDelay->value(progdefaults.HamlibWriteDelay);
xcvr->getConf("timeout", szParam);
sscanf(szParam, "%d", &progdefaults.HamlibTimeout);
cntHamlibTimeout->value(progdefaults.HamlibTimeout);
xcvr->getConf("retry", szParam);
sscanf(szParam, "%d", &progdefaults.HamlibRetries);
cntHamlibRetries->value(progdefaults.HamlibRetries);
xcvr->getConf("rts_state", szParam);
if (strcmp(szParam, "ON") == 0)
progdefaults.HamlibRTSplus = true;
else
progdefaults.HamlibRTSplus = false;
chkHamlibRTSplus->value(progdefaults.HamlibRTSplus);
xcvr->getConf("dtr_state", szParam);
if (strcmp(szParam, "ON") == 0)
progdefaults.HamlibDTRplus = true;
else
progdefaults.HamlibDTRplus = false;
btnHamlibDTRplus->value(progdefaults.HamlibDTRplus);
progdefaults.HamlibRTSCTSflow = false;
progdefaults.HamlibXONXOFFflow = false;
xcvr->getConf("serial_handshake", szParam);
if (strcmp(szParam, "Hardware") == 0) progdefaults.HamlibRTSCTSflow = true;
if (strcmp(szParam, "XONXOFF") == 0) progdefaults.HamlibXONXOFFflow = true;
chkHamlibRTSCTSflow->value(progdefaults.HamlibRTSCTSflow);
chkHamlibXONXOFFflow->value(progdefaults.HamlibXONXOFFflow);
xcvr->close();
}
bool hamlib_init(bool bPtt)
{
freq_t freq;