Merge latest settings changes

half-duplex
Phil Taylor 2021-12-31 00:02:47 +00:00
commit 7d95f2d863
20 zmienionych plików z 3402 dodań i 1881 usunięć

119
CHANGELOG
Wyświetl plik

@ -1,5 +1,124 @@
# CHANGELOG # CHANGELOG
- 20211201
Another "minor" update for RX only rigs
Disable certain TX commands for RX only rigs
- 20211222
Add mutex within rigState to protect access
- 20211119
Add more version info
Add --version command line argument and WFVIEW_VERSION #define
- 20211118
A little less green in our gray.
Added size rules for audio source combo boxes.
Fix silly bug in retransmit code
Remove some extra logging from audio
- 20211115
Add mutex for incoming audio on udp and server
Force PA to use 48K Sample Rate if default is 44.1K
Try using slot for audio again
- 20211110
Server only tries mutex lock for 10ms before giving up.
Check number of samples in opus packet before attempting decode
- 20211109
Small changes to audio handler
- 20211107
Add SSE2 enhancements to resampler
Update audiohandler.h
Enable SSE or NEON enhancements for resampler
Fix resample ratio for input and output (hopefully!)
Create resampleRatio
Close PA stream after stopping it!
Fix Linux rtaudio build
Pulled out some debug code that isn't needed.
Fixed manual rig ID issue with uninitialized variable.
- 20211106
Added override allowing the user-specified CI-V address to also be used
as the Rig ID (model). This is useful for older radios that do not reply
to Rig ID queries. For radios using the default CI-V address, it should
"just work".
Added PTT "snooping" to the commHandler, such that radios needing RTS
set for PTT will work. Includes replying to PTT queries with the RTS
status. There is currently no UI to manually select radios that need
RTS.
deleted a lingering swapfile from one of my vim sessions
- 20211105
Added RTS PTT support commHandler and rigCommander. RTS is only sent
from rigCommander at this time, the pty is not parsed.
Added geometry constraints to the transceiver adjustments window, and
disable controls which do not function except for debug builds.
Changed IF/TPBF commands to be "unique priority" inserts. Added "more"
button for extended transceiver controls.
Added an IF Shift-like control for radios with Twin PBF.
Added support for IF Shift and Twin Pass-Band Filters. Currently
accessable only via the debug button.
- 20211104
Added IC-736 FM mode
Added code to force IC-736 to rigID
- 20211101
Use QT Audio by default
remove unneeded audio signal handler
Add portaudio support
Make switching between audio apis easier (and tidy .pro file)
Use buffered audio for Linux (was just Mac only)
Adjust buffer size depending on latency setting
- 20211031
Stuff audio buffer directly rather than signal/slot
- 20211022 - 20211022
Don't block until audio buffer has space Don't block until audio buffer has space

Wyświetl plik

@ -10,10 +10,13 @@ The following highlights are in this 1.x-release:
rigctl basic split support rigctl basic split support
rigctl prevents switching off civ transceive rigctl prevents switching off civ transceive
added 25 kHz step added 25 kHz step
as a temporary measure sending multiple TX/FREQ change commands to the rig as a temporary measure sending multiple TX/FREQ change commands to the rig
when we use rigctld. when we use rigctld.
people should use "fake it" in wsjtx as the split code is not reliable. people should use "fake it" in wsjtx as the split code is not reliable.
tidied up udp server function for better reliability tidied up udp server function for better reliability
added some IC736 stuff
added portaudio (you need t change wfview.pro to select
and that lowers the latency to maybe less than 50 ms
added PBT and IF-shift
several bugs fixed
RTS as PTT for several radios like the 706/718/736…

Wyświetl plik

@ -19,10 +19,16 @@ aboutbox::aboutbox(QWidget *parent) :
QString nacode = QString("<br/><br/>Networking, audio, rigctl server, and much more written by Phil Taylor, M0VSE"); QString nacode = QString("<br/><br/>Networking, audio, rigctl server, and much more written by Phil Taylor, M0VSE");
QString doctest = QString("<br/><br/>Testing, documentation, bug fixes, and development mentorship from<br/>Roeland Jansen, PA3MET, and Jim Nijkamp, PA8E."); QString doctest = QString("<br/><br/>Testing, documentation, bug fixes, and development mentorship from<br/>Roeland Jansen, PA3MET, and Jim Nijkamp, PA8E.");
#if defined(Q_OS_LINUX)
QString ssCredit = QString("<br/><br/>Stylesheet <a href=\"https://github.com/ColinDuquesnoy/QDarkStyleSheet/tree/master/qdarkstyle\" style=\"color: cyan;\">qdarkstyle</a> used under MIT license, stored in /usr/share/wfview/stylesheets/."); QString ssCredit = QString("<br/><br/>Stylesheet <a href=\"https://github.com/ColinDuquesnoy/QDarkStyleSheet/tree/master/qdarkstyle\" style=\"color: cyan;\">qdarkstyle</a> used under MIT license, stored in /usr/share/wfview/stylesheets/.");
#else
QString ssCredit = QString("<br/><br/>Stylesheet <a href=\"https://github.com/ColinDuquesnoy/QDarkStyleSheet/tree/master/qdarkstyle\" style=\"color: cyan;\">qdarkstyle</a> used under MIT license.");
#endif
QString website = QString("<br/><br/>Please visit <a href=\"https://wfview.org/\" style=\"color: cyan;\">https://wfview.org/</a> for the latest information."); QString website = QString("<br/><br/>Please visit <a href=\"https://wfview.org/\" style=\"color: cyan;\">https://wfview.org/</a> for the latest information.");
QString donate = QString("<br/><br/>Join us on <a href=\"https://www.patreon.com/wfview\">Patreon</a> for a behind-the-scenes look at wfview development, nightly builds, and to support the software you love.");
QString docs = QString("<br/><br/>Be sure to check the <a href=\"https://wfview.org/wfview-user-manual/\" style=\"color: cyan;\">User Manual</a> and <a href=\"https://forum.wfview.org/\" style=\"color: cyan;\">the Forum</a> if you have any questions."); QString docs = QString("<br/><br/>Be sure to check the <a href=\"https://wfview.org/wfview-user-manual/\" style=\"color: cyan;\">User Manual</a> and <a href=\"https://forum.wfview.org/\" style=\"color: cyan;\">the Forum</a> if you have any questions.");
QString support = QString("<br/><br/>For support, please visit <a href=\"https://forum.wfview.org/\">the official wfview support forum</a>."); QString support = QString("<br/><br/>For support, please visit <a href=\"https://forum.wfview.org/\">the official wfview support forum</a>.");
QString gitcodelink = QString("<a href=\"https://gitlab.com/eliggett/wfview/-/tree/%1\" style=\"color: cyan;\">").arg(GITSHORT); QString gitcodelink = QString("<a href=\"https://gitlab.com/eliggett/wfview/-/tree/%1\" style=\"color: cyan;\">").arg(GITSHORT);
@ -78,7 +84,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.");
// String it all together: // String it all together:
QString aboutText = head + copyright + "\n" + nacode + "\n" + doctest + wfviewcommunityack; QString aboutText = head + copyright + "\n" + nacode + "\n" + doctest + wfviewcommunityack;
aboutText.append(website + "\n"+ docs + support + contact +"\n"); aboutText.append(website + "\n" + donate + "\n"+ docs + support + contact +"\n");
aboutText.append("\n" + ssCredit + "\n" + rsCredit + "\n"); aboutText.append("\n" + ssCredit + "\n" + rsCredit + "\n");
#if defined(RTAUDIO) #if defined(RTAUDIO)

Plik diff jest za duży Load Diff

Wyświetl plik

@ -2,10 +2,10 @@
#define RIGCOMMANDER_H #define RIGCOMMANDER_H
#include <QObject> #include <QObject>
#include <QMutex>
#include <QMutexLocker> #include <QMutexLocker>
#include <QDebug> #include <QDebug>
#include "commhandler.h" #include "commhandler.h"
#include "pttyhandler.h" #include "pttyhandler.h"
#include "udphandler.h" #include "udphandler.h"
@ -13,6 +13,8 @@
#include "repeaterattributes.h" #include "repeaterattributes.h"
#include "freqmemory.h" #include "freqmemory.h"
#include "rigstate.h"
// This file figures out what to send to the comm and also // This file figures out what to send to the comm and also
// parses returns into useful things. // parses returns into useful things.
@ -61,78 +63,6 @@ struct timekind {
bool isMinus; bool isMinus;
}; };
struct rigStateStruct {
QMutex *mutex;
freqt vfoAFreq;
freqt vfoBFreq;
unsigned char currentVfo;
bool ptt;
unsigned char mode;
unsigned char filter;
duplexMode duplex;
bool datamode;
unsigned char antenna;
bool rxAntenna;
// Tones
quint16 ctcss;
quint16 tsql;
quint16 dtcs;
quint16 csql;
// Levels
unsigned char preamp;
unsigned char attenuator;
unsigned char modInput;
unsigned char afGain;
unsigned char rfGain;
unsigned char squelch;
unsigned char txPower;
unsigned char micGain;
unsigned char compLevel;
unsigned char monitorLevel;
unsigned char voxGain;
unsigned char antiVoxGain;
// Meters
unsigned char sMeter;
unsigned char powerMeter;
unsigned char swrMeter;
unsigned char alcMeter;
unsigned char compMeter;
unsigned char voltageMeter;
unsigned char currentMeter;
// Functions
bool fagcFunc=false;
bool nbFunc=false;
bool compFunc=false;
bool voxFunc = false;
bool toneFunc = false;
bool tsqlFunc = false;
bool sbkinFunc = false;
bool fbkinFunc = false;
bool anfFunc = false;
bool nrFunc = false;
bool aipFunc = false;
bool apfFunc = false;
bool monFunc = false;
bool mnFunc = false;
bool rfFunc = false;
bool aroFunc = false;
bool muteFunc = false;
bool vscFunc = false;
bool revFunc = false;
bool sqlFunc = false;
bool abmFunc = false;
bool bcFunc = false;
bool mbcFunc = false;
bool ritFunc = false;
bool afcFunc = false;
bool satmodeFunc = false;
bool scopeFunc = false;
bool resumeFunc = false;
bool tburstFunc = false;
bool tunerFunc = false;
bool lockFunc = false;
};
class rigCommander : public QObject class rigCommander : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -148,6 +78,8 @@ public slots:
void commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp); void commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp);
void commSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp); void commSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp);
void closeComm(); void closeComm();
void stateUpdated();
void setRTSforPTT(bool enabled);
// Power: // Power:
void powerOn(); void powerOn();
@ -199,6 +131,26 @@ public slots:
void setAttenuator(unsigned char att); void setAttenuator(unsigned char att);
void setPreamp(unsigned char pre); void setPreamp(unsigned char pre);
void setAntenna(unsigned char ant, bool rx); void setAntenna(unsigned char ant, bool rx);
void setNb(bool enabled);
void getNb();
void setNr(bool enabled);
void getNr();
void setAutoNotch(bool enabled);
void getAutoNotch();
void setToneEnabled(bool enabled);
void getToneEnabled();
void setToneSql(bool enabled);
void getToneSql();
void setCompressor(bool enabled);
void getCompressor();
void setMonitor(bool enabled);
void getMonitor();
void setVox(bool enabled);
void getVox();
void setBreakIn(unsigned char type);
void getBreakIn();
void setManualNotch(bool enabled);
void getManualNotch();
// Repeater: // Repeater:
void setDuplexMode(duplexMode dm); void setDuplexMode(duplexMode dm);
@ -233,6 +185,8 @@ public slots:
void getACCGain(unsigned char ab); void getACCGain(unsigned char ab);
void getModInput(bool dataOn); void getModInput(bool dataOn);
void getModInputLevel(rigInput input); void getModInputLevel(rigInput input);
void getAfMute();
void getDialLock();
// Set Levels: // Set Levels:
void setSquelch(unsigned char level); void setSquelch(unsigned char level);
@ -253,6 +207,8 @@ public slots:
void setAntiVoxGain(unsigned char gain); void setAntiVoxGain(unsigned char gain);
void setModInput(rigInput input, bool dataOn); void setModInput(rigInput input, bool dataOn);
void setModInputLevel(rigInput input, unsigned char level); void setModInputLevel(rigInput input, unsigned char level);
void setAfMute(bool muteOn);
void setDialLock(bool lockOn);
// NB, NR, IP+: // NB, NR, IP+:
void setIPP(bool enabled); void setIPP(bool enabled);
@ -406,7 +362,7 @@ signals:
void haveAntenna(unsigned char ant,bool rx); void haveAntenna(unsigned char ant,bool rx);
// Rig State // Rig State
void stateInfo(rigStateStruct* state); void stateInfo(rigstate* state);
// Housekeeping: // Housekeeping:
void getMoreDebug(); void getMoreDebug();
@ -480,7 +436,7 @@ private:
struct rigCapabilities rigCaps; struct rigCapabilities rigCaps;
rigStateStruct rigState; rigstate state;
bool haveRigCaps; bool haveRigCaps;
model_kind model; model_kind model;
@ -497,6 +453,9 @@ private:
unsigned char civAddr; unsigned char civAddr;
unsigned char incomingCIVAddr; // place to store the incoming CIV. unsigned char incomingCIVAddr; // place to store the incoming CIV.
bool pttAllowed; bool pttAllowed;
bool useRTSforPTT_isSet = false;
bool useRTSforPTT_manual = false;
QString rigSerialPort; QString rigSerialPort;
quint32 rigBaudRate; quint32 rigBaudRate;
@ -509,6 +468,7 @@ private:
QString password; QString password;
QString serialPortError; QString serialPortError;
unsigned char localVolume=0;
}; };

