kopia lustrzana https://gitlab.com/eliggett/wfview
Convert rigState to use shared pointers
rodzic
6759625c37
commit
edf9f36bf1
|
@ -4789,7 +4789,7 @@ void rigCommander::stateUpdated()
|
||||||
{
|
{
|
||||||
i.value()._updated = false;
|
i.value()._updated = false;
|
||||||
i.value()._valid = true; // Set value to valid as we have requested it (even if we haven't had a response)
|
i.value()._valid = true; // Set value to valid as we have requested it (even if we haven't had a response)
|
||||||
qDebug(logRigCtlD()) << "Got new value:" << i.key() << "=" << i.value()._value;
|
//qDebug(logRigCtlD()) << "Got new value:" << i.key() << "=" << i.value()._value;
|
||||||
switch (i.key()) {
|
switch (i.key()) {
|
||||||
case VFOAFREQ:
|
case VFOAFREQ:
|
||||||
if (i.value()._valid) {
|
if (i.value()._valid) {
|
||||||
|
|
84
rigstate.h
84
rigstate.h
|
@ -10,21 +10,16 @@
|
||||||
|
|
||||||
#include "rigcommander.h"
|
#include "rigcommander.h"
|
||||||
#include "rigidentities.h"
|
#include "rigidentities.h"
|
||||||
|
#include "wfviewtypes.h"
|
||||||
|
|
||||||
// Meters at the end as they are ALWAYS updated from the rig!
|
|
||||||
enum stateTypes { VFOAFREQ, VFOBFREQ, CURRENTVFO, PTT, MODE, FILTER, PASSBAND, DUPLEX, DATAMODE, ANTENNA, RXANTENNA, CTCSS, TSQL, DTCS, CSQL,
|
|
||||||
PREAMP, AGC, ATTENUATOR, MODINPUT, AFGAIN, RFGAIN, SQUELCH, RFPOWER, MICGAIN, COMPLEVEL, MONITORLEVEL, BAL, KEYSPD,
|
|
||||||
VOXGAIN, ANTIVOXGAIN, CWPITCH, NOTCHF, IF, PBTIN, PBTOUT, APF, NR, NB, NBDEPTH, NBWIDTH, RIGINPUT, POWERONOFF, RITVALUE,
|
|
||||||
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,
|
|
||||||
RESUMEFUNC, TBURSTFUNC, TUNERFUNC, LOCKFUNC, SMETER, POWERMETER, SWRMETER, ALCMETER, COMPMETER, VOLTAGEMETER, CURRENTMETER,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
//* std::static_pointer_cast<unsigned char>(data)
|
||||||
struct value {
|
struct value {
|
||||||
quint64 _value=0;
|
|
||||||
bool _valid = false;
|
bool _valid = false;
|
||||||
bool _updated = false;
|
bool _updated = false;
|
||||||
QDateTime _dateUpdated;
|
QDateTime _dateUpdated;
|
||||||
|
std::shared_ptr<void> _value = Q_NULLPTR;
|
||||||
};
|
};
|
||||||
|
|
||||||
class rigstate
|
class rigstate
|
||||||
|
@ -38,9 +33,10 @@ public:
|
||||||
QDateTime whenUpdated(stateTypes s) { return map[s]._dateUpdated; }
|
QDateTime whenUpdated(stateTypes s) { return map[s]._dateUpdated; }
|
||||||
|
|
||||||
void set(stateTypes s, quint64 x, bool u) {
|
void set(stateTypes s, quint64 x, bool u) {
|
||||||
if (x != map[s]._value) {
|
auto d = (std::static_pointer_cast<quint64>(map[s]._value));
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<quint64>(new quint64(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -48,9 +44,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void set(stateTypes s, qint32 x, bool u) {
|
void set(stateTypes s, qint32 x, bool u) {
|
||||||
if (quint64(x) != map[s]._value) {
|
auto d = (std::static_pointer_cast<quint32>(map[s]._value));
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<qint32>(new qint32(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -58,9 +55,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void set(stateTypes s, qint16 x, bool u) {
|
void set(stateTypes s, qint16 x, bool u) {
|
||||||
if (quint64(x) != map[s]._value) {
|
auto d = (std::static_pointer_cast<qint16>(map[s]._value));
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<qint16>(new qint16(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -68,9 +66,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void set(stateTypes s, quint16 x, bool u) {
|
void set(stateTypes s, quint16 x, bool u) {
|
||||||
if (quint64(x) != map[s]._value) {
|
auto d = (std::static_pointer_cast<quint16>(map[s]._value));
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<quint16>(new quint16(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -78,9 +77,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void set(stateTypes s, quint8 x, bool u) {
|
void set(stateTypes s, quint8 x, bool u) {
|
||||||
if (quint64(x) != map[s]._value) {
|
auto d = (std::static_pointer_cast<quint8>(map[s]._value));
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<quint8>(new quint8(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -88,9 +88,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void set(stateTypes s, bool x, bool u) {
|
void set(stateTypes s, bool x, bool u) {
|
||||||
if (quint64(x) != map[s]._value) {
|
auto d = std::static_pointer_cast<bool>(map[s]._value);
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<bool>(new bool(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -98,9 +99,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void set(stateTypes s, duplexMode x, bool u) {
|
void set(stateTypes s, duplexMode x, bool u) {
|
||||||
if (quint64(x) != map[s]._value) {
|
auto d = (std::static_pointer_cast<duplexMode>(map[s]._value));
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<duplexMode>(new duplexMode(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -109,9 +111,10 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void set(stateTypes s, rigInput x, bool u) {
|
void set(stateTypes s, rigInput x, bool u) {
|
||||||
if (quint64(x) != map[s]._value) {
|
auto d = (std::static_pointer_cast<rigInput>(map[s]._value));
|
||||||
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
map[s]._value = quint64(x);
|
map[s]._value = std::shared_ptr<rigInput>(new rigInput(x));
|
||||||
map[s]._valid = true;
|
map[s]._valid = true;
|
||||||
map[s]._updated = u;
|
map[s]._updated = u;
|
||||||
map[s]._dateUpdated = QDateTime::currentDateTime();
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
|
@ -119,15 +122,28 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool getBool(stateTypes s) { return map[s]._value != 0; }
|
void set(stateTypes s, QString x, bool u) {
|
||||||
quint8 getChar(stateTypes s) { return quint8(map[s]._value); }
|
auto d = (std::static_pointer_cast<QString>(map[s]._value));
|
||||||
qint16 getInt16(stateTypes s) { return qint16(map[s]._value); }
|
if (d == Q_NULLPTR || *d != x) {
|
||||||
quint16 getUInt16(stateTypes s) { return quint16(map[s]._value); }
|
_mutex.lock();
|
||||||
qint32 getInt32(stateTypes s) { return qint32(map[s]._value); }
|
map[s]._value = std::shared_ptr<QString>(new QString(x));
|
||||||
quint32 getUInt32(stateTypes s) { return quint32(map[s]._value); }
|
map[s]._valid = true;
|
||||||
quint64 getInt64(stateTypes s) { return map[s]._value; }
|
map[s]._updated = u;
|
||||||
duplexMode getDuplex(stateTypes s) { return duplexMode(map[s]._value); }
|
map[s]._dateUpdated = QDateTime::currentDateTime();
|
||||||
rigInput getInput(stateTypes s) { return rigInput(map[s]._value); }
|
_mutex.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getBool(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<bool>(map[s]._value); else return false; }
|
||||||
|
quint8 getChar(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<quint8>(map[s]._value); else return 0; }
|
||||||
|
qint16 getInt16(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<qint16>(map[s]._value); else return 0;}
|
||||||
|
quint16 getUInt16(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<quint16>(map[s]._value); else return 0;}
|
||||||
|
qint32 getInt32(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<qint32>(map[s]._value); else return 0;}
|
||||||
|
quint32 getUInt32(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<quint32>(map[s]._value); else return 0;}
|
||||||
|
quint64 getInt64(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<qint64>(map[s]._value); else return 0;}
|
||||||
|
duplexMode getDuplex(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<duplexMode>(map[s]._value); else return dmSplitOff;}
|
||||||
|
rigInput getInput(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<rigInput>(map[s]._value); else return inputACC; }
|
||||||
|
QString getString(stateTypes s) { if (map[s]._value != Q_NULLPTR) return *std::static_pointer_cast<QString>(map[s]._value); else return QString(""); }
|
||||||
QMap<stateTypes, value> map;
|
QMap<stateTypes, value> map;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2046,7 +2046,9 @@ void wfmain::loadSettings()
|
||||||
udpPrefs.clientName = settings->value("ClientName", udpDefPrefs.clientName).toString();
|
udpPrefs.clientName = settings->value("ClientName", udpDefPrefs.clientName).toString();
|
||||||
|
|
||||||
udpPrefs.halfDuplex = settings->value("HalfDuplex", udpDefPrefs.halfDuplex).toBool();
|
udpPrefs.halfDuplex = settings->value("HalfDuplex", udpDefPrefs.halfDuplex).toBool();
|
||||||
|
ui->audioDuplexCombo->blockSignals(true);
|
||||||
ui->audioDuplexCombo->setCurrentIndex((int)udpPrefs.halfDuplex);
|
ui->audioDuplexCombo->setCurrentIndex((int)udpPrefs.halfDuplex);
|
||||||
|
ui->audioDuplexCombo->blockSignals(false);
|
||||||
|
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
|
|
||||||
|
@ -8856,3 +8858,4 @@ void wfmain::on_cwButton_clicked()
|
||||||
cw->raise();
|
cw->raise();
|
||||||
cw->activateWindow();
|
cw->activateWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -451,6 +451,7 @@ cmd /c copy /y ..\portaudio\msvc\Win32\Debug\portaudio_x86.dll wfview-debug</Com
|
||||||
<QtMoc Include="cwsender.h" />
|
<QtMoc Include="cwsender.h" />
|
||||||
<ClInclude Include="prefs.h" />
|
<ClInclude Include="prefs.h" />
|
||||||
<ClInclude Include="printhex.h" />
|
<ClInclude Include="printhex.h" />
|
||||||
|
<ClInclude Include="rigstate.h" />
|
||||||
<ClInclude Include="sidebandchooser.h" />
|
<ClInclude Include="sidebandchooser.h" />
|
||||||
<ClInclude Include="wfviewtypes.h" />
|
<ClInclude Include="wfviewtypes.h" />
|
||||||
<QtMoc Include="usbcontroller.h" />
|
<QtMoc Include="usbcontroller.h" />
|
||||||
|
|
|
@ -286,6 +286,9 @@
|
||||||
<ClInclude Include="prefs.h">
|
<ClInclude Include="prefs.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="rigstate.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
||||||
|
|
|
@ -116,6 +116,17 @@ enum cmds {
|
||||||
cmdSetTime, cmdSetDate, cmdSetUTCOffset
|
cmdSetTime, cmdSetDate, cmdSetUTCOffset
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Meters at the end as they are ALWAYS updated from the rig!
|
||||||
|
enum stateTypes {
|
||||||
|
VFOAFREQ, VFOBFREQ, CURRENTVFO, PTT, MODE, FILTER, PASSBAND, DUPLEX, DATAMODE, ANTENNA, RXANTENNA, CTCSS, TSQL, DTCS, CSQL,
|
||||||
|
PREAMP, AGC, ATTENUATOR, MODINPUT, AFGAIN, RFGAIN, SQUELCH, RFPOWER, MICGAIN, COMPLEVEL, MONITORLEVEL, BAL, KEYSPD,
|
||||||
|
VOXGAIN, ANTIVOXGAIN, CWPITCH, NOTCHF, IF, PBTIN, PBTOUT, APF, NR, NB, NBDEPTH, NBWIDTH, RIGINPUT, POWERONOFF, RITVALUE,
|
||||||
|
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,
|
||||||
|
RESUMEFUNC, TBURSTFUNC, TUNERFUNC, LOCKFUNC, SMETER, POWERMETER, SWRMETER, ALCMETER, COMPMETER, VOLTAGEMETER, CURRENTMETER,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct commandtype {
|
struct commandtype {
|
||||||
cmds cmd;
|
cmds cmd;
|
||||||
std::shared_ptr<void> data;
|
std::shared_ptr<void> data;
|
||||||
|
|
Ładowanie…
Reference in New Issue