Merge branch 'ui-enhance'

merge-requests/4/head
Roeland Jansen 2021-05-22 20:18:07 +02:00
commit a44d21717b
10 zmienionych plików z 168 dodań i 52 usunięć

Wyświetl plik

@ -782,6 +782,7 @@ bool audioHandler::init(const quint8 bits, const quint8 channels, const quint16
this->chunkSize = (INTERNAL_SAMPLE_RATE / 25) * radioChannels;
qInfo(logAudio()) << (isInput ? "Input" : "Output") << "chunkSize: " << this->chunkSize;
qInfo(logAudio()) << (isInput ? "Input" : "Output") << "bufferLength (latency): " << this->latency;
int resample_error=0;
@ -901,7 +902,11 @@ void audioHandler::reinit()
audioOutput = new QAudioOutput(deviceInfo, format, this);
// This seems to only be needed on Linux but is critical in aligning buffer sizes.
audioOutput->setBufferSize(chunkSize*4);
#ifdef Q_OS_MAC
audioOutput->setBufferSize(chunkSize*8);
#else
audioOutput->setBufferSize(chunkSize*4);
#endif
connect(audioOutput, SIGNAL(notify()), SLOT(notified()));
connect(audioOutput, SIGNAL(stateChanged(QAudio::State)), SLOT(stateChanged(QAudio::State)));

Wyświetl plik

@ -102,6 +102,22 @@ void commHandler::receiveDataIn()
// new code:
port->startTransaction();
inPortData = port->readAll();
if(inPortData.size() == 1)
{
// Generally for baud <= 9600
if (inPortData == "\xFE")
{
// This will get hit twice.
// After the FE FE, we transition into
// the normal .startsWith FE FE block
// where the normal rollback code can handle things.
port->rollbackTransaction();
rolledBack = true;
return;
}
}
if(inPortData.startsWith("\xFE\xFE"))
{
if(inPortData.endsWith("\xFD"))

Wyświetl plik

@ -20,7 +20,24 @@ enum mode_kind {
modeLSB_D=0x80,
modeUSB_D=0x81,
modeDV=0x17,
modeDD=0x27
modeDD=0x27,
modeWFM,
modeS_AMD,
modeS_AML,
modeS_AMU,
modeP25,
modedPMR,
modeNXDN_VN,
modeNXDN_N,
modeDCR,
modePSK,
modePSK_R
};
struct mode_info {
mode_kind mk;
unsigned char reg;
QString name;
};
struct preset_kind {

Wyświetl plik

@ -2265,7 +2265,7 @@ void rigCommander::parseDetailedRegisters1A05()
default:
break;
}
return;
break;
case model7850:
switch(subcmd)
{
@ -2332,6 +2332,7 @@ void rigCommander::parseDetailedRegisters1A05()
default:
break;
}
break;
case model7610:
switch(subcmd)
{
@ -2407,6 +2408,7 @@ void rigCommander::parseDetailedRegisters1A05()
default:
break;
}
break;
case model705:
switch(subcmd)
{
@ -2525,6 +2527,16 @@ void rigCommander::parseWFData()
}
}
mode_info rigCommander::createMode(mode_kind m, unsigned char reg, QString name)
{
mode_info mode;
mode.mk = m;
mode.reg = reg;
mode.name = name;
return mode;
}
void rigCommander::determineRigCaps()
{
//TODO: Determine available bands (low priority, rig will reject out of band requests anyway)
@ -2539,6 +2551,14 @@ void rigCommander::determineRigCaps()
standardVU = {band70cm, band2m};
std::vector <mode_info> commonModes;
commonModes = { createMode(modeLSB, 0x00, "LSB"), createMode(modeUSB, 0x01, "USB"),
createMode(modeFM, 0x05, "FM"), createMode(modeAM, 0x02, "AM"),
createMode(modeCW, 0x03, "CW"), createMode(modeCW_R, 0x07, "CW-R"),
createMode(modeRTTY, 0x04, "RTTY"), createMode(modeRTTY_R, 0x08, "RTTY-R")
};
rigCaps.model = model;
rigCaps.civ = incomingCIVAddr;
@ -2615,6 +2635,7 @@ void rigCommander::determineRigCaps()
rigCaps.bands.push_back(bandGen);
rigCaps.bands.push_back(band630m);
rigCaps.bands.push_back(band2200m);
rigCaps.modes = commonModes;
break;
case modelR8600:
rigCaps.modelName = QString("IC-R8600");
@ -2640,6 +2661,13 @@ void rigCommander::determineRigCaps()
rigCaps.bands = standardHF;
rigCaps.bands.insert(rigCaps.bands.end(), standardVU.begin(), standardVU.end());
rigCaps.bands.insert(rigCaps.bands.end(), {band23cm, band4m, band630m, band2200m, bandGen});
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), {
createMode(modeWFM, 0x06, "WFM"), createMode(modeS_AMD, 0x11, "S-AM (D)"),
createMode(modeS_AML, 0x14, "S-AM(L)"), createMode(modeS_AMU, 0x15, "S-AM(U)"),
createMode(modeP25, 0x16, "P25"), createMode(modedPMR, 0x18, "dPMR"),
createMode(modeNXDN_VN, 0x19, "NXDN-VN"), createMode(modeNXDN_N, 0x20, "NXDN-N"),
createMode(modeDCR, 0x21, "DCR")});
break;
case model9700:
rigCaps.modelName = QString("IC-9700");
@ -2664,6 +2692,9 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[band23cm] = 0x03;
rigCaps.bsr[band70cm] = 0x02;
rigCaps.bsr[band2m] = 0x01;
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeDV, 0x17, "DV"),
createMode(modeDD, 0x22, "DD")});
break;
case model910h:
rigCaps.modelName = QString("IC-910H");
@ -2683,6 +2714,7 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[band23cm] = 0x03;
rigCaps.bsr[band70cm] = 0x02;
rigCaps.bsr[band2m] = 0x01;
rigCaps.modes = commonModes;
break;
case model7610:
rigCaps.modelName = QString("IC-7610");
@ -2711,6 +2743,7 @@ void rigCommander::determineRigCaps()
rigCaps.bands.push_back(bandGen);
rigCaps.bands.push_back(band630m);
rigCaps.bands.push_back(band2200m);
rigCaps.modes = commonModes;
break;
case model7850:
rigCaps.modelName = QString("IC-785x");
@ -2738,6 +2771,9 @@ void rigCommander::determineRigCaps()
rigCaps.bands.push_back(bandGen);
rigCaps.bands.push_back(band630m);
rigCaps.bands.push_back(band2200m);
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modePSK, 0x12, "PSK"),
createMode(modePSK_R, 0x13, "PSK-R")});
break;
case model705:
rigCaps.modelName = QString("IC-705");
@ -2770,6 +2806,9 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x15;
rigCaps.bands.push_back(band630m);
rigCaps.bands.push_back(band2200m);
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeWFM, 0x06, "WFM"),
createMode(modeDV, 0x17, "DV")});
break;
case model7000:
rigCaps.modelName = QString("IC-7000");
@ -2789,6 +2828,7 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[band2m] = 0x11;
rigCaps.bsr[band70cm] = 0x12;
rigCaps.bsr[bandGen] = 0x13;
rigCaps.modes = commonModes;
break;
case model7410:
rigCaps.modelName = QString("IC-7410");
@ -2807,6 +2847,7 @@ void rigCommander::determineRigCaps()
rigCaps.bands = standardHF;
rigCaps.bands.push_back(bandGen);
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
break;
case model7100:
rigCaps.modelName = QString("IC-7100");
@ -2829,6 +2870,9 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[band2m] = 0x11;
rigCaps.bsr[band70cm] = 0x12;
rigCaps.bsr[bandGen] = 0x13;
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeWFM, 0x06, "WFM"),
createMode(modeDV, 0x17, "DV")});
break;
case model7200:
rigCaps.modelName = QString("IC-7200");
@ -2846,6 +2890,7 @@ void rigCommander::determineRigCaps()
rigCaps.bands = standardHF;
rigCaps.bands.push_back(bandGen);
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
break;
case model706:
rigCaps.modelName = QString("IC-706");
@ -2859,6 +2904,8 @@ void rigCommander::determineRigCaps()
rigCaps.bands = standardHF;
rigCaps.bands.insert(rigCaps.bands.end(), standardVU.begin(), standardVU.end());
rigCaps.bands.push_back(bandGen);
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), createMode(modeWFM, 0x06, "WFM"));
break;
case model756pro:
rigCaps.modelName = QString("IC-756 Pro");
@ -2875,6 +2922,24 @@ void rigCommander::determineRigCaps()
rigCaps.bands = standardHF;
rigCaps.bands.push_back(bandGen);
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
break;
case model756proii:
rigCaps.modelName = QString("IC-756 Pro II");
rigCaps.hasSpectrum = false;
rigCaps.inputs.clear();
rigCaps.hasLan = false;
rigCaps.hasEthernet = false;
rigCaps.hasWiFi = false;
rigCaps.hasATU = true;
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x06' , '\x12', '\x18'});
rigCaps.antennas = {0x00, 0x01};
rigCaps.bands = standardHF;
rigCaps.bands.push_back(bandGen);
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
break;
case model756proiii:
rigCaps.modelName = QString("IC-756 Pro III");
@ -2891,6 +2956,7 @@ void rigCommander::determineRigCaps()
rigCaps.bands = standardHF;
rigCaps.bands.push_back(bandGen);
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
break;
default:
rigCaps.modelName = QString("IC-0x%1").arg(rigCaps.modelID, 2, 16);
@ -2910,7 +2976,8 @@ void rigCommander::determineRigCaps()
rigCaps.bands = standardHF;
rigCaps.bands.insert(rigCaps.bands.end(), standardVU.begin(), standardVU.end());
rigCaps.bands.insert(rigCaps.bands.end(), {band23cm, band4m, band630m, band2200m, bandGen});
qInfo(logRig()) << "Found unknown rig: " << rigCaps.modelID;
rigCaps.modes = commonModes;
qInfo(logRig()) << "Found unknown rig: 0x" << QString("%1").arg(rigCaps.modelID, 2, 16);
break;
}
haveRigCaps = true;