Plik diff jest za duży Load Diff

Wyświetl plik

@ -19,6 +19,7 @@
#include <typeindex> #include <typeindex>
#include "rigcommander.h" #include "rigcommander.h"
#include "rigstate.h"
#define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT)) #define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
@ -343,7 +344,7 @@ signals:
void setVFO(unsigned char vfo); void setVFO(unsigned char vfo);
void setSplit(unsigned char split); void setSplit(unsigned char split);
void setDuplexMode(duplexMode dm); void setDuplexMode(duplexMode dm);
void stateUpdated();
// Power // Power
void sendPowerOn(); void sendPowerOn();
void sendPowerOff(); void sendPowerOff();
@ -368,11 +369,11 @@ signals:
public slots: public slots:
virtual void incomingConnection(qintptr socketDescriptor); virtual void incomingConnection(qintptr socketDescriptor);
void receiveRigCaps(rigCapabilities caps); void receiveRigCaps(rigCapabilities caps);
void receiveStateInfo(rigStateStruct* state); void receiveStateInfo(rigstate* state);
// void receiveFrequency(freqt freq); // void receiveFrequency(freqt freq);
private: private:
rigStateStruct* rigState = Q_NULLPTR; rigstate* rigState = Q_NULLPTR;
}; };
@ -382,7 +383,7 @@ class rigCtlClient : public QObject
public: public:
explicit rigCtlClient(int socket, rigCapabilities caps, rigStateStruct *state, rigCtlD* parent = Q_NULLPTR); explicit rigCtlClient(int socket, rigCapabilities caps, rigstate *state, rigCtlD* parent = Q_NULLPTR);
int getSocketId(); int getSocketId();
@ -399,8 +400,9 @@ protected:
private: private:
rigCapabilities rigCaps; rigCapabilities rigCaps;
rigStateStruct* rigState = Q_NULLPTR; rigstate* rigState = Q_NULLPTR;
rigCtlD* parent; rigCtlD* parent;
bool chkVfoEecuted=false;
QString getMode(unsigned char mode, bool datamode); QString getMode(unsigned char mode, bool datamode);
unsigned char getMode(QString modeString); unsigned char getMode(QString modeString);
QString getFilter(unsigned char mode, unsigned char filter); QString getFilter(unsigned char mode, unsigned char filter);
@ -408,6 +410,7 @@ private:
unsigned char getAntennas(); unsigned char getAntennas();
quint64 getRadioModes(); quint64 getRadioModes();
QString getAntName(unsigned char ant); QString getAntName(unsigned char ant);
unsigned char antFromName(QString name);
int getCalibratedValue(unsigned char meter,cal_table_t cal); int getCalibratedValue(unsigned char meter,cal_table_t cal);
}; };

127
rigstate.h 100644
Wyświetl plik

@ -0,0 +1,127 @@
#ifndef RIGSTATEH
#define RIGSTATEH
#include <QObject>
#include <QMutex>
#include <QDateTime>
#include <QVariant>
#include <QMap>
#include <QCache>
#include "rigcommander.h"
#include "rigidentities.h"
// Meters at the end as they are ALWAYS updated from the rig!
enum stateTypes { VFOAFREQ, VFOBFREQ, CURRENTVFO, PTT, MODE, FILTER, DUPLEX, DATAMODE, ANTENNA, RXANTENNA, CTCSS, TSQL, DTCS, CSQL,
PREAMP, AGC, ATTENUATOR, MODINPUT, AFGAIN, RFGAIN, SQUELCH, TXPOWER, MICGAIN, COMPLEVEL, MONITORLEVEL, VOXGAIN, ANTIVOXGAIN,
FAGCFUNC, NBFUNC, COMPFUNC, VOXFUNC, TONEFUNC, TSQLFUNC, SBKINFUNC, FBKINFUNC, ANFFUNC, NRFUNC, AIPFUNC, APFFUNC, MONFUNC, MNFUNC,RFFUNC,
AROFUNC, MUTEFUNC, VSCFUNC, REVFUNC, SQLFUNC, ABMFUNC, BCFUNC, MBCFUNC, RITFUNC, AFCFUNC, SATMODEFUNC, SCOPEFUNC,
NBLEVEL, NBDEPTH, NBWIDTH, NRLEVEL, RIGINPUT, POWERONOFF, RITVALUE,
RESUMEFUNC, TBURSTFUNC, TUNERFUNC, LOCKFUNC, SMETER, POWERMETER, SWRMETER, ALCMETER, COMPMETER, VOLTAGEMETER, CURRENTMETER
};
struct value {
quint64 _value=0;
bool _valid = false;
bool _updated = false;
QDateTime _dateUpdated;
};
class rigstate
{
public:
void invalidate(stateTypes s) { map[s]._valid = false; }
bool isValid(stateTypes s) { return map[s]._valid; }
bool isUpdated(stateTypes s) { return map[s]._updated; }
QDateTime whenUpdated(stateTypes s) { return map[s]._dateUpdated; }
void set(stateTypes s, quint64 x, bool u) {
if (x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
map[s]._valid = true;
map[s]._updated = u;
map[s]._dateUpdated = QDateTime::currentDateTime();
_mutex.unlock();
}
}
void set(stateTypes s, qint32 x, bool u) {
if ((quint64)x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
map[s]._valid = true;
map[s]._updated = u;
map[s]._dateUpdated = QDateTime::currentDateTime();
_mutex.unlock();
}
}
void set(stateTypes s, quint16 x, bool u) {
if ((quint64)x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
map[s]._valid = true;
map[s]._updated = u;
map[s]._dateUpdated = QDateTime::currentDateTime();
_mutex.unlock();
}
}
void set(stateTypes s, quint8 x, bool u) {
if ((quint64)x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
map[s]._valid = true;
map[s]._updated = u;
map[s]._dateUpdated = QDateTime::currentDateTime();
_mutex.unlock();
}
}
void set(stateTypes s, bool x, bool u) {
if ((quint64)x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
map[s]._valid = true;
map[s]._updated = u;
map[s]._dateUpdated = QDateTime::currentDateTime();
_mutex.unlock();
}
}
void set(stateTypes s, duplexMode x, bool u) {
if ((quint64)x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
map[s]._valid = true;
map[s]._updated = u;
map[s]._dateUpdated = QDateTime::currentDateTime();
_mutex.unlock();
}
}
void set(stateTypes s, rigInput x, bool u) {
if ((quint64)x != map[s]._value) {
_mutex.lock();
map[s]._value = (quint64)x;
map[s]._valid = true;
map[s]._updated = u;
map[s]._dateUpdated = QDateTime::currentDateTime();
_mutex.unlock();
}
}
bool getBool(stateTypes s) { return map[s]._value != 0; }
quint8 getChar(stateTypes s) { return (quint8)map[s]._value; }
quint16 getInt16(stateTypes s) { return (qint16)map[s]._value; }
qint32 getInt32(stateTypes s) { return (qint32)map[s]._value; }
quint64 getInt64(stateTypes s) { return map[s]._value; }
duplexMode getDuplex(stateTypes s) { return(duplexMode)map[s]._value; }
rigInput getInput(stateTypes s) { return(rigInput)map[s]._value; }
QMap<stateTypes, value> map;
private:
//std::map<stateTypes, std::unique_ptr<valueBase> > values;
QMutex _mutex;
};
#endif

Wyświetl plik

@ -99,6 +99,8 @@ udpServer::~udpServer()
udpAudio->close(); udpAudio->close();
delete udpAudio; delete udpAudio;
} }
emit haveNetworkStatus(QString(""));
} }

Wyświetl plik

@ -19,7 +19,6 @@
#include <QDebug> #include <QDebug>
#include <udpserversetup.h>
#include "packettypes.h" #include "packettypes.h"
#include "rigidentities.h" #include "rigidentities.h"
#include "audiohandler.h" #include "audiohandler.h"
@ -34,6 +33,28 @@ struct SEQBUFENTRY {
quint8 retransmitCount; quint8 retransmitCount;
}; };
struct SERVERUSER {
QString username;
QString password;
quint8 userType;
};
struct SERVERCONFIG {
bool enabled;
bool lan;
quint16 controlPort;
quint16 civPort;
quint16 audioPort;
int audioOutput;
int audioInput;
quint8 resampleQuality;
quint32 baudRate;
QList <SERVERUSER> users;
};
class udpServer : public QObject class udpServer : public QObject
{ {
Q_OBJECT Q_OBJECT

Wyświetl plik

@ -1,127 +0,0 @@
#include "udpserversetup.h"
#include "ui_udpserversetup.h"
#include "logcategories.h"
extern void passcode(QString in,QByteArray& out);
udpServerSetup::udpServerSetup(QWidget* parent) :
QDialog(parent),
ui(new Ui::udpServerSetup)
{
ui->setupUi(this);
addUserLine("", "", 0); // Create a blank row if we never receive config.
// Get any stored config information from the main form.
SERVERCONFIG config;
emit serverConfig(config,false); // Just send blank server config.
}
udpServerSetup::~udpServerSetup()
{
delete ui;
}
// Slot to receive config.
void udpServerSetup::receiveServerConfig(SERVERCONFIG conf)
{
qInfo() << "Getting server config";
ui->enableCheckbox->setChecked(conf.enabled);
ui->controlPortText->setText(QString::number(conf.controlPort));
ui->civPortText->setText(QString::number(conf.civPort));
ui->audioPortText->setText(QString::number(conf.audioPort));
int row = 0;
for (int i = 0; i < ui->usersTable->rowCount(); i++)
{
ui->usersTable->removeRow(i);
}
foreach (SERVERUSER user, conf.users)
{
if (user.username != "" && user.password != "")
{
addUserLine(user.username, user.password, user.userType);
row++;
}
}
if (row == 0) {
addUserLine("", "", 0);
}
}
void udpServerSetup::accept()
{
qInfo() << "Server config stored";
SERVERCONFIG config;
config.enabled = ui->enableCheckbox->isChecked();
config.controlPort = ui->controlPortText->text().toInt();
config.civPort = ui->civPortText->text().toInt();
config.audioPort = ui->audioPortText->text().toInt();
config.users.clear();
for (int row = 0; row < ui->usersTable->model()->rowCount(); row++)
{
if (ui->usersTable->item(row, 0) != NULL)
{
SERVERUSER user;
user.username = ui->usersTable->item(row, 0)->text();
QLineEdit* password = (QLineEdit*)ui->usersTable->cellWidget(row, 1);
user.password = password->text();
QComboBox* comboBox = (QComboBox*)ui->usersTable->cellWidget(row, 2);
user.userType = comboBox->currentIndex();
config.users.append(user);
}
else {
ui->usersTable->removeRow(row);
}
}
emit serverConfig(config,true);
this->hide();
}
void udpServerSetup::on_usersTable_cellClicked(int row, int col)
{
qInfo() << "Clicked on " << row << "," << col;
if (row == ui->usersTable->model()->rowCount() - 1 && ui->usersTable->item(row, 0) != NULL) {
addUserLine("", "", 0);
}
}
void udpServerSetup::onPasswordChanged()
{
int row = sender()->property("row").toInt();
QLineEdit* password = (QLineEdit*)ui->usersTable->cellWidget(row, 1);
QByteArray pass;
passcode(password->text(), pass);
password->setText(pass);
qInfo() << "password row" << row << "changed";
}
void udpServerSetup::addUserLine(const QString& user, const QString& pass, const int& type)
{
ui->usersTable->insertRow(ui->usersTable->rowCount());
ui->usersTable->setItem(ui->usersTable->rowCount() - 1, 0, new QTableWidgetItem(user));
ui->usersTable->setItem(ui->usersTable->rowCount() - 1, 1, new QTableWidgetItem());
ui->usersTable->setItem(ui->usersTable->rowCount() - 1, 2, new QTableWidgetItem());
QLineEdit* password = new QLineEdit();
password->setProperty("row", (int)ui->usersTable->rowCount() - 1);
password->setEchoMode(QLineEdit::PasswordEchoOnEdit);
password->setText(pass);
connect(password, SIGNAL(editingFinished()), this, SLOT(onPasswordChanged()));
ui->usersTable->setCellWidget(ui->usersTable->rowCount() - 1, 1, password);
QComboBox* comboBox = new QComboBox();
comboBox->insertItems(0, { "Full User","Full with no TX","Monitor only" });
comboBox->setCurrentIndex(type);
ui->usersTable->setCellWidget(ui->usersTable->rowCount() - 1, 2, comboBox);
}

Wyświetl plik

@ -1,60 +0,0 @@
#ifndef UDPSERVERSETUP_H
#define UDPSERVERSETUP_H
#include <QDialog>
#include <QComboBox>
#include <QList>
#include <QDebug>
struct SERVERUSER {
QString username;
QString password;
quint8 userType;
};
struct SERVERCONFIG {
bool enabled;
bool lan;
quint16 controlPort;
quint16 civPort;
quint16 audioPort;
int audioOutput;
int audioInput;
quint8 resampleQuality;
quint32 baudRate;
QList <SERVERUSER> users;
};
namespace Ui {
class udpServerSetup;
}
class udpServerSetup : public QDialog
{
Q_OBJECT
public:
explicit udpServerSetup(QWidget* parent = 0);
~udpServerSetup();
private slots:
void on_usersTable_cellClicked(int row, int col);
void onPasswordChanged();
public slots:
void receiveServerConfig(SERVERCONFIG conf);
signals:
void serverConfig(SERVERCONFIG conf, bool store);
private:
Ui::udpServerSetup* ui;
void accept();
QList<QComboBox*> userTypes;
void addUserLine(const QString &user, const QString &pass, const int &type);
};
#endif // UDPSERVER_H

Wyświetl plik

@ -27,12 +27,8 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, const QString s
rpt = new repeaterSetup(); rpt = new repeaterSetup();
sat = new satelliteSetup(); sat = new satelliteSetup();
trxadj = new transceiverAdjustments(); trxadj = new transceiverAdjustments();
srv = new udpServerSetup();
abtBox = new aboutbox(); abtBox = new aboutbox();
connect(this, SIGNAL(sendServerConfig(SERVERCONFIG)), srv, SLOT(receiveServerConfig(SERVERCONFIG)));
connect(srv, SIGNAL(serverConfig(SERVERCONFIG, bool)), this, SLOT(serverConfigRequested(SERVERCONFIG, bool)));
qRegisterMetaType<udpPreferences>(); // Needs to be registered early. qRegisterMetaType<udpPreferences>(); // Needs to be registered early.
qRegisterMetaType<rigCapabilities>(); qRegisterMetaType<rigCapabilities>();
qRegisterMetaType<duplexMode>(); qRegisterMetaType<duplexMode>();
@ -46,6 +42,7 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, const QString s
qRegisterMetaType <audioSetup>(); qRegisterMetaType <audioSetup>();
qRegisterMetaType <timekind>(); qRegisterMetaType <timekind>();
qRegisterMetaType <datekind>(); qRegisterMetaType <datekind>();
qRegisterMetaType<rigstate*>();
haveRigCaps = false; haveRigCaps = false;
@ -217,6 +214,31 @@ void wfmain::openRig()
} }
void wfmain::createSettingsListItems()
{
// Add items to the settings tab list widget
ui->settingsList->addItem("Radio Access"); // 0
ui->settingsList->addItem("User Interface"); // 1
ui->settingsList->addItem("Radio Settings"); // 2
ui->settingsList->addItem("Radio Server"); // 3
ui->settingsList->addItem("External Control"); // 4
ui->settingsList->addItem("Experimental"); // 5
//ui->settingsList->addItem("Audio Processing"); // 6
ui->settingsStack->setCurrentIndex(0);
}
void wfmain::on_settingsList_currentRowChanged(int currentRow)
{
ui->settingsStack->setCurrentIndex(currentRow);
}
void wfmain::connectSettingsList()
{
}
void wfmain::rigConnections() void wfmain::rigConnections()
{ {
connect(this, SIGNAL(setCIVAddr(unsigned char)), rig, SLOT(setCIVAddr(unsigned char))); connect(this, SIGNAL(setCIVAddr(unsigned char)), rig, SLOT(setCIVAddr(unsigned char)));
@ -406,7 +428,7 @@ void wfmain::makeRig()
// Rig comm setup: // Rig comm setup:
connect(this, SIGNAL(sendCommSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString)), rig, SLOT(commSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString))); connect(this, SIGNAL(sendCommSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString)), rig, SLOT(commSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString)));
connect(this, SIGNAL(sendCommSetup(unsigned char, QString, quint32,QString)), rig, SLOT(commSetup(unsigned char, QString, quint32,QString))); connect(this, SIGNAL(sendCommSetup(unsigned char, QString, quint32,QString)), rig, SLOT(commSetup(unsigned char, QString, quint32,QString)));
connect(this, SIGNAL(setRTSforPTT(bool)), rig, SLOT(setRTSforPTT(bool)));
connect(rig, SIGNAL(haveBaudRate(quint32)), this, SLOT(receiveBaudRate(quint32))); connect(rig, SIGNAL(haveBaudRate(quint32)), this, SLOT(receiveBaudRate(quint32)));
@ -417,31 +439,12 @@ void wfmain::makeRig()
connect(rig, SIGNAL(discoveredRigID(rigCapabilities)), this, SLOT(receiveFoundRigID(rigCapabilities))); connect(rig, SIGNAL(discoveredRigID(rigCapabilities)), this, SLOT(receiveFoundRigID(rigCapabilities)));
connect(rig, SIGNAL(commReady()), this, SLOT(receiveCommReady())); connect(rig, SIGNAL(commReady()), this, SLOT(receiveCommReady()));
connect(this, SIGNAL(requestRigState()), rig, SLOT(sendState()));
connect(this, SIGNAL(stateUpdated()), rig, SLOT(stateUpdated()));
connect(rig, SIGNAL(stateInfo(rigstate*)), this, SLOT(receiveStateInfo(rigstate*)));
if (rigCtl != Q_NULLPTR) { if (rigCtl != Q_NULLPTR) {
connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*))); connect(rig, SIGNAL(stateInfo(rigstate*)), rigCtl, SLOT(receiveStateInfo(rigstate*)));
connect(this, SIGNAL(requestRigState()), rig, SLOT(sendState())); connect(rigCtl, SIGNAL(stateUpdated()), rig, SLOT(stateUpdated()));
connect(rigCtl, SIGNAL(setFrequency(unsigned char, freqt)), rig, SLOT(setFrequency(unsigned char, freqt)));
connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char)));
connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char)));
connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));
connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn()));
connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff()));
connect(rigCtl, SIGNAL(setAttenuator(unsigned char)), rig, SLOT(setAttenuator(unsigned char)));
connect(rigCtl, SIGNAL(setPreamp(unsigned char)), rig, SLOT(setPreamp(unsigned char)));
connect(rigCtl, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
// Levels: Set:
connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));
connect(rigCtl, SIGNAL(setSql(unsigned char)), rig, SLOT(setSquelch(unsigned char)));
connect(rigCtl, SIGNAL(setTxPower(unsigned char)), rig, SLOT(setTxPower(unsigned char)));
connect(rigCtl, SIGNAL(setMicGain(unsigned char)), rig, SLOT(setMicGain(unsigned char)));
connect(rigCtl, SIGNAL(setMonitorLevel(unsigned char)), rig, SLOT(setMonitorLevel(unsigned char)));
connect(rigCtl, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int)));
} }
} }
} }
@ -631,6 +634,8 @@ void wfmain::setupPlots()
void wfmain::setupMainUI() void wfmain::setupMainUI()
{ {
createSettingsListItems();
ui->bandStkLastUsedBtn->setVisible(false); ui->bandStkLastUsedBtn->setVisible(false);
ui->bandStkVoiceBtn->setVisible(false); ui->bandStkVoiceBtn->setVisible(false);
ui->bandStkDataBtn->setVisible(false); ui->bandStkDataBtn->setVisible(false);
@ -672,6 +677,7 @@ void wfmain::setupMainUI()
ui->tuningStepCombo->addItem("1 Hz", (unsigned int) 1); ui->tuningStepCombo->addItem("1 Hz", (unsigned int) 1);
ui->tuningStepCombo->addItem("10 Hz", (unsigned int) 10); ui->tuningStepCombo->addItem("10 Hz", (unsigned int) 10);
ui->tuningStepCombo->addItem("100 Hz", (unsigned int) 100); ui->tuningStepCombo->addItem("100 Hz", (unsigned int) 100);
ui->tuningStepCombo->addItem("500 Hz", (unsigned int) 500);
ui->tuningStepCombo->addItem("1 kHz", (unsigned int) 1000); ui->tuningStepCombo->addItem("1 kHz", (unsigned int) 1000);
ui->tuningStepCombo->addItem("2.5 kHz", (unsigned int) 2500); ui->tuningStepCombo->addItem("2.5 kHz", (unsigned int) 2500);
ui->tuningStepCombo->addItem("5 kHz", (unsigned int) 5000); ui->tuningStepCombo->addItem("5 kHz", (unsigned int) 5000);
@ -951,10 +957,19 @@ void wfmain::setServerToPrefs()
{ {
// Start server if enabled in config // Start server if enabled in config
ui->serverSetupGroup->setEnabled(serverConfig.enabled);
if (serverThread != Q_NULLPTR) {
serverThread->quit();
serverThread->wait();
serverThread = Q_NULLPTR;
udp = Q_NULLPTR;
ui->statusBar->showMessage(QString("Server disabled"), 1000);
}
if (serverConfig.enabled) { if (serverConfig.enabled) {
serverConfig.lan = prefs.enableLAN; serverConfig.lan = prefs.enableLAN;
udp = new udpServer(serverConfig,rxSetup,txSetup); udp = new udpServer(serverConfig,serverTxSetup,serverRxSetup);
serverThread = new QThread(this); serverThread = new QThread(this);
@ -972,6 +987,7 @@ void wfmain::setServerToPrefs()
emit initServer(); emit initServer();
connect(this, SIGNAL(sendRigCaps(rigCapabilities)), udp, SLOT(receiveRigCaps(rigCapabilities))); connect(this, SIGNAL(sendRigCaps(rigCapabilities)), udp, SLOT(receiveRigCaps(rigCapabilities)));
ui->statusBar->showMessage(QString("Server enabled"), 1000);
} }
} }
@ -1056,10 +1072,12 @@ void wfmain::setAudioDevicesUI()
if (info.outputChannels > 0) { if (info.outputChannels > 0) {
qInfo(logAudio()) << (info.isDefaultOutput ? "*" : " ") << "(" << i << ") Output Device : " << QString::fromStdString(info.name); qInfo(logAudio()) << (info.isDefaultOutput ? "*" : " ") << "(" << i << ") Output Device : " << QString::fromStdString(info.name);
ui->audioOutputCombo->addItem(QString::fromStdString(info.name), i); ui->audioOutputCombo->addItem(QString::fromStdString(info.name), i);
ui->serverTXAudioOutputCombo->addItem(QString::fromStdString(info.name), i);
} }
if (info.inputChannels > 0) { if (info.inputChannels > 0) {
qInfo(logAudio()) << (info.isDefaultInput ? "*" : " ") << "(" << i << ") Input Device : " << QString::fromStdString(info.name); qInfo(logAudio()) << (info.isDefaultInput ? "*" : " ") << "(" << i << ") Input Device : " << QString::fromStdString(info.name);
ui->audioInputCombo->addItem(QString::fromStdString(info.name), i); ui->audioInputCombo->addItem(QString::fromStdString(info.name), i);
ui->serverRXAudioInputCombo->addItem(QString::fromStdString(info.name), i);
} }
} }
@ -1090,11 +1108,13 @@ void wfmain::setAudioDevicesUI()
if (info->maxInputChannels > 0) { if (info->maxInputChannels > 0) {
qInfo(logAudio()) << (i == Pa_GetDefaultInputDevice() ? "*" : " ") << "(" << i << ") Output Device : " << info->name; qInfo(logAudio()) << (i == Pa_GetDefaultInputDevice() ? "*" : " ") << "(" << i << ") Output Device : " << info->name;
ui->audioInputCombo->addItem(info->name, i); ui->audioInputCombo->addItem(info->name, i);
ui->serverRXAudioInputCombo->addItem(info->name, i);
} }
if (info->maxOutputChannels > 0) { if (info->maxOutputChannels > 0) {
qInfo(logAudio()) << (i == Pa_GetDefaultOutputDevice() ? "*" : " ") << "(" << i << ") Input Device : " << info->name; qInfo(logAudio()) << (i == Pa_GetDefaultOutputDevice() ? "*" : " ") << "(" << i << ") Input Device : " << info->name;
ui->audioOutputCombo->addItem(info->name, i); ui->audioOutputCombo->addItem(info->name, i);
} ui->serverTXAudioOutputCombo->addItem(info->name, i);
}
} }
#else #else
@ -1104,15 +1124,19 @@ void wfmain::setAudioDevicesUI()
const auto audioOutputs = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); const auto audioOutputs = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
for (const QAudioDeviceInfo& deviceInfo : audioOutputs) { for (const QAudioDeviceInfo& deviceInfo : audioOutputs) {
ui->audioOutputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); ui->audioOutputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo));
ui->serverTXAudioOutputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo));
} }
const auto audioInputs = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); const auto audioInputs = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
for (const QAudioDeviceInfo& deviceInfo : audioInputs) { for (const QAudioDeviceInfo& deviceInfo : audioInputs) {
ui->audioInputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); ui->audioInputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo));
ui->serverRXAudioInputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo));
} }
// Set these to default audio devices initially. // Set these to default audio devices initially.
rxSetup.port = QAudioDeviceInfo::defaultOutputDevice(); rxSetup.port = QAudioDeviceInfo::defaultOutputDevice();
txSetup.port = QAudioDeviceInfo::defaultInputDevice(); txSetup.port = QAudioDeviceInfo::defaultInputDevice();
serverRxSetup.port = QAudioDeviceInfo::defaultOutputDevice();
serverTxSetup.port = QAudioDeviceInfo::defaultInputDevice();
#else #else
// If no external library is configured, use QTMultimedia // If no external library is configured, use QTMultimedia
@ -1322,6 +1346,7 @@ void wfmain::setDefPrefs()
defPrefs.stylesheetPath = QString("qdarkstyle/style.qss"); defPrefs.stylesheetPath = QString("qdarkstyle/style.qss");
defPrefs.radioCIVAddr = 0x00; // previously was 0x94 for 7300. defPrefs.radioCIVAddr = 0x00; // previously was 0x94 for 7300.
defPrefs.CIVisRadioModel = false; defPrefs.CIVisRadioModel = false;
defPrefs.forceRTSasPTT = false;
defPrefs.serialPortRadio = QString("auto"); defPrefs.serialPortRadio = QString("auto");
defPrefs.serialPortBaud = 115200; defPrefs.serialPortBaud = 115200;
defPrefs.enablePTT = false; defPrefs.enablePTT = false;
@ -1359,7 +1384,7 @@ void wfmain::loadSettings()
prefs.drawPeaks = settings->value("DrawPeaks", defPrefs.drawPeaks).toBool(); prefs.drawPeaks = settings->value("DrawPeaks", defPrefs.drawPeaks).toBool();
prefs.wfAntiAlias = settings->value("WFAntiAlias", defPrefs.wfAntiAlias).toBool(); prefs.wfAntiAlias = settings->value("WFAntiAlias", defPrefs.wfAntiAlias).toBool();
prefs.wfInterpolate = settings->value("WFInterpolate", defPrefs.wfInterpolate).toBool(); prefs.wfInterpolate = settings->value("WFInterpolate", defPrefs.wfInterpolate).toBool();
prefs.wflength = (unsigned int) settings->value("WFLength", defPrefs.wflength).toInt(); prefs.wflength = (unsigned int)settings->value("WFLength", defPrefs.wflength).toInt();
prefs.stylesheetPath = settings->value("StylesheetPath", defPrefs.stylesheetPath).toString(); prefs.stylesheetPath = settings->value("StylesheetPath", defPrefs.stylesheetPath).toString();
ui->splitter->restoreState(settings->value("splitter").toByteArray()); ui->splitter->restoreState(settings->value("splitter").toByteArray());
@ -1407,20 +1432,23 @@ void wfmain::loadSettings()
// Radio and Comms: C-IV addr, port to use // Radio and Comms: C-IV addr, port to use
settings->beginGroup("Radio"); settings->beginGroup("Radio");
prefs.radioCIVAddr = (unsigned char) settings->value("RigCIVuInt", defPrefs.radioCIVAddr).toInt(); prefs.radioCIVAddr = (unsigned char)settings->value("RigCIVuInt", defPrefs.radioCIVAddr).toInt();
if(prefs.radioCIVAddr!=0) if (prefs.radioCIVAddr != 0)
{ {
ui->rigCIVManualAddrChk->setChecked(true); ui->rigCIVManualAddrChk->setChecked(true);
ui->rigCIVaddrHexLine->blockSignals(true); ui->rigCIVaddrHexLine->blockSignals(true);
ui->rigCIVaddrHexLine->setText(QString("%1").arg(prefs.radioCIVAddr, 2, 16)); ui->rigCIVaddrHexLine->setText(QString("%1").arg(prefs.radioCIVAddr, 2, 16));
ui->rigCIVaddrHexLine->setEnabled(true); ui->rigCIVaddrHexLine->setEnabled(true);
ui->rigCIVaddrHexLine->blockSignals(false); ui->rigCIVaddrHexLine->blockSignals(false);
} else { }
else {
ui->rigCIVManualAddrChk->setChecked(false); ui->rigCIVManualAddrChk->setChecked(false);
ui->rigCIVaddrHexLine->setEnabled(false); ui->rigCIVaddrHexLine->setEnabled(false);
} }
prefs.CIVisRadioModel = (bool)settings->value("CIVisRadioModel", defPrefs.CIVisRadioModel).toBool(); prefs.CIVisRadioModel = (bool)settings->value("CIVisRadioModel", defPrefs.CIVisRadioModel).toBool();
prefs.forceRTSasPTT = (bool)settings->value("ForceRTSasPTT", defPrefs.forceRTSasPTT).toBool();
ui->useRTSforPTTchk->setChecked(prefs.forceRTSasPTT);
prefs.serialPortRadio = settings->value("SerialPortRadio", defPrefs.serialPortRadio).toString(); prefs.serialPortRadio = settings->value("SerialPortRadio", defPrefs.serialPortRadio).toString();
int serialIndex = ui->serialDeviceListCombo->findText(prefs.serialPortRadio); int serialIndex = ui->serialDeviceListCombo->findText(prefs.serialPortRadio);
@ -1428,9 +1456,9 @@ void wfmain::loadSettings()
ui->serialDeviceListCombo->setCurrentIndex(serialIndex); ui->serialDeviceListCombo->setCurrentIndex(serialIndex);
} }
prefs.serialPortBaud = (quint32) settings->value("SerialPortBaud", defPrefs.serialPortBaud).toInt(); prefs.serialPortBaud = (quint32)settings->value("SerialPortBaud", defPrefs.serialPortBaud).toInt();
ui->baudRateCombo->blockSignals(true); ui->baudRateCombo->blockSignals(true);
ui->baudRateCombo->setCurrentIndex( ui->baudRateCombo->findData(prefs.serialPortBaud) ); ui->baudRateCombo->setCurrentIndex(ui->baudRateCombo->findData(prefs.serialPortBaud));
ui->baudRateCombo->blockSignals(false); ui->baudRateCombo->blockSignals(false);
if (prefs.serialPortBaud > 0) if (prefs.serialPortBaud > 0)
@ -1446,10 +1474,10 @@ void wfmain::loadSettings()
else else
{ {
ui->vspCombo->addItem(prefs.virtualSerialPort); ui->vspCombo->addItem(prefs.virtualSerialPort);
ui->vspCombo->setCurrentIndex(ui->vspCombo->count()-1); ui->vspCombo->setCurrentIndex(ui->vspCombo->count() - 1);
} }
prefs.localAFgain = (unsigned char) settings->value("localAFgain", defPrefs.localAFgain).toUInt(); prefs.localAFgain = (unsigned char)settings->value("localAFgain", defPrefs.localAFgain).toUInt();
rxSetup.localAFgain = prefs.localAFgain; rxSetup.localAFgain = prefs.localAFgain;
settings->endGroup(); settings->endGroup();
@ -1463,15 +1491,14 @@ void wfmain::loadSettings()
settings->beginGroup("LAN"); settings->beginGroup("LAN");
prefs.enableLAN = settings->value("EnableLAN", defPrefs.enableLAN).toBool(); prefs.enableLAN = settings->value("EnableLAN", defPrefs.enableLAN).toBool();
if(prefs.enableLAN) if (prefs.enableLAN)
{ {
ui->baudRateCombo->setEnabled(false); ui->baudRateCombo->setEnabled(false);
ui->serialDeviceListCombo->setEnabled(false); ui->serialDeviceListCombo->setEnabled(false);
//ui->udpServerSetupBtn->setEnabled(false); }
} else { else {
ui->baudRateCombo->setEnabled(true); ui->baudRateCombo->setEnabled(true);
ui->serialDeviceListCombo->setEnabled(true); ui->serialDeviceListCombo->setEnabled(true);
//ui->udpServerSetupBtn->setEnabled(true);
} }
ui->lanEnableBtn->setChecked(prefs.enableLAN); ui->lanEnableBtn->setChecked(prefs.enableLAN);
@ -1487,15 +1514,15 @@ void wfmain::loadSettings()
udpPrefs.ipAddress = settings->value("IPAddress", udpDefPrefs.ipAddress).toString(); udpPrefs.ipAddress = settings->value("IPAddress", udpDefPrefs.ipAddress).toString();
ui->ipAddressTxt->setEnabled(ui->lanEnableBtn->isChecked()); ui->ipAddressTxt->setEnabled(ui->lanEnableBtn->isChecked());
ui->ipAddressTxt->setText(udpPrefs.ipAddress); ui->ipAddressTxt->setText(udpPrefs.ipAddress);
udpPrefs.controlLANPort = settings->value("ControlLANPort", udpDefPrefs.controlLANPort).toInt(); udpPrefs.controlLANPort = settings->value("ControlLANPort", udpDefPrefs.controlLANPort).toInt();
ui->controlPortTxt->setEnabled(ui->lanEnableBtn->isChecked()); ui->controlPortTxt->setEnabled(ui->lanEnableBtn->isChecked());
ui->controlPortTxt->setText(QString("%1").arg(udpPrefs.controlLANPort)); ui->controlPortTxt->setText(QString("%1").arg(udpPrefs.controlLANPort));
udpPrefs.username = settings->value("Username", udpDefPrefs.username).toString(); udpPrefs.username = settings->value("Username", udpDefPrefs.username).toString();
ui->usernameTxt->setEnabled(ui->lanEnableBtn->isChecked()); ui->usernameTxt->setEnabled(ui->lanEnableBtn->isChecked());
ui->usernameTxt->setText(QString("%1").arg(udpPrefs.username)); ui->usernameTxt->setText(QString("%1").arg(udpPrefs.username));
udpPrefs.password = settings->value("Password", udpDefPrefs.password).toString(); udpPrefs.password = settings->value("Password", udpDefPrefs.password).toString();
ui->passwordTxt->setEnabled(ui->lanEnableBtn->isChecked()); ui->passwordTxt->setEnabled(ui->lanEnableBtn->isChecked());
ui->passwordTxt->setText(QString("%1").arg(udpPrefs.password)); ui->passwordTxt->setText(QString("%1").arg(udpPrefs.password));
@ -1611,6 +1638,70 @@ void wfmain::loadSettings()
serverConfig.users.append(user); serverConfig.users.append(user);
} }
ui->serverEnableCheckbox->setChecked(serverConfig.enabled);
ui->serverControlPortText->setText(QString::number(serverConfig.controlPort));
ui->serverCivPortText->setText(QString::number(serverConfig.civPort));
ui->serverAudioPortText->setText(QString::number(serverConfig.audioPort));
serverRxSetup.isinput = true;
serverTxSetup.isinput = false;
ui->serverRXAudioInputCombo->blockSignals(true);
serverRxSetup.name = settings->value("ServerAudioInput", "").toString();
qInfo(logGui()) << "Got Server Audio Input: " << serverRxSetup.name;
int serverAudioInputIndex = ui->serverRXAudioInputCombo->findText(serverRxSetup.name);
if (serverAudioInputIndex != -1) {
ui->serverRXAudioInputCombo->setCurrentIndex(serverAudioInputIndex);
#if defined(RTAUDIO)
serverRxSetup.port = ui->serverRXAudioInputCombo->itemData(serverAudioInputIndex).toInt();
#elif defined(PORTAUDIO)
serverRxSetup.port = ui->audioOutputCombo->itemData(serverAudioInputIndex).toInt();
#else
QVariant v = ui->serverRXAudioInputCombo->currentData();
serverRxSetup.port = v.value<QAudioDeviceInfo>();
#endif
}
ui->serverRXAudioInputCombo->blockSignals(false);
serverRxSetup.resampleQuality = settings->value("ResampleQuality", "4").toInt();
serverRxSetup.resampleQuality = rxSetup.resampleQuality;
ui->serverTXAudioOutputCombo->blockSignals(true);
serverTxSetup.name = settings->value("ServerAudioOutput", "").toString();
qInfo(logGui()) << "Got Server Audio Output: " << serverTxSetup.name;
int serverAudioOutputIndex = ui->serverTXAudioOutputCombo->findText(serverTxSetup.name);
if (serverAudioOutputIndex != -1) {
ui->serverTXAudioOutputCombo->setCurrentIndex(serverAudioOutputIndex);
#if defined(RTAUDIO)
serverTxSetup.port = ui->serverTXAudioOutputCombo->itemData(serverAudioOutputIndex).toInt();
#elif defined(PORTAUDIO)
serverTxSetup.port = ui->serverTXAudioOutputCombo->itemData(serverAudioOutputIndex).toInt();
#else
QVariant v = ui->serverTXAudioOutputCombo->currentData();
serverRxSetup.port = v.value<QAudioDeviceInfo>();
#endif
}
ui->serverTXAudioOutputCombo->blockSignals(false);
serverTxSetup.resampleQuality = settings->value("ResampleQuality", "4").toInt();
serverTxSetup.resampleQuality = rxSetup.resampleQuality;
int row = 0;
ui->serverUsersTable->setRowCount(0);
foreach(SERVERUSER user, serverConfig.users)
{
if (user.username != "" && user.password != "")
{
serverAddUserLine(user.username, user.password, user.userType);
row++;
}
}
if (row == 0) {
serverAddUserLine("", "", 0);
}
settings->endGroup(); settings->endGroup();
// Memory channels // Memory channels
@ -1630,7 +1721,7 @@ void wfmain::loadSettings()
// Also annoying that the preference groups are not written in // Also annoying that the preference groups are not written in
// the order they are specified here. // the order they are specified here.
for(int i=0; i < size; i++) for (int i = 0; i < size; i++)
{ {
settings->setArrayIndex(i); settings->setArrayIndex(i);
chan = settings->value("chan", 0).toInt(); chan = settings->value("chan", 0).toInt();
@ -1638,7 +1729,7 @@ void wfmain::loadSettings()
mode = settings->value("mode", 0).toInt(); mode = settings->value("mode", 0).toInt();
isSet = settings->value("isSet", false).toBool(); isSet = settings->value("isSet", false).toBool();
if(isSet) if (isSet)
{ {
mem.setPreset(chan, freq, (mode_kind)mode); mem.setPreset(chan, freq, (mode_kind)mode);
} }
@ -1647,10 +1738,140 @@ void wfmain::loadSettings()
settings->endArray(); settings->endArray();
settings->endGroup(); settings->endGroup();
emit sendServerConfig(serverConfig); }
void wfmain::serverAddUserLine(const QString& user, const QString& pass, const int& type)
{
ui->serverUsersTable->blockSignals(true);
ui->serverUsersTable->insertRow(ui->serverUsersTable->rowCount());
ui->serverUsersTable->setItem(ui->serverUsersTable->rowCount() - 1, 0, new QTableWidgetItem(user));
ui->serverUsersTable->setItem(ui->serverUsersTable->rowCount() - 1, 1, new QTableWidgetItem());
ui->serverUsersTable->setItem(ui->serverUsersTable->rowCount() - 1, 2, new QTableWidgetItem());
QLineEdit* password = new QLineEdit();
password->setProperty("row", (int)ui->serverUsersTable->rowCount() - 1);
password->setEchoMode(QLineEdit::PasswordEchoOnEdit);
password->setText(pass);
connect(password, SIGNAL(editingFinished()), this, SLOT(onServerPasswordChanged()));
ui->serverUsersTable->setCellWidget(ui->serverUsersTable->rowCount() - 1, 1, password);
QComboBox* comboBox = new QComboBox();
comboBox->insertItems(0, { "Full User","Full with no TX","Monitor only" });
comboBox->setCurrentIndex(type);
ui->serverUsersTable->setCellWidget(ui->serverUsersTable->rowCount() - 1, 2, comboBox);
ui->serverUsersTable->blockSignals(false);
} }
void wfmain::onServerPasswordChanged()
{
int row = sender()->property("row").toInt();
QLineEdit* password = (QLineEdit*)ui->serverUsersTable->cellWidget(row, 1);
QByteArray pass;
passcode(password->text(), pass);
password->setText(pass);
qInfo() << "password row" << row << "changed";
serverConfig.users.clear();
for (int rows = 0; rows < ui->serverUsersTable->model()->rowCount(); rows++)
{
if (ui->serverUsersTable->item(rows, 0) != NULL)
{
SERVERUSER user;
user.username = ui->serverUsersTable->item(rows, 0)->text();
QLineEdit* password = (QLineEdit*)ui->serverUsersTable->cellWidget(rows, 1);
user.password = password->text();
QComboBox* comboBox = (QComboBox*)ui->serverUsersTable->cellWidget(rows, 2);
user.userType = comboBox->currentIndex();
serverConfig.users.append(user);
}
else {
ui->serverUsersTable->removeRow(rows);
}
}
}
void wfmain::on_serverUsersTable_cellClicked(int row, int col)
{
qInfo() << "Clicked on " << row << "," << col;
if (row == ui->serverUsersTable->model()->rowCount() - 1 && ui->serverUsersTable->item(row, 0) != NULL) {
serverAddUserLine("", "", 0);
}
}
void wfmain::on_serverEnableCheckbox_clicked(bool checked)
{
ui->serverSetupGroup->setEnabled(checked);
serverConfig.enabled = checked;
setServerToPrefs();
}
void wfmain::on_serverControlPortText_textChanged(QString text)
{
serverConfig.controlPort = ui->serverControlPortText->text().toInt();
}
void wfmain::on_serverCivPortText_textChanged(QString text)
{
serverConfig.civPort = ui->serverCivPortText->text().toInt();
}
void wfmain::on_serverAudioPortText_textChanged(QString text)
{
serverConfig.audioPort = ui->serverAudioPortText->text().toInt();
}
void wfmain::on_serverRXAudioInputCombo_currentIndexChanged(int value)
{
#if defined(RTAUDIO)
serverRxSetup.port = ui->serverRXAudioInputCombo->itemData(value).toInt();
#elif defined(PORTAUDIO)
serverRxSetup.port = ui->serverRXAudioInputCombo->itemData(value).toInt();
#else
QVariant v = ui->serverRXAudioInputCombo->itemData(value);
serverRxSetup.port = v.value<QAudioDeviceInfo>();
#endif
serverRxSetup.name = ui->serverRXAudioInputCombo->itemText(value);
qDebug(logGui()) << "Changed default server audio input to:" << serverRxSetup.name;
}
void wfmain::on_serverTXAudioOutputCombo_currentIndexChanged(int value)
{
#if defined(RTAUDIO)
serverTxSetup.port = ui->serverTXAudioOutputCombo->itemData(value).toInt();
#elif defined(PORTAUDIO)
serverTxSetup.port = ui->serverTXAudioOutputCombo->itemData(value).toInt();
#else
QVariant v = ui->serverTXAudioOutputCombo->itemData(value);
serverTxSetup.port = v.value<QAudioDeviceInfo>();
#endif
serverTxSetup.name = ui->serverTXAudioOutputCombo->itemText(value);
qDebug(logGui()) << "Changed default server audio output to:" << serverTxSetup.name;
}
void wfmain::on_serverUsersTable_cellChanged(int row, int column)
{
qInfo() << "Cell Changed:" << row << "," << column;
serverConfig.users.clear();
for (int rows = 0; rows < ui->serverUsersTable->model()->rowCount(); rows++)
{
if (ui->serverUsersTable->item(rows, 0) != NULL)
{
SERVERUSER user;
user.username = ui->serverUsersTable->item(rows, 0)->text();
QLineEdit* password = (QLineEdit*)ui->serverUsersTable->cellWidget(rows, 1);
user.password = password->text();
QComboBox* comboBox = (QComboBox*)ui->serverUsersTable->cellWidget(rows, 2);
user.userType = comboBox->currentIndex();
serverConfig.users.append(user);
}
else {
ui->serverUsersTable->removeRow(rows);
}
}
}
void wfmain::saveSettings() void wfmain::saveSettings()
@ -1681,6 +1902,7 @@ void wfmain::saveSettings()
settings->beginGroup("Radio"); settings->beginGroup("Radio");
settings->setValue("RigCIVuInt", prefs.radioCIVAddr); settings->setValue("RigCIVuInt", prefs.radioCIVAddr);
settings->setValue("CIVisRadioModel", prefs.CIVisRadioModel); settings->setValue("CIVisRadioModel", prefs.CIVisRadioModel);
settings->setValue("ForceRTSasPTT", prefs.forceRTSasPTT);
settings->setValue("SerialPortRadio", prefs.serialPortRadio); settings->setValue("SerialPortRadio", prefs.serialPortRadio);
settings->setValue("SerialPortBaud", prefs.serialPortBaud); settings->setValue("SerialPortBaud", prefs.serialPortBaud);
settings->setValue("VirtualSerialPort", prefs.virtualSerialPort); settings->setValue("VirtualSerialPort", prefs.virtualSerialPort);
@ -1786,6 +2008,10 @@ void wfmain::saveSettings()
settings->setValue("ServerCivPort", serverConfig.civPort); settings->setValue("ServerCivPort", serverConfig.civPort);
settings->setValue("ServerAudioPort", serverConfig.audioPort); settings->setValue("ServerAudioPort", serverConfig.audioPort);
settings->setValue("ServerNumUsers", serverConfig.users.count()); settings->setValue("ServerNumUsers", serverConfig.users.count());
settings->setValue("ServerAudioOutput", serverTxSetup.name);
settings->setValue("ServerAudioInput", serverRxSetup.name);
for (int f = 0; f < serverConfig.users.count(); f++) for (int f = 0; f < serverConfig.users.count(); f++)
{ {
settings->setValue("ServerUsername_" + QString::number(f), serverConfig.users[f].username); settings->setValue("ServerUsername_" + QString::number(f), serverConfig.users[f].username);
@ -1793,6 +2019,8 @@ void wfmain::saveSettings()
settings->setValue("ServerUserType_" + QString::number(f), serverConfig.users[f].userType); settings->setValue("ServerUserType_" + QString::number(f), serverConfig.users[f].userType);
} }
qInfo() << "Server config stored";
settings->endGroup(); settings->endGroup();
@ -3143,6 +3371,10 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
ui->tuneEnableChk->setEnabled(rigCaps.hasATU); ui->tuneEnableChk->setEnabled(rigCaps.hasATU);
ui->tuneNowBtn->setEnabled(rigCaps.hasATU); ui->tuneNowBtn->setEnabled(rigCaps.hasATU);
ui->useRTSforPTTchk->blockSignals(true);
ui->useRTSforPTTchk->setChecked(rigCaps.useRTSforPTT);
ui->useRTSforPTTchk->blockSignals(false);
ui->connectBtn->setText("Disconnect"); // We must be connected now. ui->connectBtn->setText("Disconnect"); // We must be connected now.
prepareWf(ui->wfLengthSlider->value()); prepareWf(ui->wfLengthSlider->value());
if(usingLAN) if(usingLAN)
@ -4345,9 +4577,10 @@ void wfmain::on_serialEnableBtn_clicked(bool checked)
ui->txLatencySlider->setEnabled(!checked); ui->txLatencySlider->setEnabled(!checked);
ui->rxLatencyValue->setEnabled(!checked); ui->rxLatencyValue->setEnabled(!checked);
ui->txLatencyValue->setEnabled(!checked); ui->txLatencyValue->setEnabled(!checked);
ui->audioOutputCombo->setEnabled(!checked);
ui->audioInputCombo->setEnabled(!checked);
ui->baudRateCombo->setEnabled(checked); ui->baudRateCombo->setEnabled(checked);
ui->serialDeviceListCombo->setEnabled(checked); ui->serialDeviceListCombo->setEnabled(checked);
//ui->udpServerSetupBtn->setEnabled(true);
} }
void wfmain::on_lanEnableBtn_clicked(bool checked) void wfmain::on_lanEnableBtn_clicked(bool checked)
@ -4358,9 +4591,17 @@ void wfmain::on_lanEnableBtn_clicked(bool checked)
ui->controlPortTxt->setEnabled(checked); ui->controlPortTxt->setEnabled(checked);
ui->usernameTxt->setEnabled(checked); ui->usernameTxt->setEnabled(checked);
ui->passwordTxt->setEnabled(checked); ui->passwordTxt->setEnabled(checked);
ui->audioRXCodecCombo->setEnabled(checked);
ui->audioTXCodecCombo->setEnabled(checked);
ui->audioSampleRateCombo->setEnabled(checked);
ui->rxLatencySlider->setEnabled(checked);
ui->txLatencySlider->setEnabled(checked);
ui->rxLatencyValue->setEnabled(checked);
ui->txLatencyValue->setEnabled(checked);
ui->audioOutputCombo->setEnabled(checked);
ui->audioInputCombo->setEnabled(checked);
ui->baudRateCombo->setEnabled(!checked); ui->baudRateCombo->setEnabled(!checked);
ui->serialDeviceListCombo->setEnabled(!checked); ui->serialDeviceListCombo->setEnabled(!checked);
//ui->udpServerSetupBtn->setEnabled(false);
if(checked) if(checked)
{ {
showStatusBarText("After filling in values, press Save Settings."); showStatusBarText("After filling in values, press Save Settings.");
@ -4477,10 +4718,6 @@ void wfmain::on_connectBtn_clicked()
} }
} }
void wfmain::on_udpServerSetupBtn_clicked()
{
srv->show();
}
void wfmain::on_sqlSlider_valueChanged(int value) void wfmain::on_sqlSlider_valueChanged(int value)
{ {
issueCmd(cmdSetSql, (unsigned char)value); issueCmd(cmdSetSql, (unsigned char)value);
@ -4581,8 +4818,15 @@ void wfmain::setRadioTimeDatePrep()
if(!waitingToSetTimeDate) if(!waitingToSetTimeDate)
{ {
// 1: Find the current time and date // 1: Find the current time and date
QDateTime now = QDateTime::currentDateTime(); QDateTime now;
now.setTime(QTime::currentTime()); if(ui->useUTCChk->isChecked())
{
now = QDateTime::currentDateTimeUtc();
now.setTime(QTime::currentTime());
} else {
now = QDateTime::currentDateTime();
now.setTime(QTime::currentTime());
}
int second = now.time().second(); int second = now.time().second();
@ -4829,22 +5073,6 @@ void wfmain::receiveSpectrumRefLevel(int level)
changeSliderQuietly(ui->scopeRefLevelSlider, level); changeSliderQuietly(ui->scopeRefLevelSlider, level);
} }
// Slot to send/receive server config.
// If store is true then write to config otherwise send current config by signal
void wfmain::serverConfigRequested(SERVERCONFIG conf, bool store)
{
if (!store) {
emit sendServerConfig(serverConfig);
}
else {
// Store config in file!
qInfo(logSystem()) << "Storing server config";
serverConfig = conf;
}
}
void wfmain::on_modInputCombo_activated(int index) void wfmain::on_modInputCombo_activated(int index)
{ {
emit setModInput( (rigInput)ui->modInputCombo->currentData().toInt(), false ); emit setModInput( (rigInput)ui->modInputCombo->currentData().toInt(), false );
@ -5353,6 +5581,7 @@ void wfmain::on_rigCIVaddrHexLine_editingFinished()
} }
} }
void wfmain::on_baudRateCombo_activated(int index) void wfmain::on_baudRateCombo_activated(int index)
{ {
bool ok = false; bool ok = false;
@ -5366,6 +5595,12 @@ void wfmain::on_baudRateCombo_activated(int index)
(void)index; (void)index;
} }
void wfmain::on_useRTSforPTTchk_clicked(bool checked)
{
emit setRTSforPTT(checked);
prefs.forceRTSasPTT = checked;
}
void wfmain::on_wfLengthSlider_valueChanged(int value) void wfmain::on_wfLengthSlider_valueChanged(int value)
{ {
prefs.wflength = (unsigned int)(value); prefs.wflength = (unsigned int)(value);
@ -5483,28 +5718,8 @@ void wfmain::on_enableRigctldChk_clicked(bool checked)
connect(this, SIGNAL(sendRigCaps(rigCapabilities)), rigCtl, SLOT(receiveRigCaps(rigCapabilities))); connect(this, SIGNAL(sendRigCaps(rigCapabilities)), rigCtl, SLOT(receiveRigCaps(rigCapabilities)));
if (rig != Q_NULLPTR) { if (rig != Q_NULLPTR) {
// We are already connected to a rig. // We are already connected to a rig.
connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*))); connect(rig, SIGNAL(stateInfo(rigstate*)), rigCtl, SLOT(receiveStateInfo(rigstate*)));
connect(rigCtl, SIGNAL(setFrequency(unsigned char, freqt)), rig, SLOT(setFrequency(unsigned char, freqt))); connect(rigCtl, SIGNAL(stateUpdated()), rig, SLOT(stateUpdated()));
connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char)));
connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char)));
connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));
connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn()));
connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff()));
connect(rigCtl, SIGNAL(setAttenuator(unsigned char)), rig, SLOT(setAttenuator(unsigned char)));
connect(rigCtl, SIGNAL(setPreamp(unsigned char)), rig, SLOT(setPreamp(unsigned char)));
connect(rigCtl, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
// Levels: Set:
connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));
connect(rigCtl, SIGNAL(setSql(unsigned char)), rig, SLOT(setSquelch(unsigned char)));
connect(rigCtl, SIGNAL(setTxPower(unsigned char)), rig, SLOT(setTxPower(unsigned char)));
connect(rigCtl, SIGNAL(setMicGain(unsigned char)), rig, SLOT(setMicGain(unsigned char)));
connect(rigCtl, SIGNAL(setMonitorLevel(unsigned char)), rig, SLOT(setMonitorLevel(unsigned char)));
connect(rigCtl, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int)));
emit sendRigCaps(rigCaps); emit sendRigCaps(rigCaps);
emit requestRigState(); emit requestRigState();
@ -5534,6 +5749,17 @@ void wfmain::on_useCIVasRigIDChk_clicked(bool checked)
prefs.CIVisRadioModel = checked; prefs.CIVisRadioModel = checked;
} }
void wfmain::receiveStateInfo(rigstate* state)
{
qInfo("Setting rig state for wfmain");
rigState = state;
}
void wfmain::on_setClockBtn_clicked()
{
setRadioTimeDatePrep();
}
// --- DEBUG FUNCTION --- // --- DEBUG FUNCTION ---
void wfmain::on_debugBtn_clicked() void wfmain::on_debugBtn_clicked()
{ {

Wyświetl plik

@ -14,6 +14,7 @@
#include "logcategories.h" #include "logcategories.h"
#include "commhandler.h" #include "commhandler.h"
#include "rigcommander.h" #include "rigcommander.h"
#include "rigstate.h"
#include "freqmemory.h" #include "freqmemory.h"
#include "rigidentities.h" #include "rigidentities.h"
#include "repeaterattributes.h" #include "repeaterattributes.h"
@ -22,7 +23,6 @@
#include "repeatersetup.h" #include "repeatersetup.h"
#include "satellitesetup.h" #include "satellitesetup.h"
#include "transceiveradjustments.h" #include "transceiveradjustments.h"
#include "udpserversetup.h"
#include "udpserver.h" #include "udpserver.h"
#include "qledlabel.h" #include "qledlabel.h"
#include "rigctld.h" #include "rigctld.h"
@ -52,6 +52,7 @@ signals:
// Basic to rig: // Basic to rig:
void setCIVAddr(unsigned char newRigCIVAddr); void setCIVAddr(unsigned char newRigCIVAddr);
void setRigID(unsigned char rigID); void setRigID(unsigned char rigID);
void setRTSforPTT(bool enabled);
// Power // Power
void sendPowerOn(); void sendPowerOn();
@ -162,9 +163,9 @@ signals:
void sendCloseComm(); void sendCloseComm();
void sendChangeLatency(quint16 latency); void sendChangeLatency(quint16 latency);
void initServer(); void initServer();
void sendServerConfig(SERVERCONFIG conf);
void sendRigCaps(rigCapabilities caps); void sendRigCaps(rigCapabilities caps);
void requestRigState(); void requestRigState();
void stateUpdated();
private slots: private slots:
void updateSizes(int tabIndex); void updateSizes(int tabIndex);
@ -266,7 +267,6 @@ private slots:
void handlePlotScroll(QWheelEvent *); void handlePlotScroll(QWheelEvent *);
void sendRadioCommandLoop(); void sendRadioCommandLoop();
void showStatusBarText(QString text); void showStatusBarText(QString text);
void serverConfigRequested(SERVERCONFIG conf, bool store);
void receiveBaudRate(quint32 baudrate); void receiveBaudRate(quint32 baudrate);
void setRadioTimeDateSend(); void setRadioTimeDateSend();
@ -409,7 +409,6 @@ private slots:
void on_dataModeBtn_toggled(bool checked); void on_dataModeBtn_toggled(bool checked);
void on_udpServerSetupBtn_clicked();
void on_transmitBtn_clicked(); void on_transmitBtn_clicked();
@ -501,12 +500,34 @@ private slots:
void on_useCIVasRigIDChk_clicked(bool checked); void on_useCIVasRigIDChk_clicked(bool checked);
void receiveStateInfo(rigstate* state);
void on_settingsList_currentRowChanged(int currentRow);
void on_setClockBtn_clicked();
void on_serverEnableCheckbox_clicked(bool checked);
void on_serverUsersTable_cellClicked(int row, int col);
void on_serverControlPortText_textChanged(QString text);
void on_serverCivPortText_textChanged(QString text);
void on_serverAudioPortText_textChanged(QString text);
void on_serverTXAudioOutputCombo_currentIndexChanged(int value);
void on_serverRXAudioInputCombo_currentIndexChanged(int value);
void onServerPasswordChanged();
void on_serverUsersTable_cellChanged(int row, int column);
void on_useRTSforPTTchk_clicked(bool checked);
private: private:
Ui::wfmain *ui; Ui::wfmain *ui;
void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event);
QSettings *settings=Q_NULLPTR; QSettings *settings=Q_NULLPTR;
void loadSettings(); void loadSettings();
void saveSettings(); void saveSettings();
void createSettingsListItems();
void connectSettingsList();
QCustomPlot *plot; // line plot QCustomPlot *plot; // line plot
QCustomPlot *wf; // waterfall image QCustomPlot *wf; // waterfall image
QCPItemLine * freqIndicatorLine; QCPItemLine * freqIndicatorLine;
@ -718,6 +739,7 @@ private:
QString stylesheetPath; QString stylesheetPath;
unsigned char radioCIVAddr; unsigned char radioCIVAddr;
bool CIVisRadioModel; bool CIVisRadioModel;
bool forceRTSasPTT;
QString serialPortRadio; QString serialPortRadio;
quint32 serialPortBaud; quint32 serialPortBaud;
bool enablePTT; bool enablePTT;
@ -744,6 +766,9 @@ private:
audioSetup rxSetup; audioSetup rxSetup;
audioSetup txSetup; audioSetup txSetup;
audioSetup serverRxSetup;
audioSetup serverTxSetup;
colors defaultColors; colors defaultColors;
void setDefaultColors(); // populate with default values void setDefaultColors(); // populate with default values
@ -812,7 +837,6 @@ private:
repeaterSetup *rpt; repeaterSetup *rpt;
satelliteSetup *sat; satelliteSetup *sat;
transceiverAdjustments *trxadj; transceiverAdjustments *trxadj;
udpServerSetup *srv;
aboutbox *abtBox; aboutbox *abtBox;
@ -842,16 +866,18 @@ private:
unsigned int tsWfScrollHz; unsigned int tsWfScrollHz;
unsigned int tsKnobHz; unsigned int tsKnobHz;
rigstate* rigState = Q_NULLPTR;
QMediaDevices mediaDevices; QMediaDevices mediaDevices;
SERVERCONFIG serverConfig; SERVERCONFIG serverConfig;
void serverAddUserLine(const QString& user, const QString& pass, const int& type);
}; };
Q_DECLARE_METATYPE(struct rigCapabilities) Q_DECLARE_METATYPE(struct rigCapabilities)
Q_DECLARE_METATYPE(struct freqt) Q_DECLARE_METATYPE(struct freqt)
Q_DECLARE_METATYPE(struct mode_info) Q_DECLARE_METATYPE(struct mode_info)
Q_DECLARE_METATYPE(struct udpPreferences) Q_DECLARE_METATYPE(struct udpPreferences)
Q_DECLARE_METATYPE(struct rigStateStruct)
Q_DECLARE_METATYPE(struct audioPacket) Q_DECLARE_METATYPE(struct audioPacket)
Q_DECLARE_METATYPE(struct audioSetup) Q_DECLARE_METATYPE(struct audioSetup)
Q_DECLARE_METATYPE(struct timekind) Q_DECLARE_METATYPE(struct timekind)
@ -859,6 +885,7 @@ Q_DECLARE_METATYPE(struct datekind)
Q_DECLARE_METATYPE(enum rigInput) Q_DECLARE_METATYPE(enum rigInput)
Q_DECLARE_METATYPE(enum meterKind) Q_DECLARE_METATYPE(enum meterKind)
Q_DECLARE_METATYPE(enum spectrumMode) Q_DECLARE_METATYPE(enum spectrumMode)
Q_DECLARE_METATYPE(rigstate*)
#endif // WFMAIN_H #endif // WFMAIN_H

