* 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
David Freese 2009-11-16 09:29:35 -06:00
rodzic 72959b65dd
commit 04992b1eba
6 zmienionych plików z 58 dodań i 58 usunięć

Wyświetl plik

@ -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 = "";
} }
}; };

Wyświetl plik

@ -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);

Wyświetl plik

@ -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;

Wyświetl plik

@ -436,6 +436,7 @@ LOG_INFO("xml rig");
initOptionMenus(); initOptionMenus();
clearList(); clearList();
buildlist(); buildlist();
windowTitle = xmlrig.rigTitle;
setTitle(); setTitle();
return true; return true;
} }

Wyświetl plik

@ -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;
} }

Wyświetl plik

@ -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);