Wyświetl plik

@ -9,6 +9,7 @@
#include "udphandler.h"
#include "rigidentities.h"
#include "repeaterattributes.h"
#include "freqmemory.h"
// This file figures out what to send to the comm and also
// parses returns into useful things.
@ -375,6 +376,7 @@ private:
void debugMe();
void printHex(const QByteArray &pdata);
void printHex(const QByteArray &pdata, bool printVert, bool printHoriz);
mode_info createMode(mode_kind m, unsigned char reg, QString name);
commHandler* comm = Q_NULLPTR;
pttyHandler* ptty = Q_NULLPTR;

Wyświetl plik

@ -58,6 +58,9 @@ model_kind determineRadioModel(unsigned char rigID)
case model756pro:
rig = model756pro;
break;
case model756proii:
rig = model756proii;
break;
default:
rig = modelUnknown;
break;

Wyświetl plik

@ -6,6 +6,8 @@
#include <QList>
#include <vector>
#include "freqmemory.h"
// Credit for parts of CIV list:
// http://www.docksideradio.com/Icom%20Radio%20Hex%20Addresses.htm
@ -27,6 +29,7 @@ enum model_kind {
model705 = 0xA4,
model706 = 0x58,
model756pro = 0x5C,
model756proii = 0x64,
model756proiii = 0x6E,
model910h = 0x60,
modelUnknown = 0xFF
@ -102,6 +105,8 @@ struct rigCapabilities {
std::vector <unsigned char> antennas;
std::vector <bandType> bands;
unsigned char bsr[20] = {0};
std::vector <mode_info> modes;
};

Wyświetl plik

@ -395,7 +395,7 @@ void udpServer::controlReceived()
connect(this, SIGNAL(setupTxAudio(quint8, quint8, quint16, quint16, bool, bool, QString, quint8)), txaudio, SLOT(init(quint8, quint8, quint16, quint16, bool, bool, QString, quint8)));
connect(txAudioThread, SIGNAL(finished()), txaudio, SLOT(deleteLater()));
emit setupTxAudio(samples, channels, current->txSampleRate, in->txbuffer, uLaw, false, config.audioOutput, config.resampleQuality);
emit setupTxAudio(samples, channels, current->txSampleRate, current->txBufferLen, uLaw, false, config.audioOutput, config.resampleQuality);
hasTxAudio=datagram.senderAddress();
connect(this, SIGNAL(haveAudioData(audioPacket)), txaudio, SLOT(incomingAudio(audioPacket)));
@ -431,8 +431,9 @@ void udpServer::controlReceived()
emit setupRxAudio(samples, channels, current->rxSampleRate, 150, uLaw, true, config.audioInput, config.resampleQuality);
rxAudioTimer = new QTimer();
rxAudioTimer->setTimerType(Qt::PreciseTimer);
connect(rxAudioTimer, &QTimer::timeout, this, std::bind(&udpServer::sendRxAudio, this));
rxAudioTimer->start(10);
rxAudioTimer->start(20);
}
}
@ -713,7 +714,9 @@ void udpServer::audioReceived()
void udpServer::commonReceived(QList<CLIENT*>* l,CLIENT* current, QByteArray r)
{
Q_UNUSED(l); // We might need it later!
if (current == Q_NULLPTR || r.isNull()) {
return;
}
current->lastHeard = QDateTime::currentDateTime();
if (r.length() < 0x10)
{

Wyświetl plik

@ -754,13 +754,15 @@ void wfmain::openRig()
{
// Find the ICOM
// qInfo(logSystem()) << "Searching for serial port...";
QDirIterator it73("/dev/serial", QStringList() << "*IC-7300*", QDir::Files, QDirIterator::Subdirectories);
QDirIterator it73("/dev/serial/by-id", QStringList() << "*IC-7300*", QDir::Files, QDirIterator::Subdirectories);
QDirIterator it97("/dev/serial", QStringList() << "*IC-9700*A*", QDir::Files, QDirIterator::Subdirectories);
QDirIterator it785x("/dev/serial", QStringList() << "*IC-785*A*", QDir::Files, QDirIterator::Subdirectories);
QDirIterator it705("/dev/serial", QStringList() << "*IC-705*A", QDir::Files, QDirIterator::Subdirectories);
QDirIterator it7610("/dev/serial", QStringList() << "*IC-7610*A", QDir::Files, QDirIterator::Subdirectories);
QDirIterator itR8600("/dev/serial", QStringList() << "*IC-R8600*A", QDir::Files, QDirIterator::Subdirectories);
QDirIterator itTest("/tmp/test", QStringList() << "*radio*", QDir::NoFilter, QDirIterator::Subdirectories);
qDebug() << "test iterator isEmpty: " << itTest.filePath().isEmpty();
if(!it73.filePath().isEmpty())
{
@ -788,6 +790,8 @@ void wfmain::openRig()
serialPortRig = itR8600.filePath();
} else {
//fall back:
qInfo(logSystem()) << "Could not find Icom serial port. Falling back to OS default. Use --port to specify, or modify preferences.";
#ifdef Q_OS_MAC
serialPortRig = QString("/dev/tty.SLAB_USBtoUART");
@ -848,20 +852,35 @@ void wfmain::receiveFoundRigID(rigCapabilities rigCaps)
//now we know what the rig ID is:
//qInfo(logSystem()) << "In wfview, we now have a reply to our request for rig identity sent to CIV BROADCAST.";
// baud on the serial port reflects the actual rig connection,
// even if a client-server connection is being used.
// Computed time for a 10 byte message, with a safety factor of 2.
unsigned int usPerByte = 9600*1000 / prefs.serialPortBaud;
unsigned int msMinTiming=usPerByte * 10*2/1000;
if(msMinTiming < 35)
msMinTiming = 35;
delayedCommand->setInterval( msMinTiming * 2); // 20 byte message
periodicPollingTimer->setInterval( msMinTiming ); // slower for s-meter poll
qInfo(logSystem()) << "Delay command interval timing: " << msMinTiming * 2 << "ms";
qInfo(logSystem()) << "Periodic polling timer: " << msMinTiming << "ms";
// Normal:
delayedCmdIntervalLAN_ms = msMinTiming * 2;
delayedCmdIntervalSerial_ms = msMinTiming * 2;
// startup initial state:
delayedCmdStartupInterval_ms = msMinTiming * 2;
if(rig->usingLAN())
{
usingLAN = true;
delayedCommand->setInterval(delayedCmdIntervalLAN_ms);
//delayedCommand->setInterval(delayedCmdIntervalLAN_ms);
} else {
usingLAN = false;
if(prefs.serialPortBaud < 115200)
{
delayedCommand->setInterval(delayedCmdIntervalSerial_ms*2);
periodicPollingTimer->setInterval(200); // slower for s-meter polling
} else {
delayedCommand->setInterval(delayedCmdIntervalSerial_ms);
}
}
receiveRigID(rigCaps);
getInitialRigState();
@ -2228,40 +2247,19 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
// Added so that server receives rig capabilities.
emit sendRigCaps(rigCaps);
rpt->setRig(rigCaps);
if(rigCaps.model==model7850)
// Set the mode combo box up:
ui->modeSelectCombo->blockSignals(true);
ui->modeSelectCombo->clear();
for(unsigned int i=0; i < rigCaps.modes.size(); i++)
{
ui->modeSelectCombo->addItem("PSK", 0x12);
ui->modeSelectCombo->addItem("PSK-R", 0x13);
ui->modeSelectCombo->addItem(rigCaps.modes.at(i).name,
rigCaps.modes.at(i).reg);
}
if(rigCaps.hasDV)
{
ui->modeSelectCombo->addItem("DV", 0x17);
}
if(rigCaps.hasDD)
{
ui->modeSelectCombo->addItem("DD", 0x22);
}
if(rigCaps.model==modelR8600)
{
ui->modeSelectCombo->addItem("WFM", 0x06);
ui->modeSelectCombo->addItem("FSK-R", 0x08);
ui->modeSelectCombo->addItem("S-AM (D)", 0x11);
ui->modeSelectCombo->addItem("S-AM (L)", 0x14);
ui->modeSelectCombo->addItem("S-AM (U)", 0x15);
ui->modeSelectCombo->addItem("P25", 0x16);
ui->modeSelectCombo->addItem("dPMR", 0x18);
ui->modeSelectCombo->addItem("NXDN-VN", 0x19);
ui->modeSelectCombo->addItem("NXDN-N", 0x20);
ui->modeSelectCombo->addItem("DCR", 0x21);
}
if (rigCaps.model == model705)
{
ui->modeSelectCombo->addItem("WFM", 0x06);
}
ui->modeSelectCombo->blockSignals(false);
if(rigCaps.model == model9700)
{
@ -4337,7 +4335,7 @@ void wfmain::on_rigCIVaddrHexLine_editingFinished()
prefs.radioCIVAddr = propCIVAddr;
showStatusBarText(QString("Setting radio CI-V address to: 0x%1. Press Save Settings to retain.").arg(propCIVAddr, 2, 16));
} else {
showStatusBarText(QString("Could not use provided CI-V address. Address must be < 0x7E"));
showStatusBarText(QString("Could not use provided CI-V address. Address must be < 0xE0"));
}
}

Wyświetl plik

@ -57,7 +57,7 @@
<ExceptionHandling>Sync</ExceptionHandling>
<ObjectFileName>release\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT="7eba494";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT="b5d6063";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -85,7 +85,7 @@
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT=\"7eba494\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT=\"b5d6063\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<QtMoc><CompilerFlavor>msvc</CompilerFlavor><Include>./$(Configuration)/moc_predefs.h</Include><ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription><DynamicSource>output</DynamicSource><QtMocDir>$(Configuration)</QtMocDir><QtMocFileName>moc_%(Filename).cpp</QtMocFileName></QtMoc><QtRcc><Compression>default</Compression><ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription><QtRccDir>$(Configuration)</QtRccDir><QtRccFileName>qrc_%(Filename).cpp</QtRccFileName></QtRcc><QtUic><ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription><QtUicDir>$(ProjectDir)</QtUicDir><QtUicFileName>ui_%(Filename).h</QtUicFileName></QtUic></ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@ -99,7 +99,7 @@
<ExceptionHandling>Sync</ExceptionHandling>
<ObjectFileName>debug\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT="7eba494";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT="b5d6063";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -124,7 +124,7 @@
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT=\"7eba494\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;GITSHORT=\"b5d6063\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<QtMoc><CompilerFlavor>msvc</CompilerFlavor><Include>./$(Configuration)/moc_predefs.h</Include><ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription><DynamicSource>output</DynamicSource><QtMocDir>$(Configuration)</QtMocDir><QtMocFileName>moc_%(Filename).cpp</QtMocFileName></QtMoc><QtRcc><Compression>default</Compression><ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription><QtRccDir>$(Configuration)</QtRccDir><QtRccFileName>qrc_%(Filename).cpp</QtRccFileName></QtRcc><QtUic><ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription><QtUicDir>$(ProjectDir)</QtUicDir><QtUicFileName>ui_%(Filename).h</QtUicFileName></QtUic></ItemDefinitionGroup>
<ItemGroup>