2385
wfmain.ui

Plik diff jest za duży Load Diff

Wyświetl plik

@ -156,7 +156,6 @@ SOURCES += main.cpp\
audiohandler.cpp \ audiohandler.cpp \
calibrationwindow.cpp \ calibrationwindow.cpp \
satellitesetup.cpp \ satellitesetup.cpp \
udpserversetup.cpp \
udpserver.cpp \ udpserver.cpp \
meter.cpp \ meter.cpp \
qledlabel.cpp \ qledlabel.cpp \
@ -178,7 +177,6 @@ HEADERS += wfmain.h \
audiohandler.h \ audiohandler.h \
calibrationwindow.h \ calibrationwindow.h \
satellitesetup.h \ satellitesetup.h \
udpserversetup.h \
udpserver.h \ udpserver.h \
packettypes.h \ packettypes.h \
meter.h \ meter.h \

Wyświetl plik

@ -7,18 +7,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wfview", "wfview.vcxproj",
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86 Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Debug|x64.ActiveCfg = Debug|x64
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Debug|x64.Build.0 = Debug|x64
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Debug|x86.ActiveCfg = Debug|Win32 {326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Debug|x86.ActiveCfg = Debug|Win32
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Debug|x86.Build.0 = Debug|Win32 {326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Debug|x86.Build.0 = Debug|Win32
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Release|x64.ActiveCfg = Release|x64
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Release|x64.Build.0 = Release|x64
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Release|x86.ActiveCfg = Release|Win32 {326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Release|x86.ActiveCfg = Release|Win32
{326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Release|x86.Build.0 = Release|Win32 {326108AD-FA9D-3AAF-8D3E-062C4DDC34E2}.Release|x86.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection

Wyświetl plik

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|x64"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>x64</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>x64</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
@ -16,9 +16,10 @@
<Keyword>QtVS_v304</Keyword> <Keyword>QtVS_v304</Keyword>
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion> <WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.19041.0</WindowsTargetPlatformMinVersion> <WindowsTargetPlatformMinVersion>10.0.19041.0</WindowsTargetPlatformMinVersion>
<QtMsBuild Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild></PropertyGroup> <QtMsBuild Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<OutputDirectory>release\</OutputDirectory> <OutputDirectory>release\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage> <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
@ -27,7 +28,7 @@
<IntermediateDirectory>release\</IntermediateDirectory> <IntermediateDirectory>release\</IntermediateDirectory>
<PrimaryOutput>wfview</PrimaryOutput> <PrimaryOutput>wfview</PrimaryOutput>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<OutputDirectory>debug\</OutputDirectory> <OutputDirectory>debug\</OutputDirectory>
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage> <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
@ -36,42 +37,71 @@
<IntermediateDirectory>debug\</IntermediateDirectory> <IntermediateDirectory>debug\</IntermediateDirectory>
<PrimaryOutput>wfview</PrimaryOutput> <PrimaryOutput>wfview</PrimaryOutput>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /><Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')"><Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." /></Target> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
</Target>
<ImportGroup Label="ExtensionSettings" /> <ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /><ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')"><Import Project="$(QtMsBuild)\qt_defaults.props" /></ImportGroup><PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"><OutDir>debug\</OutDir><IntDir>debug\</IntDir><TargetName>wfview</TargetName><IgnoreImportLibrary>true</IgnoreImportLibrary><PreLinkEventUseInBuild>true</PreLinkEventUseInBuild></PropertyGroup><PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"><OutDir>release\</OutDir><IntDir>release\</IntDir><TargetName>wfview</TargetName><IgnoreImportLibrary>true</IgnoreImportLibrary><LinkIncremental>false</LinkIncremental><PreLinkEventUseInBuild>true</PreLinkEventUseInBuild></PropertyGroup><PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"><QtInstall>msvc2019_64_v62</QtInstall><QtModules>core;network;gui;multimedia;widgets;serialport;printsupport</QtModules></PropertyGroup><PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"><QtInstall>msvc2019_64_v62</QtInstall><QtModules>core;network;gui;multimedia;widgets;serialport;printsupport</QtModules></PropertyGroup><ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')"><Import Project="$(QtMsBuild)\qt.props" /></ImportGroup> <PropertyGroup Label="UserMacros" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <Import Project="$(QtMsBuild)\qt_defaults.props" />
</ImportGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>debug\</OutDir>
<IntDir>debug\</IntDir>
<TargetName>wfview</TargetName>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>release\</OutDir>
<IntDir>release\</IntDir>
<TargetName>wfview</TargetName>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<QtInstall>msvc2019</QtInstall>
<QtModules>core;network;gui;multimedia;widgets;serialport;printsupport</QtModules>
</PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<QtInstall>msvc2019</QtInstall>
<QtModules>core;network;gui;multimedia;widgets;serialport;printsupport</QtModules>
</PropertyGroup>
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
<Import Project="$(QtMsBuild)\qt.props" />
</ImportGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>.;..\qcustomplot;..\opus\include;resampler;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>.;..\qcustomplot;..\opus\include;resampler;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -utf-8 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>release\</AssemblerListingLocation> <AssemblerListingLocation>release\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation> <BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>None</DebugInformationFormat> <DebugInformationFormat>None</DebugInformationFormat>
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<LanguageStandard>stdcpp17</LanguageStandard>
<ObjectFileName>release\</ObjectFileName> <ObjectFileName>release\</ObjectFileName>
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_USE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="395469d";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="62771f6";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile> <PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName> <ProgramDataBaseFileName>
</ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<MultiProcessorCompilation>true</MultiProcessorCompilation></ClCompile> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link> <Link>
<AdditionalDependencies>..\qcustomplot\qcustomplot2.lib;..\opus\win32\VS2015\x64\Release\opus.lib;$(QTDIR)\lib\Qt6Multimedia.lib;$(QTDIR)\lib\Qt6PrintSupport.lib;$(QTDIR)\lib\Qt6Widgets.lib;$(QTDIR)\lib\Qt6Gui.lib;$(QTDIR)\lib\Qt6SerialPort.lib;$(QTDIR)\lib\Qt6Network.lib;$(QTDIR)\lib\Qt6Core.lib;$(QTDIR)\lib\Qt6EntryPoint.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>..\opus\win32\VS2015\Win32\Release\opus.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\opus\win32\VS2015\x64\Release;..\qcustomplot;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\opus\win32\VS2015\Win32\Release;C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention> <DataExecutionPrevention>true</DataExecutionPrevention>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<GenerateDebugInformation>false</GenerateDebugInformation> <GenerateDebugInformation>false</GenerateDebugInformation>
<IgnoreImportLibrary>true</IgnoreImportLibrary> <IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
@ -87,35 +117,50 @@
<WarningLevel>0</WarningLevel> <WarningLevel>0</WarningLevel>
</Midl> </Midl>
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_USE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"395469d\";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;WFVIEW_VERSION="1.2d";QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"62771f6\";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> </ResourceCompile>
<PreLinkEvent> <QtMoc>
<Command>copy /Y ..\qcustomplot\qcustomplot2.dll release</Command> <CompilerFlavor>msvc</CompilerFlavor>
<Message>copy /Y ..\qcustomplot\qcustomplot2.dll release</Message> <Include>./$(Configuration)/moc_predefs.h</Include>
</PreLinkEvent> <ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
<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> <DynamicSource>output</DynamicSource>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <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'">
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>.;..\qcustomplot;..\opus\include;resampler;debug;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>.;..\qcustomplot;..\opus\include;resampler;debug;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -utf-8 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
<AssemblerListingLocation>debug\</AssemblerListingLocation> <AssemblerListingLocation>debug\</AssemblerListingLocation>
<BrowseInformation>false</BrowseInformation> <BrowseInformation>false</BrowseInformation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<LanguageStandard>stdcpp17</LanguageStandard>
<ObjectFileName>debug\</ObjectFileName> <ObjectFileName>debug\</ObjectFileName>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_USE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="395469d";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="62771f6";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile> <PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<MultiProcessorCompilation>true</MultiProcessorCompilation></ClCompile> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link> <Link>
<AdditionalDependencies>..\qcustomplot\qcustomplotd2.lib;..\opus\win32\VS2015\x64\Debug\opus.lib;$(QTDIR)\lib\Qt6Multimediad.lib;$(QTDIR)\lib\Qt6PrintSupportd.lib;$(QTDIR)\lib\Qt6Widgetsd.lib;$(QTDIR)\lib\Qt6Guid.lib;$(QTDIR)\lib\Qt6SerialPortd.lib;$(QTDIR)\lib\Qt6Networkd.lib;$(QTDIR)\lib\Qt6Cored.lib;$(QTDIR)\lib\Qt6EntryPointd.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>..\opus\win32\VS2015\Win32\Debug\opus.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\opus\win32\VS2015\x64\Debug;..\qcustomplot;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\opus\win32\VS2015\Win32\Debug;C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
<DataExecutionPrevention>true</DataExecutionPrevention> <DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -131,13 +176,28 @@
<WarningLevel>0</WarningLevel> <WarningLevel>0</WarningLevel>
</Midl> </Midl>
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_USE_LIBRARY;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"395469d\";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;WFVIEW_VERSION="1.2d";QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"62771f6\";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> </ResourceCompile>
<PreLinkEvent> <QtMoc>
<Command>copy /Y ..\qcustomplot\qcustomplotd2.dll debug</Command> <CompilerFlavor>msvc</CompilerFlavor>
<Message>copy /Y ..\qcustomplot\qcustomplotd2.dll debug</Message> <Include>./$(Configuration)/moc_predefs.h</Include>
</PreLinkEvent> <ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
<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> <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> <ItemGroup>
<ClCompile Include="aboutbox.cpp" /> <ClCompile Include="aboutbox.cpp" />
<ClCompile Include="audiohandler.cpp" /> <ClCompile Include="audiohandler.cpp" />
@ -148,6 +208,7 @@
<ClCompile Include="main.cpp" /> <ClCompile Include="main.cpp" />
<ClCompile Include="meter.cpp" /> <ClCompile Include="meter.cpp" />
<ClCompile Include="pttyhandler.cpp" /> <ClCompile Include="pttyhandler.cpp" />
<ClCompile Include="..\qcustomplot\qcustomplot.cpp" />
<ClCompile Include="qledlabel.cpp" /> <ClCompile Include="qledlabel.cpp" />
<ClCompile Include="repeatersetup.cpp" /> <ClCompile Include="repeatersetup.cpp" />
<ClCompile Include="resampler\resample.c" /> <ClCompile Include="resampler\resample.c" />
@ -164,315 +225,84 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<QtMoc Include="aboutbox.h"> <QtMoc Include="aboutbox.h">
</QtMoc> </QtMoc>
<ClInclude Include="resampler\arch.h" /> <ClInclude Include="resampler\arch.h" />
<QtMoc Include="audiohandler.h"> <QtMoc Include="audiohandler.h">
</QtMoc> </QtMoc>
<ClInclude Include="audiotaper.h" /> <ClInclude Include="audiotaper.h" />
<QtMoc Include="calibrationwindow.h"> <QtMoc Include="calibrationwindow.h">
</QtMoc> </QtMoc>
<QtMoc Include="commhandler.h"> <QtMoc Include="commhandler.h">
</QtMoc> </QtMoc>
<ClInclude Include="freqmemory.h" /> <ClInclude Include="freqmemory.h" />
<ClInclude Include="logcategories.h" /> <ClInclude Include="logcategories.h" />
<QtMoc Include="meter.h"> <QtMoc Include="meter.h">
</QtMoc> </QtMoc>
<ClInclude Include="packettypes.h" /> <ClInclude Include="packettypes.h" />
<QtMoc Include="pttyhandler.h"> <QtMoc Include="pttyhandler.h">
</QtMoc>
<QtMoc Include="..\qcustomplot\qcustomplot.h">
</QtMoc> </QtMoc>
<QtMoc Include="qledlabel.h"> <QtMoc Include="qledlabel.h">
</QtMoc> </QtMoc>
<ClInclude Include="repeaterattributes.h" /> <ClInclude Include="repeaterattributes.h" />
<QtMoc Include="repeatersetup.h"> <QtMoc Include="repeatersetup.h">
</QtMoc> </QtMoc>
<ClInclude Include="resampler\resample_sse.h" /> <ClInclude Include="resampler\resample_sse.h" />
<QtMoc Include="rigcommander.h"> <QtMoc Include="rigcommander.h">
</QtMoc> </QtMoc>
<QtMoc Include="rigctld.h"> <QtMoc Include="rigctld.h">
</QtMoc> </QtMoc>
<ClInclude Include="rigidentities.h" /> <ClInclude Include="rigidentities.h" />
<ClInclude Include="rigstate.h" />
<ClInclude Include="ring\ring.h" /> <ClInclude Include="ring\ring.h" />
<QtMoc Include="satellitesetup.h"> <QtMoc Include="satellitesetup.h">
</QtMoc> </QtMoc>
<ClInclude Include="resampler\speex_resampler.h" /> <ClInclude Include="resampler\speex_resampler.h" />
<QtMoc Include="transceiveradjustments.h"> <QtMoc Include="transceiveradjustments.h">
</QtMoc> </QtMoc>
<QtMoc Include="udphandler.h"> <QtMoc Include="udphandler.h">
</QtMoc> </QtMoc>
<QtMoc Include="udpserver.h"> <QtMoc Include="udpserver.h">
</QtMoc> </QtMoc>
<QtMoc Include="udpserversetup.h"> <QtMoc Include="udpserversetup.h">
</QtMoc> </QtMoc>
<ClInclude Include="ulaw.h" /> <ClInclude Include="ulaw.h" />
<QtMoc Include="wfmain.h"> <QtMoc Include="wfmain.h">
</QtMoc> </QtMoc>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<CustomBuild Include="debug\moc_predefs.h.cbt"> <CustomBuild Include="debug\moc_predefs.h.cbt">
<FileType>Document</FileType> <FileType>Document</FileType>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs> <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -faligned-new -Zi -MDd -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;debug\moc_predefs.h</Command> <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -faligned-new -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;debug\moc_predefs.h</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate moc_predefs.h</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generate moc_predefs.h</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">debug\moc_predefs.h;%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\moc_predefs.h;%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="release\moc_predefs.h.cbt"> <CustomBuild Include="release\moc_predefs.h.cbt">
<FileType>Document</FileType> <FileType>Document</FileType>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs> <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -permissive- -Zc:__cplusplus -Zc:externConstexpr -fvisibility=hidden -fvisibility-inlines-hidden -faligned-new -O2 -MD -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;release\moc_predefs.h</Command> <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -fvisibility=hidden -fvisibility-inlines-hidden -faligned-new -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;release\moc_predefs.h</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate moc_predefs.h</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generate moc_predefs.h</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">release\moc_predefs.h;%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\moc_predefs.h;%(Outputs)</Outputs>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</CustomBuild> </CustomBuild>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<QtUic Include="aboutbox.ui"> <QtUic Include="aboutbox.ui">
</QtUic> </QtUic>
<QtUic Include="calibrationwindow.ui"> <QtUic Include="calibrationwindow.ui">
</QtUic> </QtUic>
<QtUic Include="repeatersetup.ui"> <QtUic Include="repeatersetup.ui">
</QtUic> </QtUic>
<QtUic Include="satellitesetup.ui"> <QtUic Include="satellitesetup.ui">
</QtUic> </QtUic>
<QtUic Include="transceiveradjustments.ui"> <QtUic Include="transceiveradjustments.ui">
</QtUic> </QtUic>
<QtUic Include="udpserversetup.ui"> <QtUic Include="udpserversetup.ui">
</QtUic> </QtUic>
<QtUic Include="wfmain.ui"> <QtUic Include="wfmain.ui">
</QtUic> </QtUic>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -506,30 +336,16 @@
<None Include="qdarkstyle\rc\radio_unchecked_disabled.png" /> <None Include="qdarkstyle\rc\radio_unchecked_disabled.png" />
<None Include="qdarkstyle\rc\radio_unchecked_focus.png" /> <None Include="qdarkstyle\rc\radio_unchecked_focus.png" />
<QtRcc Include="resources\resources.qrc"> <QtRcc Include="resources\resources.qrc">
<InitFuncName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">resources</InitFuncName>
<InitFuncName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">resources</InitFuncName>
</QtRcc>
<InitFuncName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">resources</InitFuncName><InitFuncName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">resources</InitFuncName></QtRcc>
<None Include="qdarkstyle\rc\right_arrow.png" /> <None Include="qdarkstyle\rc\right_arrow.png" />
<None Include="qdarkstyle\rc\right_arrow_disabled.png" /> <None Include="qdarkstyle\rc\right_arrow_disabled.png" />
<None Include="qdarkstyle\rc\sizegrip.png" /> <None Include="qdarkstyle\rc\sizegrip.png" />
<QtRcc Include="qdarkstyle\style.qrc"> <QtRcc Include="qdarkstyle\style.qrc">
<InitFuncName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">style</InitFuncName>
<InitFuncName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">style</InitFuncName>
</QtRcc>
<InitFuncName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">style</InitFuncName><InitFuncName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">style</InitFuncName></QtRcc>
<None Include="qdarkstyle\style.qss" /> <None Include="qdarkstyle\style.qss" />
<None Include="qdarkstyle\rc\stylesheet-branch-end.png" /> <None Include="qdarkstyle\rc\stylesheet-branch-end.png" />
<None Include="qdarkstyle\rc\stylesheet-branch-more.png" /> <None Include="qdarkstyle\rc\stylesheet-branch-more.png" />
@ -548,6 +364,9 @@
<ItemGroup> <ItemGroup>
<ResourceCompile Include=".\wfview_resource.rc" /> <ResourceCompile Include=".\wfview_resource.rc" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /><ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')"><Import Project="$(QtMsBuild)\qt.targets" /></ImportGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
<Import Project="$(QtMsBuild)\qt.targets" />
</ImportGroup>
<ImportGroup Label="ExtensionTargets" /> <ImportGroup Label="ExtensionTargets" />
</Project> </Project>

Wyświetl plik

@ -117,9 +117,6 @@
<ClCompile Include="udpserver.cpp"> <ClCompile Include="udpserver.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="udpserversetup.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wfmain.cpp"> <ClCompile Include="wfmain.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -197,9 +194,6 @@
<QtMoc Include="udpserver.h"> <QtMoc Include="udpserver.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</QtMoc> </QtMoc>
<QtMoc Include="udpserversetup.h">
<Filter>Header Files</Filter>
</QtMoc>
<ClInclude Include="ulaw.h"> <ClInclude Include="ulaw.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>

Wyświetl plik

@ -3,16 +3,13 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(PATH)</LocalDebuggerEnvironment> <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(PATH)</LocalDebuggerEnvironment>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(PATH)</LocalDebuggerEnvironment>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(PATH)</LocalDebuggerEnvironment> <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(PATH)</LocalDebuggerEnvironment>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(QTDIR)\bin%3bC:\QT\5.15.2\MSVC2019\bin%3b$(PATH)</LocalDebuggerEnvironment>
</PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<QtLastBackgroundBuild>2021-11-18T12:40:24.8966742Z</QtLastBackgroundBuild> <QtLastBackgroundBuild>2021-11-22T18:24:33.3752914Z</QtLastBackgroundBuild>
</PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<QtLastBackgroundBuild>2021-11-22T18:24:41.6960953Z</QtLastBackgroundBuild>
</PropertyGroup> </PropertyGroup>
</Project> </Project>