kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Rig CAT mods
* Serial i/o - reordered initialization tests to suppress irrelevant error messages (MS specific). * Fixed loss of xml rig Title when switching between rigCAT on/off or between rigCAT and any other cat method.pull/2/head
rodzic
72959b65dd
commit
04992b1eba
|
@ -4,6 +4,8 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
struct MODE {
|
struct MODE {
|
||||||
std::string SYMBOL;
|
std::string SYMBOL;
|
||||||
std::string BYTES;
|
std::string BYTES;
|
||||||
|
@ -66,6 +68,7 @@ struct TAGS { const char *tag; void (*fp)(size_t &);};
|
||||||
|
|
||||||
struct XMLRIG {
|
struct XMLRIG {
|
||||||
std::string port;
|
std::string port;
|
||||||
|
string rigTitle;
|
||||||
int baud;
|
int baud;
|
||||||
int stopbits;
|
int stopbits;
|
||||||
bool dtr;
|
bool dtr;
|
||||||
|
@ -94,6 +97,7 @@ struct XMLRIG {
|
||||||
post_write_delay = 50;
|
post_write_delay = 50;
|
||||||
timeout = 200;
|
timeout = 200;
|
||||||
retries = 5;
|
retries = 5;
|
||||||
|
rigTitle = "";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -417,7 +417,6 @@ int configuration::setDefaults()
|
||||||
} else if (chkUSERIGCATis) {
|
} else if (chkUSERIGCATis) {
|
||||||
chkUSERIGCAT->value(1);
|
chkUSERIGCAT->value(1);
|
||||||
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0); chkUSEXMLRPC->value(0);
|
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0); chkUSEXMLRPC->value(0);
|
||||||
readRigXML();
|
|
||||||
} else if (chkUSEXMLRPCis) {
|
} else if (chkUSEXMLRPCis) {
|
||||||
chkUSEXMLRPC->value(1);
|
chkUSEXMLRPC->value(1);
|
||||||
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0); chkUSERIGCAT->value(0);
|
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0); chkUSERIGCAT->value(0);
|
||||||
|
@ -425,6 +424,7 @@ int configuration::setDefaults()
|
||||||
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0);
|
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0);
|
||||||
chkUSERIGCAT->value(0); chkUSEHAMLIB->value(0); chkUSEXMLRPC->value(0);
|
chkUSERIGCAT->value(0); chkUSEHAMLIB->value(0); chkUSEXMLRPC->value(0);
|
||||||
}
|
}
|
||||||
|
if (!XmlRigFilename.empty()) readRigXML();
|
||||||
|
|
||||||
inpRIGdev->value(HamRigDevice.c_str());
|
inpRIGdev->value(HamRigDevice.c_str());
|
||||||
mnuBaudRate->value(HamRigBaudrate);
|
mnuBaudRate->value(HamRigBaudrate);
|
||||||
|
|
|
@ -50,7 +50,6 @@ static string sRigMode = "";
|
||||||
static long long llFreq = 0;
|
static long long llFreq = 0;
|
||||||
|
|
||||||
static bool nonCATrig = false;
|
static bool nonCATrig = false;
|
||||||
static bool noXMLfile = false;
|
|
||||||
|
|
||||||
static void *rigCAT_loop(void *args);
|
static void *rigCAT_loop(void *args);
|
||||||
|
|
||||||
|
@ -296,7 +295,7 @@ long long rigCAT_getfreq()
|
||||||
size_t p = 0, len1 = 0, len2 = 0, pData = 0;
|
size_t p = 0, len1 = 0, len2 = 0, pData = 0;
|
||||||
long long f = 0;
|
long long f = 0;
|
||||||
|
|
||||||
if (nonCATrig == true || noXMLfile) {
|
if (nonCATrig) {
|
||||||
return progStatus.noCATfreq;
|
return progStatus.noCATfreq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,7 +385,7 @@ void rigCAT_setfreq(long long f)
|
||||||
|
|
||||||
progStatus.noCATfreq = f;
|
progStatus.noCATfreq = f;
|
||||||
|
|
||||||
if (noXMLfile || nonCATrig) {
|
if (nonCATrig) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -451,7 +450,7 @@ string rigCAT_getmode()
|
||||||
string strCmd, mData;
|
string strCmd, mData;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if (nonCATrig == true || noXMLfile)
|
if (nonCATrig)
|
||||||
return progStatus.noCATmode;
|
return progStatus.noCATmode;
|
||||||
|
|
||||||
itrCmd = commands.begin();
|
itrCmd = commands.begin();
|
||||||
|
@ -547,7 +546,7 @@ void rigCAT_setmode(const string& md)
|
||||||
|
|
||||||
progStatus.noCATmode = md;
|
progStatus.noCATmode = md;
|
||||||
|
|
||||||
if (nonCATrig == true || noXMLfile) {
|
if (nonCATrig) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,7 +620,7 @@ string rigCAT_getwidth()
|
||||||
string strCmd, mData;
|
string strCmd, mData;
|
||||||
size_t len = 0, p = 0, pData = 0;
|
size_t len = 0, p = 0, pData = 0;
|
||||||
|
|
||||||
if (nonCATrig == true || noXMLfile)
|
if (nonCATrig)
|
||||||
return progStatus.noCATwidth;
|
return progStatus.noCATwidth;
|
||||||
|
|
||||||
itrCmd = commands.begin();
|
itrCmd = commands.begin();
|
||||||
|
@ -716,7 +715,7 @@ void rigCAT_setwidth(const string& w)
|
||||||
list<XMLIOS>::iterator itrCmd;
|
list<XMLIOS>::iterator itrCmd;
|
||||||
string strCmd;
|
string strCmd;
|
||||||
|
|
||||||
if (noXMLfile) {
|
if (nonCATrig) {
|
||||||
progStatus.noCATwidth = w;
|
progStatus.noCATwidth = w;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -794,6 +793,8 @@ void rigCAT_pttON()
|
||||||
|
|
||||||
rigio.SetPTT(1); // always execute the h/w ptt if enabled
|
rigio.SetPTT(1); // always execute the h/w ptt if enabled
|
||||||
|
|
||||||
|
if (nonCATrig) return;
|
||||||
|
|
||||||
itrCmd = commands.begin();
|
itrCmd = commands.begin();
|
||||||
while (itrCmd != commands.end()) {
|
while (itrCmd != commands.end()) {
|
||||||
if ((*itrCmd).SYMBOL == "PTTON")
|
if ((*itrCmd).SYMBOL == "PTTON")
|
||||||
|
@ -845,6 +846,7 @@ void rigCAT_pttOFF()
|
||||||
string strCmd;
|
string strCmd;
|
||||||
|
|
||||||
rigio.SetPTT(0); // always execute the h/w ptt if enabled
|
rigio.SetPTT(0); // always execute the h/w ptt if enabled
|
||||||
|
if (nonCATrig) return;
|
||||||
|
|
||||||
itrCmd = commands.begin();
|
itrCmd = commands.begin();
|
||||||
while (itrCmd != commands.end()) {
|
while (itrCmd != commands.end()) {
|
||||||
|
@ -896,7 +898,7 @@ void rigCAT_sendINIT()
|
||||||
list<XMLIOS>::iterator itrCmd;
|
list<XMLIOS>::iterator itrCmd;
|
||||||
string strCmd;
|
string strCmd;
|
||||||
|
|
||||||
if (noXMLfile)
|
if (nonCATrig)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
itrCmd = commands.begin();
|
itrCmd = commands.begin();
|
||||||
|
@ -1005,27 +1007,21 @@ bool rigCAT_init(bool useXML)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
noXMLfile = true;
|
|
||||||
sRigMode = "";
|
sRigMode = "";
|
||||||
sRigWidth = "";
|
sRigWidth = "";
|
||||||
|
|
||||||
if (useXML == true) {
|
if (useXML == true) {
|
||||||
rigCAT_init_defaults();
|
rigCAT_init_defaults();
|
||||||
// if (readRigXML() == false)
|
rigio.Device(progdefaults.XmlRigDevice);
|
||||||
// LOG_ERROR("No rig.xml file present");
|
rigio.Baud(progdefaults.BaudRate(progdefaults.XmlRigBaudrate));
|
||||||
// else
|
rigio.RTS(progdefaults.RigCatRTSplus);
|
||||||
{
|
rigio.DTR(progdefaults.RigCatDTRplus);
|
||||||
noXMLfile = false;
|
rigio.RTSptt(progdefaults.RigCatRTSptt);
|
||||||
rigio.Device(progdefaults.XmlRigDevice);
|
rigio.DTRptt(progdefaults.RigCatDTRptt);
|
||||||
rigio.Baud(progdefaults.BaudRate(progdefaults.XmlRigBaudrate));
|
rigio.RTSCTS(progdefaults.RigCatRTSCTSflow);
|
||||||
rigio.RTS(progdefaults.RigCatRTSplus);
|
rigio.Stopbits(progdefaults.RigCatStopbits);
|
||||||
rigio.DTR(progdefaults.RigCatDTRplus);
|
|
||||||
rigio.RTSptt(progdefaults.RigCatRTSptt);
|
|
||||||
rigio.DTRptt(progdefaults.RigCatDTRptt);
|
|
||||||
rigio.RTSCTS(progdefaults.RigCatRTSCTSflow);
|
|
||||||
rigio.Stopbits(progdefaults.RigCatStopbits);
|
|
||||||
|
|
||||||
LOG_INFO("\n\
|
LOG_INFO("\n\
|
||||||
Serial port parameters:\n\
|
Serial port parameters:\n\
|
||||||
device : %s\n\
|
device : %s\n\
|
||||||
baudrate : %d\n\
|
baudrate : %d\n\
|
||||||
|
@ -1039,39 +1035,38 @@ initial dtr: %+d\n\
|
||||||
use dtr ptt: %c\n\
|
use dtr ptt: %c\n\
|
||||||
flowcontrol: %c\n\
|
flowcontrol: %c\n\
|
||||||
echo : %c\n",
|
echo : %c\n",
|
||||||
rigio.Device().c_str(),
|
rigio.Device().c_str(),
|
||||||
rigio.Baud(),
|
rigio.Baud(),
|
||||||
rigio.Stopbits(),
|
rigio.Stopbits(),
|
||||||
progdefaults.RigCatRetries,
|
progdefaults.RigCatRetries,
|
||||||
progdefaults.RigCatTimeout,
|
progdefaults.RigCatTimeout,
|
||||||
progdefaults.RigCatWait,
|
progdefaults.RigCatWait,
|
||||||
(rigio.RTS() ? +12 : -12), (rigio.RTSptt() ? 'T' : 'F'),
|
(rigio.RTS() ? +12 : -12), (rigio.RTSptt() ? 'T' : 'F'),
|
||||||
(rigio.DTR() ? +12 : -12), (rigio.DTRptt() ? 'T' : 'F'),
|
(rigio.DTR() ? +12 : -12), (rigio.DTRptt() ? 'T' : 'F'),
|
||||||
(rigio.RTSCTS() ? 'T' : 'F'),
|
(rigio.RTSCTS() ? 'T' : 'F'),
|
||||||
progdefaults.RigCatECHO ? 'T' : 'F');
|
progdefaults.RigCatECHO ? 'T' : 'F');
|
||||||
|
|
||||||
if (rigio.OpenPort() == false) {
|
if (rigio.OpenPort() == false) {
|
||||||
LOG_ERROR("Cannot open serial port %s", rigio.Device().c_str());
|
LOG_ERROR("Cannot open serial port %s", rigio.Device().c_str());
|
||||||
nonCATrig = true;
|
nonCATrig = true;
|
||||||
init_NoRig_RigDialog();
|
init_NoRig_RigDialog();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
sRigMode = "";
|
sRigMode = "";
|
||||||
sRigWidth = "";
|
sRigWidth = "";
|
||||||
|
|
||||||
|
nonCATrig = false;
|
||||||
|
|
||||||
|
if (rigCAT_getfreq() == -1) { // will set nonCATrig to true if getfreq not spec'd
|
||||||
|
LOG_ERROR("Xcvr Freq request not answered");
|
||||||
|
rigio.ClosePort();
|
||||||
|
nonCATrig = true;
|
||||||
|
init_NoRig_RigDialog();
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
nonCATrig = false;
|
nonCATrig = false;
|
||||||
|
rigCAT_sendINIT();
|
||||||
if (rigCAT_getfreq() == -1) { // will set nonCATrig to true if getfreq not spec'd
|
init_Xml_RigDialog();
|
||||||
LOG_ERROR("Xcvr Freq request not answered");
|
|
||||||
rigio.ClosePort();
|
|
||||||
nonCATrig = true;
|
|
||||||
init_NoRig_RigDialog();
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
nonCATrig = false;
|
|
||||||
rigCAT_sendINIT();
|
|
||||||
init_Xml_RigDialog();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nonCATrig = true;
|
nonCATrig = true;
|
||||||
|
@ -1155,7 +1150,7 @@ void rigCAT_set_qsy(long long f, long long fmid)
|
||||||
|
|
||||||
bool ModeIsLSB(const string& s)
|
bool ModeIsLSB(const string& s)
|
||||||
{
|
{
|
||||||
if (noXMLfile) {
|
if (nonCATrig) {
|
||||||
if (s == "LSB")
|
if (s == "LSB")
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -436,6 +436,7 @@ LOG_INFO("xml rig");
|
||||||
initOptionMenus();
|
initOptionMenus();
|
||||||
clearList();
|
clearList();
|
||||||
buildlist();
|
buildlist();
|
||||||
|
windowTitle = xmlrig.rigTitle;
|
||||||
setTitle();
|
setTitle();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -473,7 +473,7 @@ void parseBWREPLY(size_t &p0)
|
||||||
void parseTITLE(size_t &p0)
|
void parseTITLE(size_t &p0)
|
||||||
{
|
{
|
||||||
size_t pend = tagEnd(p0);
|
size_t pend = tagEnd(p0);
|
||||||
windowTitle = getElement(p0);
|
xmlrig.rigTitle = getElement(p0);
|
||||||
p0 = pend;
|
p0 = pend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -580,12 +580,12 @@ BOOL Cserial::ConfigurePort(DWORD BaudRate,
|
||||||
///////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////
|
||||||
void Cserial::SetPTT(bool b)
|
void Cserial::SetPTT(bool b)
|
||||||
{
|
{
|
||||||
|
if ( !(dtrptt || rtsptt) )
|
||||||
|
return;
|
||||||
if(hComm == INVALID_HANDLE_VALUE) {
|
if(hComm == INVALID_HANDLE_VALUE) {
|
||||||
LOG_ERROR("Invalid handle");
|
LOG_ERROR("Invalid handle");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( !(dtrptt || rtsptt) )
|
|
||||||
return;
|
|
||||||
LOG_INFO("PTT = %d, DTRptt = %d, DTR = %d, RTSptt = %d, RTS = %d",
|
LOG_INFO("PTT = %d, DTRptt = %d, DTR = %d, RTSptt = %d, RTS = %d",
|
||||||
b, dtrptt, dtr, rtsptt, rts);
|
b, dtrptt, dtr, rtsptt, rts);
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue