kopia lustrzana https://github.com/jamescoxon/dl-fldigi
1863 wiersze
57 KiB
C++
1863 wiersze
57 KiB
C++
#include <config.h>
|
|
|
|
#include "configuration.h"
|
|
#include "confdialog.h"
|
|
#include "xmlreader.h"
|
|
#include "soundconf.h"
|
|
|
|
#if USE_HAMLIB
|
|
#include "hamlib.h"
|
|
#include "rigclass.h"
|
|
#endif
|
|
|
|
#include "rigMEM.h"
|
|
//#include "rigio.h"
|
|
#include "debug.h"
|
|
|
|
#include <iostream>
|
|
#include <fstream>
|
|
|
|
#ifdef __linux__
|
|
# include <dirent.h>
|
|
# include <limits.h>
|
|
# include <errno.h>
|
|
#endif
|
|
#ifdef __APPLE__
|
|
# include <glob.h>
|
|
#endif
|
|
#ifndef __CYGWIN__
|
|
# include <sys/stat.h>
|
|
#endif
|
|
|
|
configuration progdefaults = {
|
|
false, // bool rsid;
|
|
false, // bool rsidWideSearch;
|
|
false, // bool TransmitRSid;
|
|
true, // bool slowcpu;
|
|
false, // bool experimental;
|
|
|
|
false, // bool changed;
|
|
-20.0, // double wfRefLevel;
|
|
70.0, // double wfAmpSpan;
|
|
300, // int LowFreqCutoff;
|
|
1000, // int CWsweetspot;
|
|
1000, // int RTTYsweetspot;
|
|
1000, // int PSKsweetspot;
|
|
false, // bool StartAtSweetSpot;
|
|
false, // bool WaterfallHistoryDefault;
|
|
// for PSK mail interface
|
|
false, // bool PSKmailSweetSpot;
|
|
200, // int SearchRange;
|
|
40, // int ServerOffset;
|
|
6.0, // double ACQsn;
|
|
// RTTY
|
|
3, // int rtty_shift; = 170
|
|
0, // int rtty_baud; = 45
|
|
0, // int rtty_bits; = 5
|
|
RTTY_PARITY_NONE, // RTTY_PARITY rtty_parity;
|
|
1, // int rtty_stop;
|
|
false, // bool rtty_reverse;
|
|
false, // bool rtty_msbfirst;
|
|
false, // bool rtty_crcrlf;
|
|
true, // bool rtty_autocrlf;
|
|
72, // int rtty_autocount;
|
|
1, // int rtty_afcspeed;
|
|
false, // bool useFSKkeyline;
|
|
false, // bool useFSKkeylineDTR;
|
|
true, // bool FSKisLSB;
|
|
false, // bool RTTY_USB;
|
|
false, // bool useUART;
|
|
false, // bool PreferXhairScope;
|
|
false, // bool PseudoFSK;
|
|
true, // bool UOSrx; // unshift on space - receive
|
|
true, // bool UOStx; // unshift on space - transmit
|
|
false, // bool Xagc; // use agc for X-scope
|
|
// CW
|
|
false, // bool useCWkeylineRTS;
|
|
false, // bool useCWkeylineDTR;
|
|
50, // int CWweight;
|
|
18, // int CWspeed;
|
|
24, // int defCWspeed;
|
|
150, // int CWbandwidth;
|
|
true, // int CWtrack;
|
|
10, // int CWrange;
|
|
5, // int CWlowerlimit;
|
|
50, // int CWupperlimit;
|
|
4.0, // double CWrisetime;
|
|
3.0, // double CWdash2dot;
|
|
false, // bool QSK;
|
|
4.0, // double CWpre;
|
|
4.0, // double CWpost;
|
|
false, // bool CWid;
|
|
18, // int CWIDwpm;
|
|
|
|
// FELD-HELL
|
|
150.0, // double HELL_BW;
|
|
false, // bool HellRcvWidth;
|
|
false, // bool HellBlackboard;
|
|
1, // bool HellXmtWidth;
|
|
true, // bool HellXmtIdle;
|
|
false, // bool HellPulseFast;
|
|
// OLIVIA
|
|
2, // int oliviatones;
|
|
2, // int oliviabw;
|
|
8, // int oliviasmargin
|
|
4, // int oliviasinteg
|
|
false, // bool olivia8bit
|
|
// THOR
|
|
2.0, // double THOR_BW;
|
|
true, // bool THOR_FILTER;
|
|
"", // string THORsecText;
|
|
5, // int THOR_PATHS;
|
|
false, // bool THOR_SOFT;
|
|
0.0, // double ThorCWI;
|
|
// DOMINOEX
|
|
2.0, // double DOMINOEX_BW;
|
|
true, // bool DOMINOEX_FILTER
|
|
false, // bool DOMINOEX_FEC
|
|
5, // int DOMINOEX_PATHS
|
|
0.0, // double DomCWI;
|
|
// MT63
|
|
false, // bool mt63_8bit;
|
|
32, // int mt63_interleave;
|
|
//
|
|
0, // uchar red
|
|
255, // uchar green
|
|
255, // uchar blue
|
|
0, // bool MultiColorWF;
|
|
1, // int wfPreFilter == Blackman
|
|
false, // bool WFaveraging
|
|
4, // int latency;
|
|
true, // bool UseCursorLines;
|
|
true, // bool UseCursorCenterLine;
|
|
true, // bool UseBWTracks;
|
|
{255,255,0,255}, // RGBI cursorLineRGBI;
|
|
{255, 255, 255, 255}, // RGBI cursorCenterRGBI;
|
|
{255,0,0,255}, // RGBI bwTrackRGBI;
|
|
4, // int feldfontnbr;
|
|
false, // bool viewXmtSignal;
|
|
false, // bool sendid;
|
|
false, // bool macroid;
|
|
false, // bool sendtextid;
|
|
"CQ", // string strTextid;
|
|
false, // bool macroCWid;
|
|
1, // int videowidth;
|
|
true, // bool ID_SMALL;
|
|
false, // bool macrotextid;
|
|
0, // int QRZ;
|
|
"", // string QRZpathname;
|
|
"", // string QRZusername;
|
|
"", // string QRZuserpassword;
|
|
false, // bool QRZchanged;
|
|
//
|
|
true, // bool btnusb;
|
|
0, // int btnPTTis
|
|
false, // bool RTSptt;
|
|
false, // bool DTRptt;
|
|
false, // bool RTSplus;
|
|
false, // bool DTRplus;
|
|
0, // int choiceHAMLIBis
|
|
0, // int chkUSEMEMMAPis
|
|
0, // int chkUSEHAMLIBis
|
|
0, // int chkUSERIGCATis
|
|
0, // int chkUSEXMLRPCis
|
|
#if defined(__linux__)
|
|
"/dev/ttyS0", // string PTTdev
|
|
"/dev/ttyS1", // string CWFSKport
|
|
"/dev/ttyS0", // string HamRigDevice
|
|
#elif defined(__CYGWIN__)
|
|
"COM1", // string PTTdev
|
|
"COM2", // string CWFSKport
|
|
"COM1", // string HamRigDevice
|
|
#else // not sure
|
|
"/dev/ptt", // string PTTdev
|
|
"/dev/fsk", // string CWFSKport
|
|
"/dev/rig", // string HamRigDevice
|
|
#endif
|
|
"", // string HamRigName
|
|
1, // int HamRigBaudrate
|
|
//
|
|
"", // myCall
|
|
"", // myName
|
|
"", // myQth
|
|
"", // myLoc
|
|
#if defined(__linux__)
|
|
|
|
#elif defined(__CYGWIN__)
|
|
|
|
#else
|
|
|
|
#endif
|
|
"", // secondary text
|
|
// Sound card
|
|
SND_IDX_PORT, // int btnAudioIOis
|
|
"", // string OSSdevice;
|
|
"", // string PAdevice;
|
|
"", // string PortIndevice;
|
|
-1, // int PortInIndex;
|
|
"", // string PortOutDevice;
|
|
-1, // int PortOutIndex;
|
|
0, // int PortFramesPerBuffer
|
|
"", // string PulseServer
|
|
SAMPLE_RATE_UNSET, // int sample_rate;
|
|
SAMPLE_RATE_UNSET, // int in_sample_rate;
|
|
SAMPLE_RATE_UNSET, // int out_sample_rate;
|
|
SRC_SINC_FASTEST, // int sample_converter;
|
|
0, // int RX_corr;
|
|
0, // int TX_corr;
|
|
0, // int TxOffset;
|
|
// Contest controls
|
|
true, // bool UseLeadingZeros;
|
|
0, // int ContestStart;
|
|
4, // int ContestDigits;
|
|
// Macro timer constants and controls
|
|
false, // bool useTimer;
|
|
0, // int macronumber;
|
|
0, // int timeout;
|
|
|
|
"", // string MXdevice
|
|
false, // bool MicIn;
|
|
true, // bool LineIn;
|
|
false, // bool EnableMixer;
|
|
true, // bool MuteInput;
|
|
80.0, // double PCMvolume
|
|
{{ 0, 0, 0},{ 0, 0, 62},{ 0, 0,126}, // default palette
|
|
{ 0, 0,214},{145,142, 96},{181,184, 48},
|
|
{223,226,105},{254,254, 4},{255, 58, 0} },
|
|
|
|
// Button key color palette
|
|
true, // bool useGroupColors;
|
|
{ 80, 144, 144}, // RGBint btnGroup1;
|
|
{ 144, 80, 80}, // RGBint btnGroup2;
|
|
{ 80, 80, 144}, // RGBint btnGroup3;
|
|
{ 255, 255, 255}, // RGBint btnFkeyTextColor;
|
|
|
|
// Rx / Tx / Waterfall Text Widgets
|
|
|
|
FL_SCREEN, // Fl_Font RxFontnbr
|
|
16, // int RxFontsize
|
|
FL_BLACK, // Fl_Color RxFontcolor
|
|
FL_SCREEN, // Fl_Font TxFontnbr
|
|
16, // int TxFontsize
|
|
FL_BLACK, // Fl_Color TxFontcolor
|
|
{ 255, 242, 190}, // RGBint RxColor;
|
|
{ 200, 235, 255}, // RGBint TxColor;
|
|
|
|
FL_RED, // Fl_Color XMITcolor;
|
|
FL_DARK_GREEN, // Fl_Color CTRLcolor;
|
|
FL_BLUE, // Fl_Color SKIPcolor;
|
|
FL_DARK_MAGENTA,// Fl_Color ALTRcolor;
|
|
|
|
FL_SCREEN, // Fl_Font WaterfallFontnbr
|
|
12, // int WaterfallFontsize
|
|
|
|
"gtk+", // string ui_scheme
|
|
|
|
9876, // int rx_msgid
|
|
6789, // int tx_msgid
|
|
"127.0.0.1", // string arq_address
|
|
"3122", // string arq_port
|
|
// PSK viewer parameters
|
|
true, // bool VIEWERmarquee
|
|
true, // bool VIEWERshowfreq
|
|
500, // int VIEWERstart
|
|
20, // int VIEWERchannels
|
|
10.0, // double VIEWERsquelch
|
|
15, // int VIEWERtimeout
|
|
"127.0.0.1", // string xmlrpc_address
|
|
"7362", // string xmlrpc_port
|
|
};
|
|
|
|
const char *szBaudRates[] = {
|
|
"",
|
|
"300","600","1200","2400",
|
|
"4800","9600","19200","38400",
|
|
"57600","115200","230400","460800"};
|
|
|
|
const char *szBands[] = {
|
|
"",
|
|
"1830", "3580", "7030", "7070", "10138",
|
|
"14070", "18100", "21070", "21080", "24920", "28070", "28120", 0};
|
|
|
|
|
|
// XML config file support
|
|
enum TAG { \
|
|
IGNORE,
|
|
MYCALL, MYNAME, MYQTH, MYLOC,
|
|
SQUELCH, WFREFLEVEL, WFAMPSPAN, LOWFREQCUTOFF,
|
|
WATERFALLHISTORYDEFAULT, STARTATSWEETSPOT, PSKMAILSWEETSPOT,
|
|
PSKSEARCHRANGE, PSKSERVEROFFSET,
|
|
ACQSN,
|
|
CWSWEETSPOT, PSKSWEETSPOT, RTTYSWEETSPOT,
|
|
RTTYSHIFT, RTTYBAUD,
|
|
RTTYBITS, RTTYPARITY, RTTYSTOP, RTTYREVERSE,
|
|
RTTYMSBFIRST, RTTYCRCLF, RTTYAUTOCRLF,
|
|
RTTYAUTOCOUNT, RTTYAFCSPEED,
|
|
RTTYUSB,
|
|
PREFERXHAIRSCOPE,
|
|
PSEUDOFSK,
|
|
UOSRX, UOSTX,
|
|
XAGC,
|
|
CWWEIGHT, CWSPEED, CWDEFSPEED,
|
|
CWBANDWIDTH, CWRANGE, CWLOWERLIMIT, CWUPPERLIMIT,
|
|
CWTRACK, CWRISETIME, CWDASH2DOT,
|
|
XQSK, CWPRE, CWPOST, CWID, CWIDWPM,
|
|
OLIVIATONES, OLIVIABW, OLIVIASMARGIN, OLIVIASINTEG, OLIVIA8BIT,
|
|
THORBW, THORFILTER, THORSECTEXT, THORPATHS, THORSOFT, THORCWI,
|
|
DOMINOEXBW, DOMINOEXFILTER, DOMINOEXFEC, DOMINOEXPATHS, DOMCWI,
|
|
FELDFONTNBR,
|
|
HELLRCVWIDTH, HELLXMTWIDTH, HELLBLACKBOARD, HELLPULSEFAST, HELLXMTIDLE,
|
|
WFPREFILTER, LATENCY,
|
|
USECURSORLINES, USECURSORCENTERLINE, USEBWTRACKS,
|
|
CLCOLORS,
|
|
CCCOLORS,
|
|
BWTCOLORS,
|
|
VIEWXMTSIGNAL, SENDID, MACROID, SENDTEXTID, STRTEXTID, VIDEOWIDTH, IDSMALL,
|
|
QRZTYPE, QRZPATHNAME, QRZUSER, QRZPASSWORD,
|
|
BTNUSB, BTNPTTIS,
|
|
RTSPTT, DTRPTT, RTSPLUS, DTRPLUS,
|
|
CHOICEHAMLIBIS, CHKUSEMEMMAPIS,
|
|
CHKUSEHAMLIBIS, CHKUSERIGCATIS, CHKUSEXMLRPCIS,
|
|
HAMRIGNAME, HAMRIGDEVICE, HAMRIGBAUDRATE,
|
|
PTTDEV,
|
|
SECONDARYTEXT,
|
|
AUDIOIO, OSSDEVICE, PADEVICE, PORTINDEVICE, PORTININDEX, PORTOUTDEVICE, PORTOUTINDEX, PULSESERVER,
|
|
SAMPLERATE, INSAMPLERATE, OUTSAMPLERATE, SAMPLECONVERTER, RXCORR, TXCORR, TXOFFSET,
|
|
USELEADINGZEROS, CONTESTSTART, CONTESTDIGITS,
|
|
USETIMER, MACRONUMBER, TIMEOUT,
|
|
MXDEVICE,
|
|
PCMVOLUME,
|
|
MICIN, LINEIN, ENABLEMIXER, MUTEINPUT,
|
|
PALETTE0, PALETTE1, PALETTE2, PALETTE3, PALETTE4,
|
|
PALETTE5, PALETTE6, PALETTE7, PALETTE8,
|
|
VIEWERMARQUEE, VIEWERSHOWFREQ, VIEWERSTART,
|
|
VIEWERCHANNELS, VIEWERSQUELCH, VIEWERTIMEOUT, WFAVERAGING,
|
|
USEGROUPCOLORS, FKEYGROUP1, FKEYGROUP2, FKEYGROUP3,
|
|
FKEYTEXTCOLOR,
|
|
RXFONTNBR, RXFONTSIZE, RXFNTCOLOR, TXFONTNBR, TXFONTSIZE, TXFNTCOLOR,
|
|
RXFONTCOLOR, TXFONTCOLOR, XMITCOLOR, CTRLCOLOR, SKIPCOLOR, ALTRCOLOR,
|
|
WATERFALLFONTNBR, WATERFALLFONTSIZE, UISCHEME,
|
|
RSIDWIDESEARCH, TRANSMITRSID, SLOWCPU,
|
|
MT638BIT, MT63INTERLEAVE
|
|
};
|
|
|
|
void writeXMLint(ofstream &f, const char * tag, int val)
|
|
{
|
|
f << "<" << tag << ">" << val << "</" << tag << ">\n";
|
|
}
|
|
|
|
void writeXMLdbl(ofstream &f, const char * tag, double val)
|
|
{
|
|
f << "<" << tag << ">" << val << "</" << tag << ">\n";
|
|
}
|
|
|
|
void writeXMLstr(ofstream &f, const char * tag, string val)
|
|
{
|
|
f << "<" << tag << ">" << val.c_str() << "</" << tag << ">\n";
|
|
}
|
|
|
|
void writeXMLbool(ofstream &f, const char * tag, bool val)
|
|
{
|
|
f << "<" << tag << ">" << val << "</" << tag << ">\n";
|
|
}
|
|
|
|
void writeXMLPalette(ofstream &f, int n, int r, int g, int b)
|
|
{
|
|
f << "<PALETTE" << n << ">";
|
|
f << r << " " << g << " " << b;
|
|
f << "</PALETTE" << n << ">\n";
|
|
}
|
|
|
|
void writeXMLrgb(ofstream &f, const char *tag, int r, int g, int b)
|
|
{
|
|
f << "<" << tag << ">" << r << " " << g << " " << b ;
|
|
f << "</" << tag << ">\n";
|
|
}
|
|
|
|
void configuration::writeDefaultsXML()
|
|
{
|
|
string deffname(HomeDir);
|
|
deffname.append("fldigi_def.xml");
|
|
|
|
string deffname_backup(deffname);
|
|
deffname_backup.append("-old");
|
|
rename(deffname.c_str(), deffname_backup.c_str());
|
|
|
|
ofstream f(deffname.c_str(), ios::out);
|
|
if (!f) {
|
|
LOG_ERROR("Could not write %s", deffname.c_str());
|
|
return;
|
|
}
|
|
|
|
f << "<FLDIGI_DEFS>\n";
|
|
|
|
writeXMLstr(f, "MYCALL", myCall);
|
|
writeXMLstr(f, "MYNAME", myName);
|
|
writeXMLstr(f, "MYQTH", myQth);
|
|
writeXMLstr(f, "MYLOC", myLocator);
|
|
|
|
writeXMLdbl(f, "WFREFLEVEL", wfRefLevel);
|
|
writeXMLdbl(f, "WFAMPSPAN", wfAmpSpan);
|
|
writeXMLint(f, "LOWFREQCUTOFF", LowFreqCutoff);
|
|
|
|
writeXMLbool(f, "WATERFALLHISTORYDEFAULT", WaterfallHistoryDefault);
|
|
writeXMLbool(f, "STARTATSWEETSPOT", StartAtSweetSpot);
|
|
writeXMLbool(f, "PSKMAILSWEETSPOT", PSKmailSweetSpot);
|
|
writeXMLint(f, "PSKSEARCHRANGE", SearchRange);
|
|
writeXMLint(f, "PSKSERVEROFFSET", ServerOffset);
|
|
writeXMLdbl(f, "CWSWEETSPOT", CWsweetspot);
|
|
writeXMLdbl(f, "PSKSWEETSPOT", PSKsweetspot);
|
|
writeXMLdbl(f, "ACQSN", ACQsn);
|
|
writeXMLdbl(f, "RTTYSWEETSPOT", RTTYsweetspot);
|
|
writeXMLint(f, "RTTYSHIFT", rtty_shift);
|
|
writeXMLint(f, "RTTYBAUD", rtty_baud);
|
|
writeXMLint(f, "RTTYBITS", rtty_bits);
|
|
writeXMLint(f, "RTTYPARITY", rtty_parity);
|
|
writeXMLint(f, "RTTYSTOP", rtty_stop);
|
|
writeXMLbool(f, "RTTYREVERSE", rtty_reverse);
|
|
writeXMLbool(f, "RTTYMSBFIRST", rtty_msbfirst);
|
|
writeXMLbool(f, "RTTYCRCLF", rtty_crcrlf);
|
|
writeXMLbool(f, "RTTYAUTOCRLF", rtty_autocrlf);
|
|
writeXMLint(f, "RTTYAUTOCOUNT", rtty_autocount);
|
|
writeXMLint(f, "RTTYAFCSPEED", rtty_afcspeed);
|
|
writeXMLbool(f, "RTTYUSB", RTTY_USB);
|
|
writeXMLbool(f, "PREFERXHAIRSCOPE", PreferXhairScope);
|
|
writeXMLbool(f, "PSEUDOFSK", PseudoFSK);
|
|
writeXMLbool(f, "UOSRX", UOSrx);
|
|
writeXMLbool(f, "UOSTX", UOStx);
|
|
writeXMLbool(f, "XAGC", Xagc);
|
|
|
|
writeXMLint(f, "CWWEIGHT", CWweight);
|
|
writeXMLint(f, "CWSPEED", CWspeed);
|
|
writeXMLint(f, "CWDEFSPEED", defCWspeed);
|
|
writeXMLint(f, "CWBANDWIDTH", CWbandwidth);
|
|
writeXMLint(f, "CWRANGE", CWrange);
|
|
writeXMLint(f, "CWLOWERLIMIT", CWlowerlimit);
|
|
writeXMLint(f, "CWUPPERLIMIT", CWupperlimit);
|
|
writeXMLbool(f, "CWTRACK", CWtrack);
|
|
writeXMLdbl(f, "CWRISETIME", CWrisetime);
|
|
writeXMLdbl(f, "CWDASH2DOT", CWdash2dot);
|
|
writeXMLbool(f, "QSK", QSK);
|
|
writeXMLdbl(f, "CWPRE", CWpre);
|
|
writeXMLdbl(f, "CWPOST", CWpost);
|
|
writeXMLbool(f, "CWID", CWid);
|
|
writeXMLint(f, "IDWPM", CWIDwpm);
|
|
|
|
writeXMLint(f, "OLIVIATONES", oliviatones);
|
|
writeXMLint(f, "OLIVIABW", oliviabw);
|
|
writeXMLint(f, "OLIVIASMARGIN", oliviasmargin);
|
|
writeXMLint(f, "OLIVIASINTEG", oliviasinteg);
|
|
writeXMLbool(f, "OLIVIA8BIT", olivia8bit);
|
|
|
|
writeXMLdbl(f, "THORBW", THOR_BW);
|
|
writeXMLbool(f, "THORFILTER", THOR_FILTER);
|
|
writeXMLstr(f, "THORSECTEXT", THORsecText);
|
|
writeXMLint(f, "THORPATHS", THOR_PATHS);
|
|
writeXMLbool(f, "THORSOFT", THOR_SOFT);
|
|
writeXMLdbl(f, "THORCWI", ThorCWI);
|
|
|
|
writeXMLdbl(f, "DOMINOEXBW", DOMINOEX_BW);
|
|
writeXMLbool(f, "DOMINOEXFILTER", DOMINOEX_FILTER);
|
|
writeXMLbool(f, "DOMINOEXFEC", DOMINOEX_FEC);
|
|
writeXMLint(f, "DOMINOEXPATHS", DOMINOEX_PATHS);
|
|
writeXMLdbl(f, "DOMCWI", DomCWI);
|
|
|
|
writeXMLint(f, "FELDFONTNBR", feldfontnbr);
|
|
writeXMLbool(f, "HELLRCVWIDTH", HellRcvWidth);
|
|
writeXMLint(f, "HELLXMTWIDTH", HellXmtWidth);
|
|
writeXMLbool(f, "HELLBLACKBOARD", HellBlackboard);
|
|
writeXMLbool(f, "HELLPULSEFAST", HellPulseFast);
|
|
writeXMLbool(f, "HELLXMTIDLE", HellXmtIdle);
|
|
|
|
writeXMLint(f, "WFPREFILTER", wfPreFilter);
|
|
writeXMLint(f, "LATENCY", latency);
|
|
writeXMLbool(f, "USECURSORLINES", UseCursorLines);
|
|
writeXMLbool(f, "USECURSORCENTERLINE", UseCursorCenterLine);
|
|
writeXMLbool(f, "USEBWTRACKS", UseBWTracks);
|
|
writeXMLrgb(f, "CLCOLORS",
|
|
cursorLineRGBI.R,
|
|
cursorLineRGBI.G,
|
|
cursorLineRGBI.B);
|
|
writeXMLrgb(f, "CCCOLORS",
|
|
cursorCenterRGBI.R,
|
|
cursorCenterRGBI.G,
|
|
cursorCenterRGBI.B);
|
|
writeXMLrgb(f, "BWTCOLORS",
|
|
bwTrackRGBI.R,
|
|
bwTrackRGBI.G,
|
|
bwTrackRGBI.B);
|
|
writeXMLbool(f, "VIEWXMTSIGNAL", viewXmtSignal);
|
|
writeXMLbool(f, "SENDID", sendid);
|
|
writeXMLbool(f, "MACROID", macroid);
|
|
writeXMLbool(f, "SENDTEXTID", sendtextid);
|
|
writeXMLstr(f, "STRTEXTID", strTextid);
|
|
writeXMLint(f, "VIDEOWIDTH", videowidth);
|
|
writeXMLbool(f, "IDSMALL", ID_SMALL);
|
|
writeXMLint(f, "QRZTYPE", QRZ);
|
|
writeXMLstr(f, "QRZPATHNAME", QRZpathname);
|
|
writeXMLstr(f, "QRZUSER", QRZusername);
|
|
writeXMLstr(f, "QRZPASSWORD", QRZuserpassword);
|
|
writeXMLbool(f, "BTNUSB", btnusb);
|
|
writeXMLint(f, "BTNPTTIS", btnPTTis);
|
|
writeXMLbool(f, "RTSPTT", RTSptt);
|
|
writeXMLbool(f, "DTRPTT", DTRptt);
|
|
writeXMLbool(f, "RTSPLUS", RTSplus);
|
|
writeXMLbool(f, "DTRPLUS", DTRplus);
|
|
writeXMLint(f, "CHOICEHAMLIBIS", choiceHAMLIBis);
|
|
writeXMLint(f, "CHKUSEMEMMAPIS", chkUSEMEMMAPis);
|
|
writeXMLint(f, "CHKUSEHAMLIBIS", chkUSEHAMLIBis);
|
|
writeXMLint(f, "CHKUSERIGCATIS", chkUSERIGCATis);
|
|
writeXMLint(f, "CHKUSEXMLRPCIS", chkUSEXMLRPCis);
|
|
writeXMLstr(f, "HAMRIGNAME", HamRigName);
|
|
writeXMLstr(f, "HAMRIGDEVICE", HamRigDevice);
|
|
writeXMLint(f, "HAMRIGBAUDRATE", HamRigBaudrate);
|
|
|
|
writeXMLstr(f, "PTTDEV", PTTdev);
|
|
writeXMLstr(f, "SECONDARYTEXT", secText);
|
|
writeXMLint(f, "AUDIOIO", btnAudioIOis);
|
|
writeXMLstr(f, "OSSDEVICE", OSSdevice);
|
|
writeXMLstr(f, "PADEVICE", PAdevice);
|
|
writeXMLstr(f, "PORTINDEVICE", PortInDevice);
|
|
writeXMLint(f, "PORTININDEX", PortInIndex);
|
|
writeXMLstr(f, "PORTOUTDEVICE", PortOutDevice);
|
|
writeXMLint(f, "PORTOUTINDEX", PortOutIndex);
|
|
writeXMLstr(f, "PULSESERVER", PulseServer);
|
|
writeXMLint(f, "SAMPLERATE", sample_rate);
|
|
writeXMLint(f, "INSAMPLERATE", in_sample_rate);
|
|
writeXMLint(f, "OUTSAMPLERATE", out_sample_rate);
|
|
writeXMLint(f, "SAMPLECONVERTER", sample_converter);
|
|
writeXMLint(f, "RXCORR", RX_corr);
|
|
writeXMLint(f, "TXCORR", TX_corr);
|
|
writeXMLint(f, "TXOFFSET", TxOffset);
|
|
writeXMLbool(f, "USELEADINGZEROS", UseLeadingZeros);
|
|
writeXMLint(f, "CONTESTSTART", ContestStart);
|
|
writeXMLint(f, "CONTESTDIGITS", ContestDigits);
|
|
writeXMLbool(f, "USETIMER", useTimer);
|
|
writeXMLint(f, "MACRONUMBER", macronumber);
|
|
writeXMLint(f, "TIMEOUT", timeout);
|
|
writeXMLstr(f, "MXDEVICE", MXdevice);
|
|
writeXMLdbl(f, "PCMVOLUME", PCMvolume);
|
|
writeXMLbool(f, "MICIN", MicIn);
|
|
writeXMLbool(f, "LINEIN", LineIn);
|
|
writeXMLbool(f, "ENABLEMIXER", EnableMixer);
|
|
writeXMLbool(f, "MUTEINPUT", MuteInput);
|
|
for (int i = 0; i < 9; i++)
|
|
writeXMLPalette(f, i, cfgpal[i].R, cfgpal[i].G, cfgpal[i].B);
|
|
|
|
writeXMLbool(f, "VIEWERMARQUEE", VIEWERmarquee);
|
|
writeXMLbool(f, "VIEWERSHOWFREQ", VIEWERshowfreq);
|
|
writeXMLint(f, "VIEWERSTART", VIEWERstart);
|
|
writeXMLint(f, "VIEWERCHANNELS", VIEWERchannels);
|
|
writeXMLdbl(f, "VIEWERSQUELCH", VIEWERsquelch);
|
|
writeXMLint(f, "VIEWERTIMEOUT", VIEWERtimeout);
|
|
writeXMLbool(f,"WFAVERAGING", WFaveraging);
|
|
|
|
writeXMLbool(f,"USEGROUPCOLORS", useGroupColors);
|
|
writeXMLrgb(f, "FKEYGROUP1", btnGroup1.R, btnGroup1.G, btnGroup1.B);
|
|
writeXMLrgb(f, "FKEYGROUP2", btnGroup2.R, btnGroup2.G, btnGroup2.B);
|
|
writeXMLrgb(f, "FKEYGROUP3", btnGroup3.R, btnGroup3.G, btnGroup3.B);
|
|
writeXMLrgb(f, "FKEYTEXTCOLOR",
|
|
btnFkeyTextColor.R, btnFkeyTextColor.G, btnFkeyTextColor.B);
|
|
|
|
writeXMLint(f, "RXFONTNBR", (int)RxFontnbr);
|
|
writeXMLint(f, "RXFONTSIZE", RxFontsize);
|
|
writeXMLint(f, "RXFNTCOLOR", (int)RxFontcolor);
|
|
writeXMLint(f, "TXFONTNBR", (int)TxFontnbr);
|
|
writeXMLint(f, "TXFONTSIZE", TxFontsize);
|
|
writeXMLint(f, "TXFNTCOLOR", (int)TxFontcolor);
|
|
writeXMLint(f, "XMITCOLOR", (int)XMITcolor);
|
|
writeXMLint(f, "CTRLCOLOR", (int)CTRLcolor);
|
|
writeXMLint(f, "SKIPCOLOR", (int)SKIPcolor);
|
|
writeXMLint(f, "ALTRCOLOR", (int)ALTRcolor);
|
|
|
|
writeXMLrgb(f, "RXFONTCOLOR", RxColor.R, RxColor.G, RxColor.B);
|
|
writeXMLrgb(f, "TXFONTCOLOR", TxColor.R, TxColor.G, TxColor.B);
|
|
writeXMLint(f, "WATERFALLFONTNBR", (int)WaterfallFontnbr);
|
|
writeXMLint(f, "WATERFALLFONTSIZE", WaterfallFontsize);
|
|
|
|
writeXMLstr(f, "UISCHEME", ui_scheme);
|
|
|
|
writeXMLbool(f, "RSIDWIDESEARCH", rsidWideSearch);
|
|
writeXMLbool(f, "TRANSMITRSID", TransmitRSid);
|
|
writeXMLbool(f, "SLOWCPU", slowcpu);
|
|
|
|
writeXMLbool(f, "MT638BIT", mt63_8bit);
|
|
writeXMLint(f, "MT63INTERLEAVE", mt63_interleave);
|
|
|
|
f << "</FLDIGI_DEFS>\n";
|
|
f.close();
|
|
}
|
|
|
|
bool configuration::readDefaultsXML()
|
|
{
|
|
string deffname = HomeDir;
|
|
deffname.append("fldigi_def.xml");
|
|
ifstream f_in(deffname.c_str(), ios::in);
|
|
|
|
if (!f_in) return false;
|
|
string xmlpage;
|
|
char str[255];
|
|
while (f_in) {
|
|
f_in.getline(str, 255);
|
|
xmlpage += str;
|
|
xmlpage += '\n';
|
|
}
|
|
f_in.close();
|
|
|
|
IrrXMLReader* xml = createIrrXMLReader(new IIrrXMLStringReader(xmlpage));
|
|
|
|
// strings for storing the data we want to get out of the file
|
|
TAG tag = IGNORE;
|
|
|
|
// parse the file until end reached
|
|
while(xml && xml->read()) {
|
|
switch(xml->getNodeType()) {
|
|
case EXN_TEXT:
|
|
case EXN_CDATA:
|
|
switch (tag) {
|
|
default:
|
|
case IGNORE:
|
|
break;
|
|
case MYCALL :
|
|
myCall = xml->getNodeData();
|
|
break;
|
|
case MYNAME:
|
|
myName = xml->getNodeData();
|
|
break;
|
|
case MYQTH:
|
|
myQth = xml->getNodeData();
|
|
break;
|
|
case MYLOC:
|
|
myLocator = xml->getNodeData();
|
|
break;
|
|
case WFREFLEVEL:
|
|
wfRefLevel = atof(xml->getNodeData());
|
|
break;
|
|
case WFAMPSPAN :
|
|
wfAmpSpan = atof(xml->getNodeData());
|
|
break;
|
|
case LOWFREQCUTOFF :
|
|
LowFreqCutoff = atoi(xml->getNodeData());
|
|
break;
|
|
case WATERFALLHISTORYDEFAULT :
|
|
WaterfallHistoryDefault = atoi(xml->getNodeData());
|
|
break;
|
|
case STARTATSWEETSPOT :
|
|
StartAtSweetSpot = atoi(xml->getNodeData());
|
|
break;
|
|
case PSKMAILSWEETSPOT :
|
|
PSKmailSweetSpot = atoi(xml->getNodeData());
|
|
break;
|
|
case PSKSEARCHRANGE :
|
|
SearchRange = atoi(xml->getNodeData());
|
|
break;
|
|
case PSKSERVEROFFSET :
|
|
ServerOffset = atoi(xml->getNodeData());
|
|
break;
|
|
case ACQSN :
|
|
ACQsn = atof(xml->getNodeData());
|
|
break;
|
|
case CWSWEETSPOT :
|
|
CWsweetspot = atof(xml->getNodeData());
|
|
break;
|
|
case PSKSWEETSPOT :
|
|
PSKsweetspot = atof(xml->getNodeData());
|
|
break;
|
|
case RTTYSWEETSPOT :
|
|
RTTYsweetspot = atof(xml->getNodeData());
|
|
break;
|
|
case RTTYSHIFT :
|
|
rtty_shift = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYBAUD :
|
|
rtty_baud = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYBITS :
|
|
rtty_bits = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYPARITY :
|
|
rtty_parity = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYSTOP :
|
|
rtty_stop = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYREVERSE :
|
|
rtty_reverse = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYMSBFIRST :
|
|
rtty_msbfirst = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYCRCLF :
|
|
rtty_crcrlf = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYAUTOCRLF :
|
|
rtty_autocrlf = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYAUTOCOUNT :
|
|
rtty_autocount = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYAFCSPEED :
|
|
rtty_afcspeed = atoi(xml->getNodeData());
|
|
break;
|
|
case RTTYUSB :
|
|
RTTY_USB = atoi(xml->getNodeData());
|
|
break;
|
|
case PREFERXHAIRSCOPE :
|
|
PreferXhairScope = atoi(xml->getNodeData());
|
|
break;
|
|
case PSEUDOFSK :
|
|
PseudoFSK = atoi(xml->getNodeData());
|
|
break;
|
|
case UOSRX :
|
|
UOSrx = atoi(xml->getNodeData());
|
|
break;
|
|
case UOSTX :
|
|
UOStx = atoi(xml->getNodeData());
|
|
break;
|
|
case XAGC :
|
|
Xagc = atoi(xml->getNodeData());
|
|
break;
|
|
case CWWEIGHT :
|
|
CWweight = atoi(xml->getNodeData());
|
|
break;
|
|
case CWSPEED :
|
|
CWspeed = atoi(xml->getNodeData());
|
|
break;
|
|
case CWDEFSPEED :
|
|
defCWspeed = atoi(xml->getNodeData());
|
|
break;
|
|
case CWBANDWIDTH :
|
|
CWbandwidth = atoi(xml->getNodeData());
|
|
break;
|
|
case CWRANGE :
|
|
CWrange = atoi(xml->getNodeData());
|
|
break;
|
|
case CWLOWERLIMIT :
|
|
CWlowerlimit = atoi(xml->getNodeData());
|
|
break;
|
|
case CWUPPERLIMIT :
|
|
CWupperlimit = atoi(xml->getNodeData());
|
|
break;
|
|
case CWTRACK :
|
|
CWtrack = atoi(xml->getNodeData());
|
|
break;
|
|
case CWRISETIME :
|
|
CWrisetime = atof(xml->getNodeData());
|
|
break;
|
|
case CWDASH2DOT :
|
|
CWdash2dot = atof(xml->getNodeData());
|
|
break;
|
|
case XQSK :
|
|
QSK = atoi(xml->getNodeData());
|
|
break;
|
|
case CWPRE :
|
|
CWpre = atof(xml->getNodeData());
|
|
break;
|
|
case CWPOST :
|
|
CWpost = atof(xml->getNodeData());
|
|
break;
|
|
case CWID :
|
|
CWid = atoi(xml->getNodeData());
|
|
break;
|
|
case CWIDWPM :
|
|
CWIDwpm = atoi(xml->getNodeData());
|
|
break;
|
|
case OLIVIATONES :
|
|
oliviatones = atoi(xml->getNodeData());
|
|
break;
|
|
case OLIVIABW :
|
|
oliviabw = atoi(xml->getNodeData());
|
|
break;
|
|
case OLIVIASMARGIN :
|
|
oliviasmargin = atoi(xml->getNodeData());
|
|
break;
|
|
case OLIVIASINTEG :
|
|
oliviasinteg = atoi(xml->getNodeData());
|
|
break;
|
|
case OLIVIA8BIT :
|
|
olivia8bit = atoi(xml->getNodeData());
|
|
break;
|
|
case THORBW :
|
|
THOR_BW = atof(xml->getNodeData());
|
|
break;
|
|
case THORFILTER :
|
|
THOR_FILTER = atoi(xml->getNodeData());
|
|
break;
|
|
case THORSECTEXT :
|
|
THORsecText = xml->getNodeData();
|
|
break;
|
|
case THORPATHS :
|
|
THOR_PATHS = atoi(xml->getNodeData());
|
|
break;
|
|
case THORSOFT :
|
|
THOR_SOFT = atoi(xml->getNodeData());
|
|
break;
|
|
case THORCWI :
|
|
ThorCWI = atof(xml->getNodeData());
|
|
break;
|
|
case DOMINOEXBW :
|
|
DOMINOEX_BW = atof(xml->getNodeData());
|
|
break;
|
|
case DOMINOEXFILTER :
|
|
DOMINOEX_FILTER = atoi(xml->getNodeData());
|
|
break;
|
|
case DOMINOEXFEC :
|
|
DOMINOEX_FEC = atoi(xml->getNodeData());
|
|
break;
|
|
case DOMINOEXPATHS :
|
|
DOMINOEX_PATHS = atoi(xml->getNodeData());
|
|
break;
|
|
case DOMCWI :
|
|
DomCWI = atof(xml->getNodeData());
|
|
break;
|
|
case FELDFONTNBR :
|
|
feldfontnbr = atoi(xml->getNodeData());
|
|
break;
|
|
case HELLRCVWIDTH :
|
|
HellRcvWidth = atoi(xml->getNodeData());
|
|
break;
|
|
case HELLXMTWIDTH :
|
|
HellXmtWidth = atoi(xml->getNodeData());
|
|
if (HellXmtWidth == 0) HellXmtWidth = 1;
|
|
break;
|
|
case HELLBLACKBOARD :
|
|
HellBlackboard = atoi(xml->getNodeData());
|
|
break;
|
|
case HELLPULSEFAST :
|
|
HellPulseFast = atoi(xml->getNodeData());
|
|
break;
|
|
case HELLXMTIDLE :
|
|
HellXmtIdle = atoi(xml->getNodeData());
|
|
break;
|
|
case WFPREFILTER :
|
|
wfPreFilter = atoi(xml->getNodeData());
|
|
break;
|
|
case LATENCY :
|
|
latency = atoi(xml->getNodeData());
|
|
break;
|
|
case USECURSORLINES :
|
|
UseCursorLines = atoi(xml->getNodeData());
|
|
break;
|
|
case USECURSORCENTERLINE :
|
|
UseCursorCenterLine = atoi(xml->getNodeData());
|
|
break;
|
|
case USEBWTRACKS :
|
|
UseBWTracks = atoi(xml->getNodeData());
|
|
break;
|
|
case CLCOLORS :
|
|
sscanf( xml->getNodeData(), "%hhu %hhu %hhu",
|
|
&cursorLineRGBI.R,
|
|
&cursorLineRGBI.G,
|
|
&cursorLineRGBI.B );
|
|
break;
|
|
case CCCOLORS :
|
|
sscanf( xml->getNodeData(), "%hhu %hhu %hhu",
|
|
&cursorCenterRGBI.R,
|
|
&cursorCenterRGBI.G,
|
|
&cursorCenterRGBI.B );
|
|
break;
|
|
case BWTCOLORS :
|
|
sscanf( xml->getNodeData(), "%hhu %hhu %hhu",
|
|
&bwTrackRGBI.R,
|
|
&bwTrackRGBI.G,
|
|
&bwTrackRGBI.B );
|
|
break;
|
|
case VIEWXMTSIGNAL :
|
|
viewXmtSignal = atoi(xml->getNodeData());
|
|
break;
|
|
case SENDID :
|
|
sendid = atoi(xml->getNodeData());
|
|
break;
|
|
case MACROID :
|
|
macroid = atoi(xml->getNodeData());
|
|
break;
|
|
case SENDTEXTID :
|
|
sendtextid = atoi(xml->getNodeData());
|
|
break;
|
|
case STRTEXTID :
|
|
strTextid = xml->getNodeData();
|
|
case VIDEOWIDTH :
|
|
videowidth = atoi(xml->getNodeData());
|
|
case IDSMALL :
|
|
ID_SMALL = atoi(xml->getNodeData());
|
|
case QRZTYPE :
|
|
QRZ = atoi(xml->getNodeData());
|
|
break;
|
|
case QRZPATHNAME :
|
|
QRZpathname = xml->getNodeData();
|
|
break;
|
|
case QRZUSER :
|
|
QRZusername = xml->getNodeData();
|
|
break;
|
|
case QRZPASSWORD :
|
|
QRZuserpassword = xml->getNodeData();
|
|
break;
|
|
case BTNUSB :
|
|
btnusb = atoi(xml->getNodeData());
|
|
break;
|
|
case BTNPTTIS :
|
|
btnPTTis = atoi(xml->getNodeData());
|
|
break;
|
|
case RTSPTT :
|
|
RTSptt = atoi(xml->getNodeData());
|
|
break;
|
|
case DTRPTT :
|
|
DTRptt = atoi(xml->getNodeData());
|
|
break;
|
|
case RTSPLUS :
|
|
RTSplus = atoi(xml->getNodeData());
|
|
break;
|
|
case DTRPLUS :
|
|
DTRplus = atoi(xml->getNodeData());
|
|
break;
|
|
case CHOICEHAMLIBIS :
|
|
choiceHAMLIBis = atoi(xml->getNodeData());
|
|
break;
|
|
case CHKUSEMEMMAPIS :
|
|
chkUSEMEMMAPis = atoi(xml->getNodeData());
|
|
break;
|
|
case CHKUSEHAMLIBIS :
|
|
chkUSEHAMLIBis = atoi(xml->getNodeData());
|
|
break;
|
|
case CHKUSERIGCATIS :
|
|
chkUSERIGCATis = atoi(xml->getNodeData());
|
|
break;
|
|
case CHKUSEXMLRPCIS :
|
|
chkUSEXMLRPCis = atoi(xml->getNodeData());
|
|
break;
|
|
case HAMRIGNAME :
|
|
HamRigName = xml->getNodeData();
|
|
break;
|
|
case HAMRIGDEVICE :
|
|
HamRigDevice = xml->getNodeData();
|
|
break;
|
|
case HAMRIGBAUDRATE :
|
|
HamRigBaudrate = atoi(xml->getNodeData());
|
|
break;
|
|
case PTTDEV :
|
|
PTTdev = xml->getNodeData();
|
|
break;
|
|
case SECONDARYTEXT :
|
|
secText = xml->getNodeData();
|
|
break;
|
|
case AUDIOIO :
|
|
btnAudioIOis = atoi(xml->getNodeData());
|
|
break;
|
|
case OSSDEVICE :
|
|
OSSdevice = xml->getNodeData();
|
|
break;
|
|
case PADEVICE :
|
|
PAdevice = xml->getNodeData();
|
|
break;
|
|
case PORTINDEVICE :
|
|
PortInDevice = xml->getNodeData();
|
|
break;
|
|
case PORTININDEX :
|
|
PortInIndex = atoi(xml->getNodeData());
|
|
break;
|
|
case PORTOUTDEVICE :
|
|
PortOutDevice = xml->getNodeData();
|
|
break;
|
|
case PORTOUTINDEX :
|
|
PortOutIndex = atoi(xml->getNodeData());
|
|
break;
|
|
case PULSESERVER :
|
|
PulseServer = xml->getNodeData();
|
|
break;
|
|
case SAMPLERATE :
|
|
sample_rate = atoi(xml->getNodeData());
|
|
break;
|
|
case INSAMPLERATE :
|
|
in_sample_rate = atoi(xml->getNodeData());
|
|
break;
|
|
case OUTSAMPLERATE :
|
|
out_sample_rate = atoi(xml->getNodeData());
|
|
break;
|
|
case SAMPLECONVERTER :
|
|
sample_converter = atoi(xml->getNodeData());
|
|
break;
|
|
case RXCORR :
|
|
RX_corr = atoi(xml->getNodeData());
|
|
break;
|
|
case TXCORR :
|
|
TX_corr = atoi(xml->getNodeData());
|
|
break;
|
|
case TXOFFSET :
|
|
TxOffset = atoi(xml->getNodeData());
|
|
break;
|
|
case USELEADINGZEROS :
|
|
UseLeadingZeros = atoi(xml->getNodeData());
|
|
break;
|
|
case CONTESTSTART :
|
|
ContestStart = atoi(xml->getNodeData());
|
|
break;
|
|
case CONTESTDIGITS :
|
|
ContestDigits = atoi(xml->getNodeData());
|
|
break;
|
|
case USETIMER :
|
|
useTimer = atoi(xml->getNodeData());
|
|
break;
|
|
case MACRONUMBER :
|
|
macronumber = atoi(xml->getNodeData());
|
|
break;
|
|
case TIMEOUT :
|
|
timeout = atoi(xml->getNodeData());
|
|
break;
|
|
case MXDEVICE :
|
|
MXdevice = xml->getNodeData();
|
|
break;
|
|
case PCMVOLUME :
|
|
PCMvolume = atof(xml->getNodeData());
|
|
break;
|
|
case MICIN :
|
|
MicIn = atoi(xml->getNodeData());
|
|
break;
|
|
case LINEIN :
|
|
LineIn = atoi(xml->getNodeData());
|
|
break;
|
|
case ENABLEMIXER :
|
|
EnableMixer = atoi(xml->getNodeData());
|
|
break;
|
|
case MUTEINPUT :
|
|
MuteInput = atoi(xml->getNodeData());
|
|
break;
|
|
case PALETTE0 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[0].R, &cfgpal[0].G, &cfgpal[0].B );
|
|
break;
|
|
case PALETTE1 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[1].R, &cfgpal[1].G, &cfgpal[1].B );
|
|
break;
|
|
case PALETTE2 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[2].R, &cfgpal[2].G, &cfgpal[2].B );
|
|
break;
|
|
case PALETTE3 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[3].R, &cfgpal[3].G, &cfgpal[3].B );
|
|
break;
|
|
case PALETTE4 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[4].R, &cfgpal[4].G, &cfgpal[4].B );
|
|
break;
|
|
case PALETTE5 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[5].R, &cfgpal[5].G, &cfgpal[5].B );
|
|
break;
|
|
case PALETTE6 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[6].R, &cfgpal[6].G, &cfgpal[6].B );
|
|
break;
|
|
case PALETTE7 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[7].R, &cfgpal[7].G, &cfgpal[7].B );
|
|
break;
|
|
case PALETTE8 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&cfgpal[8].R, &cfgpal[8].G, &cfgpal[8].B );
|
|
break;
|
|
case VIEWERMARQUEE :
|
|
VIEWERmarquee = atoi(xml->getNodeData());
|
|
break;
|
|
case VIEWERSHOWFREQ :
|
|
VIEWERshowfreq = atoi(xml->getNodeData());
|
|
break;
|
|
case VIEWERSTART :
|
|
VIEWERstart = atoi(xml->getNodeData());
|
|
break;
|
|
case VIEWERCHANNELS :
|
|
VIEWERchannels = atoi(xml->getNodeData());
|
|
break;
|
|
case VIEWERSQUELCH :
|
|
VIEWERsquelch = atof(xml->getNodeData());
|
|
break;
|
|
case VIEWERTIMEOUT :
|
|
VIEWERtimeout = atoi(xml->getNodeData());
|
|
break;
|
|
case WFAVERAGING :
|
|
WFaveraging = atoi(xml->getNodeData());
|
|
break;
|
|
case USEGROUPCOLORS :
|
|
useGroupColors = atoi(xml->getNodeData());
|
|
case FKEYGROUP1 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&btnGroup1.R, &btnGroup1.G, &btnGroup1.B);
|
|
break;
|
|
case FKEYGROUP2 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&btnGroup2.R, &btnGroup2.G, &btnGroup2.B);
|
|
break;
|
|
case FKEYGROUP3 :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&btnGroup3.R, &btnGroup3.G, &btnGroup3.B);
|
|
break;
|
|
case FKEYTEXTCOLOR :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&btnFkeyTextColor.R,
|
|
&btnFkeyTextColor.G,
|
|
&btnFkeyTextColor.B);
|
|
break;
|
|
case RXFONTNBR :
|
|
RxFontnbr = (Fl_Font)atoi(xml->getNodeData());
|
|
break;
|
|
case RXFONTSIZE :
|
|
RxFontsize = atoi(xml->getNodeData());
|
|
break;
|
|
case RXFNTCOLOR :
|
|
RxFontcolor = (Fl_Color)atoi(xml->getNodeData());
|
|
break;
|
|
case TXFONTNBR :
|
|
TxFontnbr = (Fl_Font)atoi(xml->getNodeData());
|
|
break;
|
|
case TXFONTSIZE :
|
|
TxFontsize = atoi(xml->getNodeData());
|
|
break;
|
|
case TXFNTCOLOR :
|
|
TxFontcolor = (Fl_Color)atoi(xml->getNodeData());
|
|
break;
|
|
case RXFONTCOLOR :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&RxColor.R, &RxColor.G, &RxColor.B);
|
|
break;
|
|
case XMITCOLOR :
|
|
XMITcolor = (Fl_Color)atoi(xml->getNodeData());
|
|
break;
|
|
case CTRLCOLOR :
|
|
CTRLcolor = (Fl_Color)atoi(xml->getNodeData());
|
|
break;
|
|
case SKIPCOLOR :
|
|
SKIPcolor = (Fl_Color)atoi(xml->getNodeData());
|
|
break;
|
|
case ALTRCOLOR :
|
|
ALTRcolor = (Fl_Color)atoi(xml->getNodeData());
|
|
break;
|
|
case WATERFALLFONTNBR :
|
|
WaterfallFontnbr = (Fl_Font)atoi(xml->getNodeData());
|
|
break;
|
|
case WATERFALLFONTSIZE :
|
|
WaterfallFontsize = atoi(xml->getNodeData());
|
|
break;
|
|
case UISCHEME :
|
|
ui_scheme = xml->getNodeData();
|
|
break;
|
|
case TXFONTCOLOR :
|
|
sscanf( xml->getNodeData(), "%d %d %d",
|
|
&TxColor.R, &TxColor.G, &TxColor.B);
|
|
break;
|
|
case RSIDWIDESEARCH :
|
|
rsidWideSearch = atoi(xml->getNodeData());
|
|
break;
|
|
case TRANSMITRSID :
|
|
TransmitRSid = atoi(xml->getNodeData());
|
|
break;
|
|
case SLOWCPU :
|
|
slowcpu = atoi(xml->getNodeData());
|
|
break;
|
|
case MT638BIT :
|
|
mt63_8bit = atoi(xml->getNodeData());
|
|
break;
|
|
case MT63INTERLEAVE :
|
|
mt63_interleave = atoi(xml->getNodeData());
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case EXN_ELEMENT_END:
|
|
tag=IGNORE;
|
|
break;
|
|
|
|
case EXN_ELEMENT:
|
|
{
|
|
const char *nodeName = xml->getNodeName();
|
|
if (!strcmp("MYCALL", nodeName)) tag = MYCALL;
|
|
else if (!strcmp("MYNAME", nodeName)) tag = MYNAME;
|
|
else if (!strcmp("MYQTH", nodeName)) tag = MYQTH;
|
|
else if (!strcmp("MYLOC", nodeName)) tag = MYLOC;
|
|
else if (!strcmp("SQUELCH", nodeName)) tag = SQUELCH;
|
|
else if (!strcmp("WFREFLEVEL", nodeName)) tag = WFREFLEVEL;
|
|
else if (!strcmp("WFAMPSPAN", nodeName)) tag = WFAMPSPAN;
|
|
else if (!strcmp("LOWFREQCUTOFF", nodeName)) tag = LOWFREQCUTOFF;
|
|
else if (!strcmp("WATERFALLHISTORYDEFAULT", nodeName)) tag = WATERFALLHISTORYDEFAULT;
|
|
else if (!strcmp("STARTATSWEETSPOT", nodeName)) tag = STARTATSWEETSPOT;
|
|
else if (!strcmp("PSKMAILSWEETSPOT", nodeName)) tag = PSKMAILSWEETSPOT;
|
|
else if (!strcmp("PSKSEARCHRANGE", nodeName)) tag = PSKSEARCHRANGE;
|
|
else if (!strcmp("PSKSERVEROFFSET", nodeName)) tag = PSKSERVEROFFSET;
|
|
else if (!strcmp("ACQSN", nodeName)) tag = ACQSN;
|
|
else if (!strcmp("CWSWEETSPOT", nodeName)) tag = CWSWEETSPOT;
|
|
else if (!strcmp("PSKSWEETSPOT", nodeName)) tag = PSKSWEETSPOT;
|
|
else if (!strcmp("RTTYSWEETSPOT", nodeName)) tag = RTTYSWEETSPOT;
|
|
else if (!strcmp("RTTYSHIFT", nodeName)) tag = RTTYSHIFT;
|
|
else if (!strcmp("RTTYBAUD", nodeName)) tag = RTTYBAUD;
|
|
else if (!strcmp("RTTYBITS", nodeName)) tag = RTTYBITS;
|
|
else if (!strcmp("RTTYPARITY", nodeName)) tag = RTTYPARITY;
|
|
else if (!strcmp("RTTYSTOP", nodeName)) tag = RTTYSTOP;
|
|
else if (!strcmp("RTTYREVERSE", nodeName)) tag = RTTYREVERSE;
|
|
else if (!strcmp("RTTYMSBFIRST", nodeName)) tag = RTTYMSBFIRST;
|
|
else if (!strcmp("RTTYCRCLF", nodeName)) tag = RTTYCRCLF;
|
|
else if (!strcmp("RTTYAUTOCRLF", nodeName)) tag = RTTYAUTOCRLF;
|
|
else if (!strcmp("RTTYAUTOCOUNT", nodeName)) tag = RTTYAUTOCOUNT;
|
|
else if (!strcmp("RTTYAFCSPEED", nodeName)) tag = RTTYAFCSPEED;
|
|
else if (!strcmp("RTTYUSB", nodeName)) tag = RTTYUSB;
|
|
else if (!strcmp("PREFERXHAIRSCOPE", nodeName)) tag = PREFERXHAIRSCOPE;
|
|
else if (!strcmp("PSEUDOFSK", nodeName)) tag = PSEUDOFSK;
|
|
else if (!strcmp("UOSRX", nodeName)) tag = UOSRX;
|
|
else if (!strcmp("UOSTX", nodeName)) tag = UOSTX;
|
|
else if (!strcmp("XAGC", nodeName)) tag = XAGC;
|
|
else if (!strcmp("CWWEIGHT", nodeName)) tag = CWWEIGHT;
|
|
else if (!strcmp("CWSPEED", nodeName)) tag = CWSPEED;
|
|
else if (!strcmp("CWDEFSPEED", nodeName)) tag = CWDEFSPEED;
|
|
else if (!strcmp("CWBANDWIDTH", nodeName)) tag = CWBANDWIDTH;
|
|
else if (!strcmp("CWRANGE", nodeName)) tag = CWRANGE;
|
|
else if (!strcmp("CWLOWERLIMIT", nodeName)) tag = CWLOWERLIMIT;
|
|
else if (!strcmp("CWUPPERLIMIT", nodeName)) tag = CWUPPERLIMIT;
|
|
else if (!strcmp("CWTRACK", nodeName)) tag = CWTRACK;
|
|
else if (!strcmp("CWRISETIME", nodeName)) tag = CWRISETIME;
|
|
else if (!strcmp("CWDASH2DOT", nodeName)) tag = CWDASH2DOT;
|
|
else if (!strcmp("QSK", nodeName)) tag = XQSK;
|
|
else if (!strcmp("CWPRE", nodeName)) tag = CWPRE;
|
|
else if (!strcmp("CWPOST", nodeName)) tag = CWPOST;
|
|
else if (!strcmp("CWID", nodeName)) tag = CWID;
|
|
else if (!strcmp("IDWPM", nodeName)) tag = CWIDWPM;
|
|
else if (!strcmp("OLIVIATONES", nodeName)) tag = OLIVIATONES;
|
|
else if (!strcmp("OLIVIABW", nodeName)) tag = OLIVIABW;
|
|
else if (!strcmp("OLIVIASMARGIN", nodeName)) tag = OLIVIASMARGIN;
|
|
else if (!strcmp("OLIVIASINTEG", nodeName)) tag = OLIVIASINTEG;
|
|
else if (!strcmp("OLIVIA8BIT", nodeName)) tag = OLIVIA8BIT;
|
|
else if (!strcmp("THORBW", nodeName)) tag = THORBW;
|
|
else if (!strcmp("THORFILTER", nodeName)) tag = THORFILTER;
|
|
else if (!strcmp("THORSECTEXT", nodeName)) tag = THORSECTEXT;
|
|
else if (!strcmp("THORPATHS", nodeName)) tag = THORPATHS;
|
|
else if (!strcmp("THORSOFT", nodeName)) tag = THORSOFT;
|
|
else if (!strcmp("THORCWI", nodeName)) tag = THORCWI;
|
|
else if (!strcmp("DOMINOEXBW", nodeName)) tag = DOMINOEXBW;
|
|
else if (!strcmp("DOMINOEXFILTER", nodeName)) tag = DOMINOEXFILTER;
|
|
else if (!strcmp("DOMINOEXFEC", nodeName)) tag = DOMINOEXFEC;
|
|
else if (!strcmp("DOMINOEXPATHS", nodeName)) tag = DOMINOEXPATHS;
|
|
else if (!strcmp("DOMCWI", nodeName)) tag = DOMCWI;
|
|
else if (!strcmp("FELDFONTNBR", nodeName)) tag = FELDFONTNBR;
|
|
else if (!strcmp("HELLRCVWIDTH", nodeName)) tag = HELLRCVWIDTH;
|
|
else if (!strcmp("HELLXMTWIDTH", nodeName)) tag = HELLXMTWIDTH;
|
|
else if (!strcmp("HELLBLACKBOARD", nodeName)) tag = HELLBLACKBOARD;
|
|
else if (!strcmp("HELLPULSEFAST", nodeName)) tag = HELLPULSEFAST;
|
|
else if (!strcmp("HELLXMTIDLE", nodeName)) tag = HELLXMTIDLE;
|
|
else if (!strcmp("WFPREFILTER", nodeName)) tag = WFPREFILTER;
|
|
else if (!strcmp("LATENCY", nodeName)) tag = LATENCY;
|
|
else if (!strcmp("USECURSORLINES", nodeName)) tag = USECURSORLINES;
|
|
else if (!strcmp("USECURSORCENTERLINE", nodeName)) tag = USECURSORCENTERLINE;
|
|
else if (!strcmp("USEBWTRACKS", nodeName)) tag = USEBWTRACKS;
|
|
else if (!strcmp("CLCOLORS", nodeName)) tag = CLCOLORS;
|
|
else if (!strcmp("CCCOLORS", nodeName)) tag = CCCOLORS;
|
|
else if (!strcmp("BWTCOLORS", nodeName)) tag = BWTCOLORS;
|
|
else if (!strcmp("VIEWXMTSIGNAL", nodeName)) tag = VIEWXMTSIGNAL;
|
|
else if (!strcmp("SENDID", nodeName)) tag = SENDID;
|
|
else if (!strcmp("MACROID", nodeName)) tag = MACROID;
|
|
else if (!strcmp("SENDTEXTID", nodeName)) tag = SENDTEXTID;
|
|
else if (!strcmp("STRTEXTID", nodeName)) tag = STRTEXTID;
|
|
else if (!strcmp("VIDEOWIDTH", nodeName)) tag = VIDEOWIDTH;
|
|
else if (!strcmp("IDSMALL", nodeName)) tag = IDSMALL;
|
|
else if (!strcmp("QRZUSER", nodeName)) tag = QRZUSER;
|
|
else if (!strcmp("QRZPATHNAME", nodeName)) tag = QRZPATHNAME;
|
|
else if (!strcmp("QRZPASSWORD", nodeName)) tag = QRZPASSWORD;
|
|
else if (!strcmp("QRZTYPE", nodeName)) tag = QRZTYPE;
|
|
else if (!strcmp("BTNUSB", nodeName)) tag = BTNUSB;
|
|
else if (!strcmp("BTNPTTIS", nodeName)) tag = BTNPTTIS;
|
|
else if (!strcmp("RTSPTT", nodeName)) tag = RTSPTT;
|
|
else if (!strcmp("DTRPTT", nodeName)) tag = DTRPTT;
|
|
else if (!strcmp("RTSPLUS", nodeName)) tag = RTSPLUS;
|
|
else if (!strcmp("DTRPLUS", nodeName)) tag = DTRPLUS;
|
|
else if (!strcmp("CHOICEHAMLIBIS", nodeName)) tag = CHOICEHAMLIBIS;
|
|
else if (!strcmp("CHKUSEMEMMAPIS", nodeName)) tag = CHKUSEMEMMAPIS;
|
|
else if (!strcmp("CHKUSEHAMLIBIS", nodeName)) tag = CHKUSEHAMLIBIS;
|
|
else if (!strcmp("CHKUSERIGCATIS", nodeName)) tag = CHKUSERIGCATIS;
|
|
else if (!strcmp("CHKUSEXMLRPCIS", nodeName)) tag = CHKUSEXMLRPCIS;
|
|
else if (!strcmp("HAMRIGNAME", nodeName)) tag = HAMRIGNAME;
|
|
else if (!strcmp("HAMRIGDEVICE", nodeName)) tag = HAMRIGDEVICE;
|
|
else if (!strcmp("HAMRIGBAUDRATE", nodeName)) tag = HAMRIGBAUDRATE;
|
|
else if (!strcmp("PTTDEV", nodeName)) tag = PTTDEV;
|
|
else if (!strcmp("SECONDARYTEXT", nodeName)) tag = SECONDARYTEXT;
|
|
else if (!strcmp("AUDIOIO", nodeName)) tag = AUDIOIO;
|
|
else if (!strcmp("OSSDEVICE", nodeName)) tag = OSSDEVICE;
|
|
else if (!strcmp("PADEVICE", nodeName)) tag = PADEVICE;
|
|
else if (!strcmp("PORTINDEVICE", nodeName)) tag = PORTINDEVICE;
|
|
else if (!strcmp("PORTININDEX", nodeName)) tag = PORTININDEX;
|
|
else if (!strcmp("PORTOUTDEVICE", nodeName)) tag = PORTOUTDEVICE;
|
|
else if (!strcmp("PORTOUTINDEX", nodeName)) tag = PORTOUTINDEX;
|
|
else if (!strcmp("SAMPLERATE", nodeName)) tag = SAMPLERATE;
|
|
else if (!strcmp("INSAMPLERATE", nodeName)) tag = INSAMPLERATE;
|
|
else if (!strcmp("OUTSAMPLERATE", nodeName)) tag = OUTSAMPLERATE;
|
|
else if (!strcmp("SAMPLECONVERTER", nodeName)) tag = SAMPLECONVERTER;
|
|
else if (!strcmp("RXCORR", nodeName)) tag = RXCORR;
|
|
else if (!strcmp("TXCORR", nodeName)) tag = TXCORR;
|
|
else if (!strcmp("TXOFFSET", nodeName)) tag = TXOFFSET;
|
|
else if (!strcmp("USELEADINGZEROS", nodeName)) tag = USELEADINGZEROS;
|
|
else if (!strcmp("CONTESTSTART", nodeName)) tag = CONTESTSTART;
|
|
else if (!strcmp("CONTESTDIGITS", nodeName)) tag = CONTESTDIGITS;
|
|
else if (!strcmp("USETIMER", nodeName)) tag = USETIMER;
|
|
else if (!strcmp("MACRONUMBER", nodeName)) tag = MACRONUMBER;
|
|
else if (!strcmp("TIMEOUT", nodeName)) tag = TIMEOUT;
|
|
else if (!strcmp("MXDEVICE", nodeName)) tag = MXDEVICE;
|
|
else if (!strcmp("PCMVOLUME", nodeName)) tag = PCMVOLUME;
|
|
else if (!strcmp("MICIN", nodeName)) tag = MICIN;
|
|
else if (!strcmp("LINEIN", nodeName)) tag = LINEIN;
|
|
else if (!strcmp("ENABLEMIXER", nodeName)) tag = ENABLEMIXER;
|
|
else if (!strcmp("MUTEINPUT", nodeName)) tag = MUTEINPUT;
|
|
else if (!strcmp("PALETTE0", nodeName)) tag = PALETTE0;
|
|
else if (!strcmp("PALETTE1", nodeName)) tag = PALETTE1;
|
|
else if (!strcmp("PALETTE2", nodeName)) tag = PALETTE2;
|
|
else if (!strcmp("PALETTE3", nodeName)) tag = PALETTE3;
|
|
else if (!strcmp("PALETTE4", nodeName)) tag = PALETTE4;
|
|
else if (!strcmp("PALETTE5", nodeName)) tag = PALETTE5;
|
|
else if (!strcmp("PALETTE6", nodeName)) tag = PALETTE6;
|
|
else if (!strcmp("PALETTE7", nodeName)) tag = PALETTE7;
|
|
else if (!strcmp("PALETTE8", nodeName)) tag = PALETTE8;
|
|
else if (!strcmp("VIEWERMARQUEE", nodeName)) tag = VIEWERMARQUEE;
|
|
else if (!strcmp("VIEWERSHOWFREQ", nodeName)) tag = VIEWERSHOWFREQ;
|
|
else if (!strcmp("VIEWERSTART", nodeName)) tag = VIEWERSTART;
|
|
else if (!strcmp("VIEWERCHANNELS", nodeName)) tag = VIEWERCHANNELS;
|
|
else if (!strcmp("VIEWERSQUELCH", nodeName)) tag = VIEWERSQUELCH;
|
|
else if (!strcmp("VIEWERTIMEOUT", nodeName)) tag = VIEWERTIMEOUT;
|
|
else if (!strcmp("WFAVERAGING", nodeName)) tag = WFAVERAGING;
|
|
else if (!strcmp("USEGROUPCOLORS", nodeName)) tag = USEGROUPCOLORS;
|
|
else if (!strcmp("FKEYGROUP1", nodeName)) tag = FKEYGROUP1;
|
|
else if (!strcmp("FKEYGROUP2", nodeName)) tag = FKEYGROUP2;
|
|
else if (!strcmp("FKEYGROUP3", nodeName)) tag = FKEYGROUP3;
|
|
else if (!strcmp("FKEYTEXTCOLOR", nodeName)) tag = FKEYTEXTCOLOR;
|
|
else if (!strcmp("RXFONTNBR", nodeName)) tag = RXFONTNBR;
|
|
else if (!strcmp("RXFONTSIZE", nodeName)) tag = RXFONTSIZE;
|
|
else if (!strcmp("RXFNTCOLOR", nodeName)) tag = RXFNTCOLOR;
|
|
else if (!strcmp("TXFONTNBR", nodeName)) tag = TXFONTNBR;
|
|
else if (!strcmp("TXFONTSIZE", nodeName)) tag = TXFONTSIZE;
|
|
else if (!strcmp("TXFNTCOLOR", nodeName)) tag = TXFNTCOLOR;
|
|
else if (!strcmp("RXFONTCOLOR", nodeName)) tag = RXFONTCOLOR;
|
|
else if (!strcmp("TXFONTCOLOR", nodeName)) tag = TXFONTCOLOR;
|
|
else if (!strcmp("XMITCOLOR", nodeName)) tag = XMITCOLOR;
|
|
else if (!strcmp("CTRLCOLOR", nodeName)) tag = CTRLCOLOR;
|
|
else if (!strcmp("SKIPCOLOR", nodeName)) tag = SKIPCOLOR;
|
|
else if (!strcmp("ALTRCOLOR", nodeName)) tag = ALTRCOLOR;
|
|
else if (!strcmp("WATERFALLFONTNBR", nodeName)) tag = WATERFALLFONTNBR;
|
|
else if (!strcmp("WATERFALLFONTSIZE", nodeName)) tag = WATERFALLFONTSIZE;
|
|
else if (!strcmp("UISCHEME", nodeName)) tag = UISCHEME;
|
|
else if (!strcmp("RSIDWIDESEARCH", nodeName)) tag = RSIDWIDESEARCH;
|
|
else if (!strcmp("TRANSMITRSID", nodeName)) tag = TRANSMITRSID;
|
|
else if (!strcmp("SLOWCPU", nodeName)) tag = SLOWCPU;
|
|
else if (!strcmp("MT638BIT", nodeName)) tag = MT638BIT;
|
|
else if (!strcmp("MT63INTERLEAVE", nodeName)) tag = MT63INTERLEAVE;
|
|
else tag = IGNORE;
|
|
}
|
|
break;
|
|
|
|
case EXN_NONE:
|
|
case EXN_COMMENT:
|
|
case EXN_UNKNOWN:
|
|
break;
|
|
}
|
|
}
|
|
// delete the xml parser after usage
|
|
delete xml;
|
|
return true;
|
|
}
|
|
|
|
void configuration::loadDefaults() {
|
|
FL_LOCK_D();
|
|
|
|
// RTTY
|
|
selShift->value(rtty_shift);
|
|
selBaud->value(rtty_baud);
|
|
selBits->value(rtty_bits);
|
|
selParity->value(rtty_parity);
|
|
// chkMsbFirst->value(rtty_msbfirst);
|
|
selStopBits->value(rtty_stop);
|
|
btnCRCRLF->value(rtty_crcrlf);
|
|
btnAUTOCRLF->value(rtty_autocrlf);
|
|
cntrAUTOCRLF->value(rtty_autocount);
|
|
chkPseudoFSK->value(PseudoFSK);
|
|
chkUOSrx->value(UOSrx);
|
|
chkUOStx->value(UOStx);
|
|
chkXagc->value(Xagc);
|
|
|
|
for (int i = 0; i < 3; i++)
|
|
if (rtty_afcspeed == i)
|
|
btnRTTYafc[i]->value(1);
|
|
else
|
|
btnRTTYafc[i]->value(0);
|
|
btnPreferXhairScope->value(PreferXhairScope);
|
|
// OLIVIA
|
|
mnuOlivia_Tones->value(oliviatones);
|
|
mnuOlivia_Bandwidth->value(oliviabw);
|
|
cntOlivia_smargin->value(oliviasmargin);
|
|
cntOlivia_sinteg->value(oliviasinteg);
|
|
btnOlivia_8bit->value(olivia8bit);
|
|
|
|
chkDominoEX_FEC->value(DOMINOEX_FEC);
|
|
|
|
btnmt63_interleave->value(mt63_interleave == 64);
|
|
|
|
FL_UNLOCK_D();
|
|
}
|
|
|
|
void configuration::storeDefaults() { }
|
|
|
|
void configuration::saveDefaults() {
|
|
FL_LOCK();
|
|
// strings
|
|
myCall = inpMyCallsign->value();
|
|
myName = inpMyName->value();
|
|
myQth = inpMyQth->value();
|
|
myLocator = inpMyLocator->value();
|
|
secText = txtSecondary->value();
|
|
THORsecText = txtTHORSecondary->value();
|
|
PTTdev = inpTTYdev->value();
|
|
|
|
for (int i = 0; i < 9; i++) {
|
|
progdefaults.cfgpal[i].R = palette[i].R;
|
|
progdefaults.cfgpal[i].G = palette[i].G;
|
|
progdefaults.cfgpal[i].B = palette[i].B;
|
|
}
|
|
FL_UNLOCK();
|
|
|
|
writeDefaultsXML();
|
|
changed = false;
|
|
}
|
|
|
|
int configuration::setDefaults() {
|
|
#if USE_HAMLIB
|
|
getRigs();
|
|
#endif
|
|
FL_LOCK();
|
|
inpMyCallsign->value(myCall.c_str());
|
|
inpMyName->value(myName.c_str());
|
|
inpMyQth->value(myQth.c_str());
|
|
inpMyLocator->value(myLocator.c_str());
|
|
UseLeadingZeros = btnUseLeadingZeros->value();
|
|
ContestStart = (int)nbrContestStart->value();
|
|
ContestDigits = (int)nbrContestDigits->value();
|
|
|
|
txtSecondary->value(secText.c_str());
|
|
|
|
txtTHORSecondary->value(THORsecText.c_str());
|
|
valTHOR_BW->value(THOR_BW);
|
|
valTHOR_FILTER->value(THOR_FILTER);
|
|
valTHOR_PATHS->value(THOR_PATHS);
|
|
valTHOR_SOFT->value(THOR_SOFT);
|
|
valThorCWI->value(ThorCWI);
|
|
|
|
valDominoEX_BW->value(DOMINOEX_BW);
|
|
valDominoEX_FILTER->value(DOMINOEX_FILTER);
|
|
chkDominoEX_FEC->value(DOMINOEX_FEC);
|
|
valDominoEX_PATHS->value(DOMINOEX_PATHS);
|
|
valDomCWI->value(DomCWI);
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
btnPTT[i]->value(0);
|
|
btnPTT[i]->activate();
|
|
}
|
|
btnPTT[btnPTTis]->value(1);
|
|
#if !USE_HAMLIB
|
|
btnPTT[1]->deactivate();
|
|
chkUSEHAMLIB->deactivate();
|
|
inpRIGdev->hide();
|
|
mnuBaudRate->hide();
|
|
cboHamlibRig->hide();
|
|
#else
|
|
btnPTT[1]->activate();
|
|
chkUSEHAMLIB->activate();
|
|
inpRIGdev->show();
|
|
mnuBaudRate->show();
|
|
cboHamlibRig->show();
|
|
cboHamlibRig->value(HamRigName.c_str());
|
|
#endif
|
|
btnRTSptt->value(RTSptt);
|
|
btnDTRptt->value(DTRptt);
|
|
btnRTSplusV->value(RTSplus);
|
|
btnDTRplusV->value(DTRplus);
|
|
|
|
inpTTYdev->value(PTTdev.c_str());
|
|
|
|
if(chkUSEMEMMAPis) {
|
|
chkUSEMEMMAP->value(1);
|
|
chkUSEHAMLIB->value(0); chkUSERIGCAT->value(0); chkUSEXMLRPC->value(0);
|
|
cboHamlibRig->deactivate();
|
|
inpRIGdev->deactivate();
|
|
mnuBaudRate->deactivate();
|
|
btnPTT[1]->deactivate(); btnPTT[2]->activate(); btnPTT[3]->deactivate();
|
|
} else if (chkUSEHAMLIBis) {
|
|
chkUSEHAMLIB->value(1);
|
|
chkUSEMEMMAP->value(0); chkUSERIGCAT->value(0); chkUSEXMLRPC->value(0);
|
|
cboHamlibRig->activate();
|
|
inpRIGdev->activate();
|
|
mnuBaudRate->activate();
|
|
btnPTT[1]->activate(); btnPTT[2]->deactivate(); btnPTT[3]->deactivate();
|
|
} else if (chkUSERIGCATis) {
|
|
chkUSERIGCAT->value(1);
|
|
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0); chkUSEXMLRPC->value(0);
|
|
cboHamlibRig->deactivate();
|
|
inpRIGdev->deactivate();
|
|
mnuBaudRate->deactivate();
|
|
btnPTT[1]->deactivate(); btnPTT[2]->deactivate(); btnPTT[3]->activate();
|
|
} else if (chkUSEXMLRPCis) {
|
|
chkUSEXMLRPC->value(1);
|
|
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0); chkUSERIGCAT->value(0);
|
|
cboHamlibRig->deactivate();
|
|
inpRIGdev->deactivate();
|
|
mnuBaudRate->deactivate();
|
|
btnPTT[1]->deactivate(); btnPTT[2]->deactivate(); btnPTT[3]->deactivate();
|
|
} else {
|
|
chkUSEMEMMAP->value(0); chkUSEHAMLIB->value(0);
|
|
chkUSERIGCAT->value(0); chkUSEHAMLIB->value(0); chkUSEXMLRPC->value(0);
|
|
btnPTT[1]->deactivate(); btnPTT[2]->deactivate(); btnPTT[3]->deactivate();
|
|
}
|
|
|
|
inpRIGdev->value(HamRigDevice.c_str());
|
|
mnuBaudRate->value(HamRigBaudrate);
|
|
|
|
valCWsweetspot->value(CWsweetspot);
|
|
valRTTYsweetspot->value(RTTYsweetspot);
|
|
valPSKsweetspot->value(PSKsweetspot);
|
|
btnWaterfallHistoryDefault->value(WaterfallHistoryDefault);
|
|
btnStartAtSweetSpot->value(StartAtSweetSpot);
|
|
btnPSKmailSweetSpot->value(PSKmailSweetSpot);
|
|
cntSearchRange->value(SearchRange);
|
|
cntServerOffset->value(ServerOffset);
|
|
cntACQsn->value(ACQsn);
|
|
|
|
btnCursorBWcolor->color(
|
|
fl_rgb_color(cursorLineRGBI.R, cursorLineRGBI.G, cursorLineRGBI.B) );
|
|
btnCursorCenterLineColor->color(
|
|
fl_rgb_color(cursorCenterRGBI.R, cursorCenterRGBI.G, cursorCenterRGBI.B) );
|
|
btnBwTracksColor->color(
|
|
fl_rgb_color(bwTrackRGBI.R, bwTrackRGBI.G, bwTrackRGBI.B) );
|
|
|
|
cntCWweight->value(CWweight);
|
|
sldrCWxmtWPM->value(CWspeed);
|
|
cntCWdefWPM->value(defCWspeed);
|
|
sldrCWbandwidth->value(CWbandwidth);
|
|
btnCWrcvTrack->value(CWtrack);
|
|
cntCWrange->value(CWrange);
|
|
cntCWlowerlimit->value(CWlowerlimit);
|
|
cntCWupperlimit->value(CWupperlimit);
|
|
cntCWlowerlimit->maximum(CWupperlimit - 20);
|
|
cntCWupperlimit->minimum(CWlowerlimit + 20);
|
|
cntCWrisetime->value(CWrisetime);
|
|
cntCWdash2dot->value(CWdash2dot);
|
|
sldrCWxmtWPM->minimum(CWlowerlimit);
|
|
sldrCWxmtWPM->maximum(CWupperlimit);
|
|
btnQSK->value(QSK);
|
|
cntPreTiming->maximum((int)(2400/CWspeed)/2.0);
|
|
cntPreTiming->value(CWpre);
|
|
cntPostTiming->maximum((int)(2400/CWspeed)/2.0);
|
|
cntPostTiming->value(CWpost);
|
|
btnCWID->value(CWid);
|
|
|
|
selHellFont->value(feldfontnbr);
|
|
btnFeldHellIdle->value(HellXmtIdle);
|
|
|
|
chkTransmitRSid->value(TransmitRSid);
|
|
chkRSidWideSearch->value(rsidWideSearch);
|
|
chkSlowCpu->value(slowcpu);
|
|
|
|
string bandsfname = HomeDir;
|
|
bandsfname.append("frequencies.def");
|
|
ifstream bandsfile(bandsfname.c_str(), ios::in);
|
|
if (bandsfile) {
|
|
string sBand;
|
|
cboBand->add(" ");
|
|
while (!bandsfile.eof()) {
|
|
sBand = "";
|
|
bandsfile >> sBand; bandsfile.ignore();
|
|
if (sBand.length() > 0)
|
|
cboBand->add(sBand.c_str());
|
|
}
|
|
bandsfile.close();
|
|
} else {
|
|
int i = 0;
|
|
while (szBands[i]) {
|
|
cboBand->add((char *)szBands[i]);
|
|
i++;
|
|
}
|
|
}
|
|
btnQRZnotavailable->value(0);
|
|
btnQRZsocket->value(0);
|
|
btnQRZcdrom->value(0);
|
|
btnHAMCALLsocket->value(0);
|
|
if (QRZ == 0)
|
|
btnQRZnotavailable->value(1);
|
|
else if (QRZ == 1)
|
|
btnQRZsocket->value(1);
|
|
else if (QRZ == 2)
|
|
btnQRZcdrom->value(1);
|
|
else if (QRZ == 3)
|
|
btnHAMCALLsocket->value(1);
|
|
txtQRZpathname->value(QRZpathname.c_str());
|
|
|
|
btnRTTY_USB->value(RTTY_USB);
|
|
btnsendid->value(sendid);
|
|
btnsendvideotext->value(sendtextid);
|
|
chkID_SMALL->value(ID_SMALL);
|
|
|
|
FL_UNLOCK();
|
|
|
|
wf->setPrefilter(wfPreFilter);
|
|
valLatency->value(latency);
|
|
btnWFaveraging->value(WFaveraging);
|
|
|
|
for (int i = 0; i < 9; i++) {
|
|
palette[i].R = (uchar)cfgpal[i].R;
|
|
palette[i].G = (uchar)cfgpal[i].G;
|
|
palette[i].B = (uchar)cfgpal[i].B;
|
|
}
|
|
wf->setcolors();
|
|
setColorButtons();
|
|
|
|
return 1;
|
|
}
|
|
|
|
void configuration::initOperator() {
|
|
FL_LOCK();
|
|
myCall = inpMyCallsign->value();
|
|
myName = inpMyName->value();
|
|
myQth = inpMyQth->value();
|
|
myLocator = inpMyLocator->value();
|
|
UseLeadingZeros = btnUseLeadingZeros->value();
|
|
ContestStart = (int)nbrContestStart->value();
|
|
ContestDigits = (int)nbrContestDigits->value();
|
|
FL_UNLOCK();
|
|
}
|
|
|
|
#include "rigio.h"
|
|
|
|
void configuration::initInterface() {
|
|
initOperator();
|
|
|
|
|
|
// close down any possible rig interface threads
|
|
#if USE_HAMLIB
|
|
hamlib_close();
|
|
MilliSleep(100);
|
|
#endif
|
|
rigMEM_close();
|
|
MilliSleep(100);
|
|
rigCAT_close();
|
|
MilliSleep(100);
|
|
|
|
FL_LOCK();
|
|
btnPTTis = (btnPTT[0]->value() ? 0 :
|
|
btnPTT[1]->value() ? 1 :
|
|
btnPTT[2]->value() ? 2 :
|
|
btnPTT[3]->value() ? 3 :
|
|
btnPTT[4]->value() ? 4 : 0); // default is None
|
|
|
|
RTSptt = btnRTSptt->value();
|
|
DTRptt = btnDTRptt->value();
|
|
RTSplus = btnRTSplusV->value();
|
|
DTRplus = btnDTRplusV->value();
|
|
|
|
PTTdev = inpTTYdev->value();
|
|
|
|
#if USE_HAMLIB
|
|
chkUSEHAMLIBis = chkUSEHAMLIB->value();
|
|
#endif
|
|
chkUSEMEMMAPis = chkUSEMEMMAP->value();
|
|
chkUSERIGCATis = chkUSERIGCAT->value();
|
|
|
|
#if USE_HAMLIB
|
|
HamRigName = cboHamlibRig->value();
|
|
HamRigDevice = inpRIGdev->value();
|
|
HamRigBaudrate = mnuBaudRate->value();
|
|
#else
|
|
cboHamlibRig->hide();
|
|
inpRIGdev->hide();
|
|
mnuBaudRate->hide();
|
|
#endif
|
|
FL_UNLOCK();
|
|
|
|
if (chkUSEMEMMAPis) {// start the memory mapped i/o thread
|
|
btnPTT[2]->activate();
|
|
rigMEM_init();
|
|
wf->setQSY(1);
|
|
activate_rig_menu_item(false);
|
|
} else if (chkUSERIGCATis) { // start the rigCAT thread
|
|
if (rigCAT_init() == false) {
|
|
wf->USB(true);
|
|
cboBand->show();
|
|
btnSideband->show();
|
|
wf->rfcarrier(atoi(cboBand->value())*1000L);
|
|
wf->setQSY(0);
|
|
activate_rig_menu_item(false);
|
|
} else {
|
|
cboBand->hide();
|
|
btnSideband->hide();
|
|
wf->setQSY(1);
|
|
activate_rig_menu_item(true);
|
|
}
|
|
#if USE_HAMLIB
|
|
} else if (chkUSEHAMLIBis) { // start the hamlib thread
|
|
if (hamlib_init(btnPTTis == 1 ? true : false) == false) {
|
|
wf->USB(true);
|
|
cboBand->show();
|
|
btnSideband->show();
|
|
wf->rfcarrier(atoi(cboBand->value())*1000L);
|
|
wf->setQSY(0);
|
|
activate_rig_menu_item(false);
|
|
} else {
|
|
cboBand->hide();
|
|
btnSideband->hide();
|
|
wf->setQSY(1);
|
|
activate_rig_menu_item(true);
|
|
}
|
|
#endif
|
|
} else if (chkUSEXMLRPCis) {
|
|
cboBand->hide();
|
|
btnSideband->hide();
|
|
wf->USB(true);
|
|
wf->setXMLRPC(1);
|
|
activate_rig_menu_item(false);
|
|
} else {
|
|
wf->USB(true);
|
|
cboBand->show();
|
|
btnSideband->show();
|
|
wf->rfcarrier(atoi(cboBand->value())*1000L);
|
|
wf->setQSY(0);
|
|
activate_rig_menu_item(false);
|
|
}
|
|
|
|
push2talk->reset(btnPTTis);
|
|
wf->setRefLevel();
|
|
wf->setAmpSpan();
|
|
cntLowFreqCutoff->value(LowFreqCutoff);
|
|
|
|
}
|
|
|
|
string configuration::strBaudRate()
|
|
{
|
|
return (szBaudRates[HamRigBaudrate + 1]);
|
|
}
|
|
|
|
#if USE_HAMLIB
|
|
void configuration::getRigs() {
|
|
list<string>::iterator pstr;
|
|
xcvr->get_rignames();
|
|
pstr = (xcvr->rignames).begin();
|
|
FL_LOCK();
|
|
while (pstr != (xcvr->rignames).end()) {
|
|
cboHamlibRig->add((*pstr).c_str());
|
|
++pstr;
|
|
}
|
|
FL_UNLOCK();
|
|
}
|
|
#endif
|
|
|
|
void configuration::testCommPorts()
|
|
{
|
|
#ifndef PATH_MAX
|
|
# define PATH_MAX 1024
|
|
#endif
|
|
#ifndef __CYGWIN__
|
|
struct stat st;
|
|
#endif
|
|
#ifndef __APPLE__
|
|
char ttyname[PATH_MAX + 1];
|
|
#endif
|
|
|
|
#ifdef __linux__
|
|
bool ret = false;
|
|
DIR* sys = NULL;
|
|
char cwd[PATH_MAX] = { '.', '\0' };
|
|
if (getcwd(cwd, sizeof(cwd)) == NULL || chdir("/sys/class/tty") == -1 ||
|
|
(sys = opendir(".")) == NULL)
|
|
goto out;
|
|
|
|
ssize_t len;
|
|
struct dirent* dp;
|
|
while ((dp = readdir(sys))) {
|
|
# ifdef _DIRENT_HAVE_D_TYPE
|
|
if (dp->d_type != DT_LNK)
|
|
continue;
|
|
# endif
|
|
if ((len = readlink(dp->d_name, ttyname, sizeof(ttyname)-1)) == -1)
|
|
continue;
|
|
ttyname[len] = '\0';
|
|
if (!strstr(ttyname, "/devices/virtual/")) {
|
|
snprintf(ttyname, sizeof(ttyname), "/dev/%s", dp->d_name);
|
|
if (stat(ttyname, &st) == -1 || !S_ISCHR(st.st_mode))
|
|
continue;
|
|
LOG_INFO("Found serial port %s", ttyname);
|
|
inpTTYdev->add(ttyname);
|
|
#if USE_HAMLIB
|
|
inpRIGdev->add(ttyname);
|
|
#endif
|
|
}
|
|
}
|
|
ret = true;
|
|
|
|
out:
|
|
if (sys)
|
|
closedir(sys);
|
|
chdir(cwd);
|
|
if (ret) // do we need to fall back to the probe code below?
|
|
return;
|
|
#endif // __linux__
|
|
|
|
|
|
const char* tty_fmt[] = {
|
|
#if defined(__linux__)
|
|
"/dev/ttyS%u",
|
|
"/dev/ttyUSB%u",
|
|
"/dev/usb/ttyUSB%u"
|
|
#elif defined(__FreeBSD__)
|
|
"/dev/ttyd%u"
|
|
#elif defined(__CYGWIN__)
|
|
"/dev/ttyS%u"
|
|
#elif defined(__APPLE__)
|
|
"/dev/cu.*",
|
|
"/dev/tty.*"
|
|
#endif
|
|
};
|
|
|
|
#if defined(__CYGWIN__)
|
|
int fd;
|
|
# define TTY_MAX 255
|
|
#elif defined(__APPLE__)
|
|
glob_t gbuf;
|
|
#else
|
|
# define TTY_MAX 8
|
|
#endif
|
|
|
|
for (size_t i = 0; i < sizeof(tty_fmt)/sizeof(*tty_fmt); i++) {
|
|
#ifndef __APPLE__
|
|
for (unsigned j = 0; j < TTY_MAX; j++) {
|
|
snprintf(ttyname, sizeof(ttyname), tty_fmt[i], j);
|
|
# ifndef __CYGWIN__
|
|
if ( !(stat(ttyname, &st) == 0 && S_ISCHR(st.st_mode)) )
|
|
continue;
|
|
# else // __CYGWIN__
|
|
if ((fd = open(ttyname, O_RDWR | O_NOCTTY | O_NDELAY)) == -1)
|
|
continue;
|
|
snprintf(ttyname, sizeof(ttyname), "COM%u", j+1);
|
|
close(fd);
|
|
# endif // __CYGWIN__
|
|
|
|
LOG_INFO("Found serial port %s", ttyname);
|
|
inpTTYdev->add(ttyname);
|
|
# if USE_HAMLIB
|
|
inpRIGdev->add(ttyname);
|
|
# endif
|
|
}
|
|
#else // __APPLE__
|
|
glob(tty_fmt[i], 0, NULL, &gbuf);
|
|
for (size_t j = 0; j < gbuf.gl_pathc; j++) {
|
|
if ( !(stat(gbuf.gl_pathv[j], &st) == 0 && S_ISCHR(st.st_mode)) ||
|
|
strstr(gbuf.gl_pathv[j], "modem") )
|
|
continue;
|
|
LOG_INFO("Found serial port %s", gbuf.gl_pathv[j]);
|
|
inpTTYdev->add(gbuf.gl_pathv[j]);
|
|
# if USE_HAMLIB
|
|
inpRIGdev->add(gbuf.gl_pathv[j]);
|
|
# endif
|
|
|
|
}
|
|
globfree(&gbuf);
|
|
#endif // __APPLE__
|
|
}
|
|
}
|