Move rigCaps to a single pointer across whole app.

creator-widgets
Phil Taylor 2024-03-25 12:42:08 +00:00
rodzic ffeec4925a
commit 235869a501
15 zmienionych plików z 516 dodań i 538 usunięć

Wyświetl plik

@ -13,6 +13,7 @@ bandbuttons::bandbuttons(QWidget *parent) :
this->setWindowTitle("Band Switcher");
this->setObjectName("bandButtons");
queue = cachingQueue::getInstance(this);
connect(queue, SIGNAL(rigCapsUpdated(rigCapabilities*)), this, SLOT(receiveRigCaps(rigCapabilities*)));
}
bandbuttons::~bandbuttons()
@ -25,26 +26,24 @@ int bandbuttons::getBSRNumber()
return ui->bandStkPopdown->currentIndex()+1;
}
void bandbuttons::acceptRigCaps(rigCapabilities rc)
void bandbuttons::receiveRigCaps(rigCapabilities* rc)
{
this->rigCaps = rc;
qDebug(logGui()) << "Accepting new rigcaps into band buttons.";
if(haveRigCaps)
qDebug(logGui()) << "Accepting additional rigcaps into band buttons.";
qDebug(logGui()) << "Bands in this rigcaps: ";
for(size_t i=0; i < rigCaps.bands.size(); i++)
{
qDebug(logGui()) << "band[" << i << "]: " << (unsigned char)rigCaps.bands.at(i).band;
if (rigCaps != Q_NULLPTR) {
qDebug(logGui()) << "Bands in this rigcaps: ";
for(size_t i=0; i < rigCaps->bands.size(); i++)
{
qDebug(logGui()) << "band[" << i << "]: " << (unsigned char)rigCaps->bands.at(i).band;
}
for(size_t i=0; i < 20; i++)
{
qDebug(logGui()) << "bsr[" << i << "]: " << (unsigned char)rigCaps->bsr[i];
}
}
for(size_t i=0; i < 20; i++)
{
qDebug(logGui()) << "bsr[" << i << "]: " << (unsigned char)rigCaps.bsr[i];
}
setUIToRig();
haveRigCaps = true;
}
void bandbuttons::setUIToRig()
@ -76,82 +75,84 @@ void bandbuttons::setUIToRig()
hideButton(ui->band2200mbtn);
hideButton(ui->bandGenbtn);
for (auto &band: rigCaps.bands)
{
switch(band.band)
if (rigCaps != Q_NULLPTR) {
for (auto &band: rigCaps->bands)
{
case(band3cm):
showButton(ui->band3cmbtn);
break;
case(band6cm):
showButton(ui->band6cmbtn);
break;
case(band13cm):
showButton(ui->band13cmbtn);
break;
case(band23cm):
showButton(ui->band23cmbtn);
break;
case(band70cm):
showButton(ui->band70cmbtn);
break;
case(band2m):
showButton(ui->band2mbtn);
break;
case(bandAir):
showButton(ui->bandAirbtn);
break;
case(bandWFM):
showButton(ui->bandWFMbtn);
break;
case(band4m):
showButton(ui->band4mbtn);
break;
case(band6m):
showButton(ui->band6mbtn);
break;
case(band10m):
showButton(ui->band10mbtn);
break;
case(band12m):
showButton(ui->band12mbtn);
break;
case(band15m):
showButton(ui->band15mbtn);
break;
case(band17m):
showButton(ui->band17mbtn);
break;
case(band20m):
showButton(ui->band20mbtn);
break;
case(band30m):
showButton(ui->band30mbtn);
break;
case(band40m):
showButton(ui->band40mbtn);
break;
case(band60m):
showButton(ui->band60mbtn);
break;
case(band80m):
showButton(ui->band80mbtn);
break;
case(band160m):
showButton(ui->band160mbtn);
break;
case(band630m):
showButton(ui->band630mbtn);
break;
case(band2200m):
showButton(ui->band2200mbtn);
break;
case(bandGen):
showButton(ui->bandGenbtn);
break;
switch(band.band)
{
case(band3cm):
showButton(ui->band3cmbtn);
break;
case(band6cm):
showButton(ui->band6cmbtn);
break;
case(band13cm):
showButton(ui->band13cmbtn);
break;
case(band23cm):
showButton(ui->band23cmbtn);
break;
case(band70cm):
showButton(ui->band70cmbtn);
break;
case(band2m):
showButton(ui->band2mbtn);
break;
case(bandAir):
showButton(ui->bandAirbtn);
break;
case(bandWFM):
showButton(ui->bandWFMbtn);
break;
case(band4m):
showButton(ui->band4mbtn);
break;
case(band6m):
showButton(ui->band6mbtn);
break;
case(band10m):
showButton(ui->band10mbtn);
break;
case(band12m):
showButton(ui->band12mbtn);
break;
case(band15m):
showButton(ui->band15mbtn);
break;
case(band17m):
showButton(ui->band17mbtn);
break;
case(band20m):
showButton(ui->band20mbtn);
break;
case(band30m):
showButton(ui->band30mbtn);
break;
case(band40m):
showButton(ui->band40mbtn);
break;
case(band60m):
showButton(ui->band60mbtn);
break;
case(band80m):
showButton(ui->band80mbtn);
break;
case(band160m):
showButton(ui->band160mbtn);
break;
case(band630m):
showButton(ui->band630mbtn);
break;
case(band2200m):
showButton(ui->band2200mbtn);
break;
case(bandGen):
showButton(ui->bandGenbtn);
break;
default:
break;
default:
break;
}
}
}
}
@ -166,33 +167,11 @@ void bandbuttons::hideButton(QPushButton *b)
b->setHidden(true);
}
void bandbuttons::receiveBandStackReg(freqt freqGo, char mode, char filter, bool dataOn)
{
// This function is not currently used, but perhaps it should be?
// Issue: wfmain is also waiting for a BSR and acts upon it.
if(waitingForBSR)
{
qDebug(logGui()) << "Received band stack register and was waiting for one.";
emit issueCmdF(cmdSetFreq, freqGo);
emit issueCmd(cmdSetMode, mode);
//emit issueCmd(cmdSetFilter, filter); // TODO
if(dataOn)
emit issueDelayedCommand(cmdSetDataModeOn);
else
emit issueDelayedCommand(cmdSetDataModeOff);
waitingForBSR = false;
} else {
qWarning(logGui()) << "Received a BSR but did not expect one.";
}
(void)filter;
}
void bandbuttons::bandStackBtnClick(availableBands band)
{
if(haveRigCaps)
if(rigCaps != Q_NULLPTR)
{
for (auto &b: rigCaps.bands)
for (auto &b: rigCaps->bands)
{
if (b.band == band)
{
@ -215,16 +194,19 @@ void bandbuttons::bandStackBtnClick(availableBands band)
void bandbuttons::jumpToBandWithoutBSR(availableBands band)
{
// Sometimes we do not have a BSR for these bands:
for (auto &b: rigCaps.bands)
if (rigCaps != Q_NULLPTR)
{
if (b.band == band)
for (auto &b: rigCaps->bands)
{
freqt f;
f.Hz = (b.lowFreq+b.highFreq)/2.0;
f.MHzDouble = f.Hz/1000000.0;
f.VFO = activeVFO;
queue->add(priorityImmediate,queueItem(funcSelectedFreq,QVariant::fromValue<freqt>(f),false,false));
break;
if (b.band == band)
{
freqt f;
f.Hz = (b.lowFreq+b.highFreq)/2.0;
f.MHzDouble = f.Hz/1000000.0;
f.VFO = activeVFO;
queue->add(priorityImmediate,queueItem(funcSelectedFreq,QVariant::fromValue<freqt>(f),false,false));
break;
}
}
}
}

Wyświetl plik

@ -51,9 +51,7 @@ signals:
public slots:
// These should come from connections to rigCommander:
void acceptRigCaps(rigCapabilities rc);
void receiveBandStackReg(freqt freqGo, char mode, char filter, bool dataOn);
void receiveRigCaps(rigCapabilities* rc);
private slots:
void on_band2200mbtn_clicked();
@ -90,7 +88,7 @@ private:
char bandStkRegCode;
bool waitingForBSR = false;
rigCapabilities rigCaps;
rigCapabilities* rigCaps=Q_NULLPTR;
bool haveRigCaps = false;
cachingQueue* queue;
};

Wyświetl plik

@ -118,7 +118,7 @@ public:
QMultiMap <queuePriority,queueItem> getQueueItems();
void lockMutex() {mutex.lock();}
void unlockMutex() {mutex.unlock();}
void setRigCaps(rigCapabilities* caps) { rigCaps = caps; emit rigCapsUpdated(rigCaps);}
void setRigCaps(rigCapabilities* caps) { if (rigCaps != caps) { rigCaps = caps; emit rigCapsUpdated(rigCaps);} }
rigCapabilities* getRigCaps() { return rigCaps; }
};

Wyświetl plik

@ -4,16 +4,19 @@
#include "memories.h"
#include "ui_memories.h"
memories::memories(rigCapabilities rigCaps, bool slowLoad, QWidget *parent) :
memories::memories(bool slowLoad, QWidget *parent) :
QWidget(parent),
slowLoad(slowLoad),
rigCaps(rigCaps),
ui(new Ui::memories)
{
ui->setupUi(this);
ui->table->setColumnCount(totalColumns);
ui->table->editing(false);
this->setObjectName("RigCtlD");
queue = cachingQueue::getInstance(this);
rigCaps = queue->getRigCaps();
QStringList headers;
/*
@ -32,9 +35,9 @@ memories::memories(rigCapabilities rigCaps, bool slowLoad, QWidget *parent) :
split << "OFF" << "ON";
dataModes << "OFF" << "DATA1";
if (rigCaps.commands.contains(funcDATA2Mod))
if (rigCaps->commands.contains(funcDATA2Mod))
dataModes.append("DATA2");
if (rigCaps.commands.contains(funcDATA3Mod))
if (rigCaps->commands.contains(funcDATA3Mod))
dataModes.append("DATA3");
filters << "FIL1" << "FIL2" << "FIL3";
@ -42,7 +45,7 @@ memories::memories(rigCapabilities rigCaps, bool slowLoad, QWidget *parent) :
duplexModes << "OFF" << "DUP-" << "DUP+" << "RPS";
toneModes << "OFF" << "TONE" << "TSQL";
if (rigCaps.commands.contains(funcRepeaterDTCS))
if (rigCaps->commands.contains(funcRepeaterDTCS))
toneModes.append("DTCS");
@ -72,12 +75,12 @@ memories::memories(rigCapabilities rigCaps, bool slowLoad, QWidget *parent) :
ui->group->blockSignals(true);
ui->group->addItem("Memory Group",-1);
for (int i=rigCaps.memStart;i<=rigCaps.memGroups;i++) {
for (int i=rigCaps->memStart;i<=rigCaps->memGroups;i++) {
ui->group->addItem(QString("Group %0").arg(i,2,10,QChar('0')),i);
}
if (rigCaps.satMemories && rigCaps.commands.contains(funcSatelliteMode)){
if (rigCaps->satMemories && rigCaps->commands.contains(funcSatelliteMode)){
ui->group->addItem("Satellite",MEMORY_SATGROUP);
}
@ -88,13 +91,13 @@ memories::memories(rigCapabilities rigCaps, bool slowLoad, QWidget *parent) :
dvsql.append(QString::number(i).rightJustified(2,'0'));
}
if (rigCaps.commands.contains(funcVFOEqualAB)) {
if (rigCaps->commands.contains(funcVFOEqualAB)) {
vfos << "VFOA" << "VFOB";
} else if (rigCaps.commands.contains(funcVFOEqualMS)) {
} else if (rigCaps->commands.contains(funcVFOEqualMS)) {
vfos << "MAIN" << "SUB";
}
for (auto &mode: rigCaps.modes){
for (auto &mode: rigCaps->modes){
modes.append(mode.name);
}
@ -131,7 +134,7 @@ void memories::rowAdded(int row)
{
// Find the next available memory number:
quint32 num=rigCaps.memStart;
quint32 num=rigCaps->memStart;
/* This feels unnecessarily complicated, but here we are:
* Set the memory number to 1
@ -160,11 +163,11 @@ void memories::rowAdded(int row)
if (i == rows.end())
{
// No gaps found so work on highest value found
if ((ui->group->currentData().toInt() != 200 && rows.back() < groupMemories-1) || (ui->group->currentData().toInt() == MEMORY_SATGROUP && rows.back() < rigCaps.satMemories-1))
if ((ui->group->currentData().toInt() != 200 && rows.back() < groupMemories-1) || (ui->group->currentData().toInt() == MEMORY_SATGROUP && rows.back() < rigCaps->satMemories-1))
{
num = rows.back() + 1;
}
else if (rows.front() == rigCaps.memStart)
else if (rows.front() == rigCaps->memStart)
{
qWarning() << "Sorry no free memory slots found, please delete one first";
ui->table->removeRow(row);
@ -177,7 +180,9 @@ void memories::rowAdded(int row)
QPushButton* recall = new QPushButton("Recall");
ui->table->setCellWidget(row,columnRecall,recall);
connect(recall, &QPushButton::clicked, this,
[=]() { qInfo() << "Recalling" << num; emit recallMemory((quint32((ui->group->currentData().toUInt() << 16) | num)));});
[=]() { qInfo() << "Recalling" << num;
queue->add(priorityImmediate,queueItem(funcMemoryMode,QVariant::fromValue<uint>((quint32((ui->group->currentData().toUInt() << 16) | num)))));
});
ui->table->model()->setData(ui->table->model()->index(row,columnNum),QString::number(num).rightJustified(3,'0'));
// Set default values (where possible) for all other values:
if (ui->table->item(row,columnSplit) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnSplit),split[0]);
@ -219,7 +224,7 @@ void memories::rowAdded(int row)
void memories::rowDeleted(quint32 mem)
{
if (mem >= rigCaps.memStart && mem <= rigCaps.memories) {
if (mem >= rigCaps->memStart && mem <= rigCaps->memories) {
qInfo() << "Mem Deleted" << mem;
memoryType currentMemory;
if (ui->group->currentData().toInt() == MEMORY_SATGROUP)
@ -230,7 +235,7 @@ void memories::rowDeleted(quint32 mem)
currentMemory.group=ui->group->currentData().toInt();
currentMemory.channel = mem;
currentMemory.del = true;
emit setMemory(currentMemory);
queue->add(priorityImmediate,queueItem((currentMemory.sat?funcSatelliteMemory:funcMemoryContents),QVariant::fromValue<memoryType>(currentMemory)));
}
}
@ -315,7 +320,7 @@ void memories::on_table_cellChanged(int row, int col)
currentMemory.frequency.Hz = (ui->table->item(row,columnFrequency) == NULL) ? 0 : quint64(ui->table->item(row,columnFrequency)->text().toDouble()*1000000.0);
currentMemory.frequencyB.Hz = (ui->table->item(row,columnFrequencyB) == NULL) ? 0 : quint64(ui->table->item(row,columnFrequencyB)->text().toDouble()*1000000.0);
for (auto &m: rigCaps.modes){
for (auto &m: rigCaps->modes){
if (!ui->table->isColumnHidden(columnMode) && ui->table->item(row,columnMode) != NULL && ui->table->item(row,columnMode)->text()==m.name) {
currentMemory.mode=m.reg;
}
@ -412,8 +417,7 @@ void memories::on_table_cellChanged(int row, int col)
write=false;
}
if (write) {
emit setMemory(currentMemory);
queue->add(priorityImmediate,queueItem((currentMemory.sat?funcSatelliteMemory:funcMemoryContents),QVariant::fromValue<memoryType>(currentMemory)));
qInfo() << "Sending memory, group:" << currentMemory.group << "channel" << currentMemory.channel;
// Set number to not be editable once written. Not sure why but this crashes?
//ui->table->item(row,columnNum)->setFlags(ui->table->item(row,columnNum)->flags() & (~Qt::ItemIsEditable));
@ -431,11 +435,11 @@ void memories::on_group_currentIndexChanged(int index)
// Special case for group 100 on the IC705!
if (ui->group->currentData().toInt() == MEMORY_SATGROUP)
groupMemories=rigCaps.satMemories;
groupMemories=rigCaps->satMemories;
else if (ui->group->currentData().toInt() == MEMORY_SHORTGROUP)
groupMemories=3;
else
groupMemories=rigCaps.memories;
groupMemories=rigCaps->memories;
ui->loadingMemories->setVisible(true);
ui->table->setEditTriggers(QAbstractItemView::NoEditTriggers);
@ -453,15 +457,21 @@ void memories::on_group_currentIndexChanged(int index)
QVector<memParserFormat> parser;
queue->add(priorityImmediate,queueItem(funcSatelliteMode,QVariant::fromValue<bool>(ui->group->currentData().toInt() == MEMORY_SATGROUP)));
if (ui->group->currentData().toInt() == MEMORY_SATGROUP) {
emit setSatelliteMode(true);
parser = rigCaps.satParser;
queue->del(funcSelectedFreq,false);
queue->del(funcSelectedMode,false);
queue->del(funcUnselectedFreq,true);
queue->del(funcUnselectedMode,true);
parser = rigCaps->satParser;
} else {
emit setSatelliteMode(false);
parser = rigCaps.memParser;
queue->addUnique(priorityMedium,funcSelectedFreq,true,false);
queue->addUnique(priorityMedium,funcSelectedMode,true,false);
queue->addUnique(priorityMedium,funcUnselectedFreq,true,true);
queue->addUnique(priorityMedium,funcUnselectedMode,true,true);
parser = rigCaps->memParser;
}
for (auto &parse: parser) {
switch (parse.spec)
{
@ -879,38 +889,49 @@ void memories::on_group_currentIndexChanged(int index)
if (ui->group->currentData().toInt() == MEMORY_SATGROUP) {
lastMemoryRequested = rigCaps.memStart;
lastMemoryRequested = rigCaps->memStart;
if (slowLoad) {
QTimer::singleShot(MEMORY_SLOWLOAD, this, [this]{ emit getSatMemory(lastMemoryRequested); });
QTimer::singleShot(MEMORY_SLOWLOAD, this, [this]{
queue->add(priorityImmediate,queueItem(funcSatelliteMemory,QVariant::fromValue<ushort>(lastMemoryRequested & 0xffff)));
});
} else {
emit getSatMemory(lastMemoryRequested);
queue->add(priorityImmediate,queueItem(funcSatelliteMemory,QVariant::fromValue<ushort>(lastMemoryRequested & 0xffff)));
}
} else {
lastMemoryRequested = quint32((ui->group->currentData().toInt())<<16) | (rigCaps.memStart & 0xffff);
lastMemoryRequested = quint32((ui->group->currentData().toInt())<<16) | (rigCaps->memStart & 0xffff);
if (slowLoad) {
QTimer::singleShot(MEMORY_SLOWLOAD, this, [this]{ emit getMemory(lastMemoryRequested); });
QTimer::singleShot(MEMORY_SLOWLOAD, this, [this]{
queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue<uint>(lastMemoryRequested)));
});
} else {
// Is the current group attached to a particular band?
for (auto &band: rigCaps.bands)
for (auto &band: rigCaps->bands)
{
if (band.memGroup==ui->group->currentData().toInt())
{
emit setBand(band.band);
queue->add(priorityImmediate,queueItem(funcBandStackReg,QVariant::fromValue<uchar>(band.band)));
}
}
emit getMemory(lastMemoryRequested);
queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue<uint>(lastMemoryRequested)));
}
}
}
void memories::on_vfoMode_clicked()
{
emit vfoMode();
queue->addUnique(priorityMedium,funcSelectedFreq,true,false);
queue->addUnique(priorityMedium,funcSelectedMode,true,false);
queue->addUnique(priorityMedium,funcUnselectedFreq,true,true);
queue->addUnique(priorityMedium,funcUnselectedMode,true,true);
}
void memories::on_memoryMode_clicked()
{
emit memoryMode();
queue->add(priorityImmediate,funcMemoryMode);
queue->del(funcSelectedFreq,false);
queue->del(funcSelectedMode,false);
queue->del(funcUnselectedFreq,true);
queue->del(funcUnselectedMode,true);
}
@ -921,9 +942,9 @@ void memories::receiveMemory(memoryType mem)
{
lastMemoryRequested++;
if (mem.sat)
emit getSatMemory(lastMemoryRequested);
queue->add(priorityImmediate,queueItem(funcSatelliteMemory,QVariant::fromValue<ushort>(lastMemoryRequested & 0xffff)));
else
emit getMemory(lastMemoryRequested);
queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue<uint>(lastMemoryRequested)));
timeoutTimer.start(MEMORY_TIMEOUT);
}
else if (mem.channel == groupMemories)
@ -946,7 +967,8 @@ void memories::receiveMemory(memoryType mem)
for (int n = 0; n<ui->table->rowCount();n++)
{
if (ui->table->item(n,columnNum) != NULL && ui->table->item(n,columnNum)->text().toInt() == mem.channel && (rigCaps.memGroups < 2 || mem.sat || mem.group == ui->group->currentData().toInt()))
if (ui->table->item(n,columnNum) != NULL && ui->table->item(n,columnNum)->text().toInt() == mem.channel &&
(rigCaps->memGroups < 2 || mem.sat || mem.group == ui->group->currentData().toInt()))
{
row = n;
break;
@ -961,8 +983,10 @@ void memories::receiveMemory(memoryType mem)
row=ui->table->rowCount()-1;
QPushButton* recall = new QPushButton("Recall");
ui->table->setCellWidget(row,columnRecall,recall);
connect(recall, &QPushButton::clicked, this,
[=]() { qInfo() << "Recalling" << mem.channel; emit recallMemory((quint32((ui->group->currentData().toUInt() << 16) | mem.channel)));});
connect(recall, &QPushButton::clicked, this, [=]() {
qInfo() << "Recalling" << mem.channel;
queue->add(priorityImmediate,queueItem(funcMemoryMode,QVariant::fromValue<uint>(quint32((ui->group->currentData().toUInt() << 16) | mem.channel))));
});
}
ui->table->model()->setData(ui->table->model()->index(row,columnNum),QString::number(mem.channel & 0xffff).rightJustified(3,'0'));
@ -981,12 +1005,12 @@ void memories::receiveMemory(memoryType mem)
ui->table->model()->setData(ui->table->model()->index(row,columnFrequencyB),QString::number(double(mem.frequencyB.Hz/1000000.0),'f',3));
validData++;
for (uint i=0;i<rigCaps.modes.size();i++)
for (uint i=0;i<rigCaps->modes.size();i++)
{
if (mem.mode == rigCaps.modes[i].reg)
if (mem.mode == rigCaps->modes[i].reg)
validData += updateCombo(modes,row,columnMode,i);
if (mem.modeB == rigCaps.modes[i].reg)
if (mem.modeB == rigCaps->modes[i].reg)
validData += updateCombo(modes,row,columnModeB,i);
}
@ -1094,10 +1118,11 @@ void memories::receiveMemory(memoryType mem)
if (validData < visibleColumns) {
qInfo(logRig()) << "Memory" << mem.channel << "Received valid data for" << validData << "columns, " << "expected" << visibleColumns << "requesting again";
if (mem.sat)
emit getSatMemory(mem.channel & 0xffff);
else
emit getMemory(quint32((ui->group->currentData().toInt())<<16) | (mem.channel & 0xffff));
if (mem.sat) {
queue->add(priorityImmediate,queueItem(funcSatelliteMemory,QVariant::fromValue<ushort>(mem.channel & 0xffff)));
} else {
queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue<uint>(mem.channel & 0xffff)));
}
retries++;
}
@ -1155,14 +1180,15 @@ bool memories::checkASCII(QString str)
void memories::timeout()
{
{
if (timeoutCount < 10 )
{
qInfo(logRig()) << "Timeout receiving memory:" << (lastMemoryRequested & 0xffff) << "in group" << (lastMemoryRequested >> 16 & 0xffff);
if (ui->group->currentData().toInt() == MEMORY_SATGROUP)
emit getSatMemory(lastMemoryRequested);
else
emit getMemory(lastMemoryRequested);
if (ui->group->currentData().toInt() == MEMORY_SATGROUP) {
queue->add(priorityImmediate,queueItem(funcSatelliteMemory,QVariant::fromValue<ushort>(lastMemoryRequested & 0xffff)));
} else {
queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue<uint>(lastMemoryRequested)));
}
timeoutTimer.start(MEMORY_TIMEOUT);
timeoutCount++;
} else {
@ -1241,8 +1267,10 @@ void memories::on_csvImport_clicked()
ui->table->insertRow(rownum);
QPushButton* recall = new QPushButton("Recall");
ui->table->setCellWidget(rownum,columnRecall,recall);
connect(recall, &QPushButton::clicked, this,
[=]() { qInfo() << "Recalling" << row[0].toInt(); emit recallMemory((quint32((ui->group->currentData().toUInt() << 16) | row[0].toInt())));});
connect(recall, &QPushButton::clicked, this, [=]() {
qInfo() << "Recalling" << row[0].toInt();
queue->add(priorityImmediate,queueItem(funcMemoryMode,QVariant::fromValue<uint>(quint32((ui->group->currentData().toUInt() << 16) | row[0].toInt()))));
});
}
// rownum is now the row we need to work on.

Wyświetl plik

@ -14,6 +14,7 @@
#include "tablewidget.h"
#include "wfviewtypes.h"
#include "rigidentities.h"
#include "cachingqueue.h"
#define MEMORY_TIMEOUT 1000
#define MEMORY_SLOWLOAD 500
@ -29,7 +30,7 @@ class memories : public QWidget
Q_OBJECT
public:
explicit memories(rigCapabilities rigCaps,bool slowLoad=false,QWidget *parent = nullptr);
explicit memories(bool slowLoad=false,QWidget *parent = nullptr);
~memories();
void populate();
@ -64,6 +65,7 @@ private slots:
void timeout();
private:
cachingQueue* queue;
quint32 groupMemories=0;
quint32 lastMemoryRequested=0;
QTimer timeoutTimer;
@ -175,7 +177,7 @@ private:
tableEditor* r1EditorB = Q_NULLPTR;
tableEditor* r2EditorB = Q_NULLPTR;
rigCapabilities rigCaps;
rigCapabilities* rigCaps = Q_NULLPTR;
Ui::memories *ui;
bool extended = false;

Wyświetl plik

@ -16,6 +16,12 @@
pttyHandler::pttyHandler(QString pty, QObject* parent) : QObject(parent)
{
//constructor
this->setObjectName("pttyHandler");
queue = cachingQueue::getInstance(this);
connect(queue, SIGNAL(rigCapsUpdated(rigCapabilities*)), this, SLOT(receiveRigCaps(rigCapabilities*)));
rigCaps = queue->getRigCaps();
if (pty == "" || pty.toLower() == "none")
{
// Just return if pty is not configured.
@ -222,7 +228,7 @@ void pttyHandler::receiveDataIn(int fd) {
qInfo(logSerial()) << "pty remote CI-V changed:" << QString("0x%1").arg((quint8)civId,0,16);
}
// filter C-IV transceive command before forwarding on.
if (inPortData.contains(rigCaps.transceiveCommand))
if (rigCaps != Q_NULLPTR && inPortData.contains(rigCaps->transceiveCommand))
{
//qInfo(logSerial()) << "Filtered transceive command";
//printHex(inPortData, false, true);
@ -337,10 +343,12 @@ void pttyHandler::printHex(const QByteArray& pdata, bool printVert, bool printHo
qDebug(logSerial()) << "----- End hex dump -----";
}
void pttyHandler::receiveFoundRigID(rigCapabilities rigCaps) {
this->rigCaps = rigCaps;
qInfo(logSerial) << "Received rigCapabilities for" << rigCaps.modelName;
void pttyHandler::receiveRigCaps(rigCapabilities* caps)
{
if (caps != Q_NULLPTR) {
qInfo(logSerial()) << "Got rigcaps for:" << caps->modelName;
}
this->rigCaps = caps;
}

Wyświetl plik

@ -11,6 +11,7 @@
#include "rigidentities.h"
#include "wfviewtypes.h"
#include "cachingqueue.h"
// This class abstracts the comm port in a useful way and connects to
// the command creator and command parser.
@ -30,7 +31,7 @@ private slots:
void receiveDataIn(int fd); // from physical port
void receiveDataFromRigToPtty(const QByteArray& data);
void debugThis();
void receiveFoundRigID(rigCapabilities rigCaps);
void receiveRigCaps(rigCapabilities* rigCaps);
signals:
void haveTextMessage(QString message); // status, debug only
@ -73,7 +74,8 @@ private:
bool disableTransceive = false;
QSocketNotifier *ptReader = Q_NULLPTR;
quint8 civId=0;
rigCapabilities rigCaps;
rigCapabilities* rigCaps = Q_NULLPTR;
cachingQueue* queue = Q_NULLPTR;
};
#endif // PTTYHANDLER_H

Wyświetl plik

@ -95,8 +95,6 @@ void rigCommander::commSetup(QHash<unsigned char,QString> rigList, unsigned char
connect(this, SIGNAL(getMoreDebug()), comm, SLOT(debugThis()));
connect(this, SIGNAL(getMoreDebug()), ptty, SLOT(debugThis()));
connect(this, SIGNAL(discoveredRigID(rigCapabilities)), ptty, SLOT(receiveFoundRigID(rigCapabilities)));
commonSetup();
}
@ -170,8 +168,6 @@ void rigCommander::commSetup(QHash<unsigned char,QString> rigList, unsigned char
connect(ptty, SIGNAL(havePortError(errorType)), this, SLOT(handlePortError(errorType)));
connect(this, SIGNAL(getMoreDebug()), ptty, SLOT(debugThis()));
connect(this, SIGNAL(discoveredRigID(rigCapabilities)), ptty, SLOT(receiveFoundRigID(rigCapabilities)));
connect(udp, SIGNAL(requestRadioSelection(QList<radio_cap_packet>)), this, SLOT(radioSelection(QList<radio_cap_packet>)));
connect(udp, SIGNAL(setRadioUsage(quint8, bool, quint8, QString, QString)), this, SLOT(radioUsage(quint8, bool, quint8, QString, QString)));
connect(this, SIGNAL(selectedRadio(quint8)), udp, SLOT(setCurrentRadio(quint8)));

Wyświetl plik

@ -310,7 +310,9 @@ void rigCtlD::stopServer()
void rigCtlClient::receiveRigCaps(rigCapabilities* caps)
{
qInfo(logRigCtlD()) << "Got rigcaps for:" << caps->modelName;
if (caps != Q_NULLPTR) {
qInfo(logRigCtlD()) << "Got rigcaps for:" << caps->modelName;
}
this->rigCaps = caps;
}

Wyświetl plik

@ -278,7 +278,6 @@ public:
int startServer(qint16 port);
void stopServer();
rigCapabilities* rigCaps;
signals:
void onStarted();
@ -342,7 +341,7 @@ protected:
private:
cachingQueue* queue;
rigCapabilities* rigCaps;
rigCapabilities* rigCaps=Q_NULLPTR;
rigCtlD* parent;
bool chkVfoEecuted=false;
unsigned long crcTable[256];

Wyświetl plik

@ -33,11 +33,6 @@ transceiverAdjustments::transceiverAdjustments(QWidget *parent) :
transceiverAdjustments::~transceiverAdjustments()
{
rigCaps.inputs.clear();
rigCaps.preamps.clear();
rigCaps.attenuators.clear();
rigCaps.antennas.clear();
delete ui;
}

Wyświetl plik

@ -1235,7 +1235,7 @@ void usbController::sendRequest(USBDEVICE *dev, usbFeatureType feature, int val,
{
myImage.save(&butBuffer, "BMP");
quint16 payloadLen = dev->type.maxPayload - sizeof(streamdeck_v1_image_header);
quint16 payloadLen = dev->type.maxPayload - quint16(sizeof(streamdeck_v1_image_header));
if (dev->type.model == usbDeviceType::StreamDeckOriginal) {
// Special case for buttons on original StreamDeck

Wyświetl plik

@ -88,7 +88,6 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
cal = new calibrationWindow();
rpt = new repeaterSetup();
sat = new satelliteSetup();
trxadj = new transceiverAdjustments();
cw = new cwSender();
abtBox = new aboutbox();
selRad = new selectRadio();
@ -141,8 +140,6 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
qRegisterMetaType<centerSpanData>();
qRegisterMetaType<bandStackType>();
haveRigCaps = false;
this->setObjectName("wfmain");
queue = cachingQueue::getInstance(this);
@ -214,6 +211,8 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
ConnectionTimer.setSingleShot(true);
connect(&ConnectionTimer,SIGNAL(timeout()), this,SLOT(connectionTimeout()));
// Make sure we know about any changes to rigCaps
connect(queue, SIGNAL(rigCapsUpdated(rigCapabilities*)), this, SLOT(receiveRigCaps(rigCapabilities*)));
setupKeyShortcuts();
@ -485,7 +484,7 @@ void wfmain::makeRig()
connect(this, SIGNAL(sendChangeLatency(quint16)), rig, SLOT(changeLatency(quint16)));
connect(this, SIGNAL(getRigCIV()), rig, SLOT(findRigs()));
connect(this, SIGNAL(setRigID(unsigned char)), rig, SLOT(setRigID(unsigned char)));
connect(rig, SIGNAL(discoveredRigID(rigCapabilities)), this, SLOT(receiveFoundRigID(rigCapabilities)));
connect(rig, SIGNAL(commReady()), this, SLOT(receiveCommReady()));
@ -512,7 +511,7 @@ void wfmain::makeRig()
//connect(this, SIGNAL(getSatMemory(quint32)), rig, SLOT(getSatMemory(quint32)));
//connect(this, SIGNAL(setMemory(memoryType)), rig, SLOT(setMemory(memoryType)));
//connect(this, SIGNAL(clearMemory(quint32)), rig, SLOT(clearMemory(quint32)));
//connect(this, SIGNAL(recallMemory(quint32)), rig, SLOT(recallMemory(quint32)));
//connect(this, SIGNAL(rigCaps->ry(quint32)), rig, SLOT(rigCaps->ry(quint32)));
connect(this->rpt, &repeaterSetup::setDuplexMode, this->rig,
[=](const duplexMode_t &t) { queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(t),false));});
@ -550,7 +549,7 @@ void wfmain::makeRig()
connect(this->rpt, &repeaterSetup::getRptAccessMode, this->rig,
[=]() {
if (rigCaps.commands.contains(funcToneSquelchType)) {
if (rigCaps->commands.contains(funcToneSquelchType)) {
queue->add(priorityImmediate,funcToneSquelchType,false,false);
} else {
queue->add(priorityImmediate,funcRepeaterTone,false,false);
@ -565,7 +564,7 @@ void wfmain::makeRig()
connect(this->rpt, &repeaterSetup::setRptAccessMode, this->rig,
[=](const rptrAccessData &rd) {
if (rigCaps.commands.contains(funcToneSquelchType)) {
if (rigCaps->commands.contains(funcToneSquelchType)) {
queue->add(priorityImmediate,queueItem(funcToneSquelchType,QVariant::fromValue<rptrAccessData>(rd),false));
} else {
if(rd.accessMode == ratrTN) {
@ -747,21 +746,6 @@ void wfmain::receiveCommReady()
}
}
void wfmain::receiveFoundRigID(rigCapabilities rigCaps)
{
// Entry point for unknown rig being identified at the start of the program.
//now we know what the rig ID is:
//qInfo(logSystem()) << "In wfview, we now have a reply to our request for rig identity sent to CIV BROADCAST.";
receiveRigID(rigCaps);
initPeriodicCommands();
getInitialRigState();
return;
}
void wfmain::receivePortError(errorType err)
{
if (err.alert) {
@ -1027,7 +1011,7 @@ void wfmain::setServerToPrefs()
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);
@ -1053,7 +1037,7 @@ void wfmain::configureVFOs()
vfos.clear();
}
for(uchar i=0;i<rigCaps.numVFO;i++)
for(uchar i=0;i<rigCaps->numVFO;i++)
{
spectrumScope* vfo = new spectrumScope;
@ -1222,7 +1206,7 @@ void wfmain::setupKeyShortcuts()
// Alternate for plus:
keyK = new QShortcut(this);
keyK->setKey(Qt::Key_K);
connect(keyK, &QShortcut::activated,
connect(keyK, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
this->shortcutPlus();
@ -1231,7 +1215,7 @@ void wfmain::setupKeyShortcuts()
// Alternate for minus:
keyJ = new QShortcut(this);
keyJ->setKey(Qt::Key_J);
connect(keyJ, &QShortcut::activated,
connect(keyJ, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
this->shortcutMinus();
@ -1239,7 +1223,7 @@ void wfmain::setupKeyShortcuts()
keyShiftK = new QShortcut(this);
keyShiftK->setKey(Qt::SHIFT | Qt::Key_K);
connect(keyShiftK, &QShortcut::activated,
connect(keyShiftK, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
this->shortcutShiftPlus();
@ -1248,7 +1232,7 @@ void wfmain::setupKeyShortcuts()
keyShiftJ = new QShortcut(this);
keyShiftJ->setKey(Qt::SHIFT | Qt::Key_J);
connect(keyShiftJ, &QShortcut::activated,
connect(keyShiftJ, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
this->shortcutShiftMinus();
@ -1256,7 +1240,7 @@ void wfmain::setupKeyShortcuts()
keyControlK = new QShortcut(this);
keyControlK->setKey(Qt::CTRL | Qt::Key_K);
connect(keyControlK, &QShortcut::activated,
connect(keyControlK, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
this->shortcutControlPlus();
@ -1265,7 +1249,7 @@ void wfmain::setupKeyShortcuts()
keyControlJ = new QShortcut(this);
keyControlJ->setKey(Qt::CTRL | Qt::Key_J);
connect(keyControlJ, &QShortcut::activated,
connect(keyControlJ, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
this->shortcutControlMinus();
@ -1274,7 +1258,7 @@ void wfmain::setupKeyShortcuts()
// H = Down
keyH = new QShortcut(this);
keyH->setKey(Qt::Key_H);
connect(keyH, &QShortcut::activated,
connect(keyH, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
@ -1289,7 +1273,7 @@ void wfmain::setupKeyShortcuts()
// L = Up
keyL = new QShortcut(this);
keyL->setKey(Qt::Key_L);
connect(keyL, &QShortcut::activated,
connect(keyL, &QShortcut::activated, this,
[=]() {
if (freqLock) return;
@ -1391,31 +1375,31 @@ void wfmain::buttonControl(const COMMAND* cmd)
switch (cmd->command) {
case funcBandStackReg:
if (cmd->value == 100) {
for (size_t i = 0; i < rigCaps.bands.size(); i++) {
if (rigCaps.bands[i].band == lastRequestedBand)
for (size_t i = 0; i < rigCaps->bands.size(); i++) {
if (rigCaps->bands[i].band == lastRequestedBand)
{
if (i > 0) {
//issueCmd(cmdGetBandStackReg, rigCaps.bands[i - 1].band);
//issueCmd(cmdGetBandStackReg, rigCaps->bands[i - 1].band);
}
else {
//issueCmd(cmdGetBandStackReg, rigCaps.bands[rigCaps.bands.size() - 1].band);
//issueCmd(cmdGetBandStackReg, rigCaps->bands[rigCaps->bands.size() - 1].band);
}
}
}
} else if (cmd->value == -100) {
for (size_t i = 0; i < rigCaps.bands.size(); i++) {
if (rigCaps.bands[i].band == lastRequestedBand)
for (size_t i = 0; i < rigCaps->bands.size(); i++) {
if (rigCaps->bands[i].band == lastRequestedBand)
{
if (i + 1 < rigCaps.bands.size()) {
//issueCmd(cmdGetBandStackReg, rigCaps.bands[i + 1].band);
if (i + 1 < rigCaps->bands.size()) {
//issueCmd(cmdGetBandStackReg, rigCaps->bands[i + 1].band);
}
else {
//issueCmd(cmdGetBandStackReg, rigCaps.bands[0].band);
//issueCmd(cmdGetBandStackReg, rigCaps->bands[0].band);
}
}
}
} else {
for (auto &band: rigCaps.bands)
for (auto &band: rigCaps->bands)
{
if (band.band == cmd->value)
{
@ -1426,26 +1410,26 @@ void wfmain::buttonControl(const COMMAND* cmd)
break;
case funcModeSet:
if (cmd->value == 100) {
for (size_t i = 0; i < rigCaps.modes.size(); i++) {
if (rigCaps.modes[i].mk == currentModeInfo.mk)
for (size_t i = 0; i < rigCaps->modes.size(); i++) {
if (rigCaps->modes[i].mk == currentModeInfo.mk)
{
if (i + 1 < rigCaps.modes.size()) {
changeMode(rigCaps.modes[i + 1].mk);
if (i + 1 < rigCaps->modes.size()) {
changeMode(rigCaps->modes[i + 1].mk);
}
else {
changeMode(rigCaps.modes[0].mk);
changeMode(rigCaps->modes[0].mk);
}
}
}
} else if (cmd->value == -100) {
for (size_t i = 0; i < rigCaps.modes.size(); i++) {
if (rigCaps.modes[i].mk == currentModeInfo.mk)
for (size_t i = 0; i < rigCaps->modes.size(); i++) {
if (rigCaps->modes[i].mk == currentModeInfo.mk)
{
if (i>0) {
changeMode(rigCaps.modes[i - 1].mk);
changeMode(rigCaps->modes[i - 1].mk);
}
else {
changeMode(rigCaps.modes[rigCaps.modes.size()-1].mk);
changeMode(rigCaps->modes[rigCaps->modes.size()-1].mk);
}
}
}
@ -3284,7 +3268,7 @@ void wfmain::on_tuningStepCombo_currentIndexChanged(int index)
tsWfScrollHz = ui->tuningStepCombo->itemData(index).toUInt();
tsKnobHz = ui->tuningStepCombo->itemData(index).toUInt();
for (auto &s: rigCaps.steps) {
for (auto &s: rigCaps->steps) {
if (tsWfScrollHz == s.hz)
{
foreach (auto vfo, vfos)
@ -3509,25 +3493,25 @@ void wfmain:: getInitialRigState()
queue->del(funcTransceiverId); // This command is no longer required
/*
queue->add(priorityImmediate,(rigCaps.commands.contains(funcSelectedFreq)?funcSelectedFreq:funcFreqGet),false);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcSelectedMode)?funcSelectedMode:funcModeGet),false);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcUnselectedFreq)?funcUnselectedFreq:funcNone),false,true);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcUnselectedMode)?funcUnselectedMode:funcNone),false,true);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcSelectedFreq)?funcSelectedFreq:funcFreqGet),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcSelectedMode)?funcSelectedMode:funcModeGet),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcUnselectedFreq)?funcUnselectedFreq:funcNone),false,true);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcUnselectedMode)?funcUnselectedMode:funcNone),false,true);
// From left to right in the UI:
if (rigCaps.hasTransmit)
if (rigCaps->hasTransmit)
{
queue->add(priorityImmediate,funcDataModeWithFilter);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcDATAOffMod)?funcDATAOffMod:funcNone),false);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcDATA1Mod)?funcDATA1Mod:funcNone),false);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcDATA2Mod)?funcDATA2Mod:funcNone),false);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcDATA3Mod)?funcDATA3Mod:funcNone),false);
queue->add(priorityImmediate,(rigCaps.commands.contains(funcRFPower)?funcRFPower:funcNone),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcDATAOffMod)?funcDATAOffMod:funcNone),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcDATA1Mod)?funcDATA1Mod:funcNone),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcDATA2Mod)?funcDATA2Mod:funcNone),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcDATA3Mod)?funcDATA3Mod:funcNone),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcRFPower)?funcRFPower:funcNone),false);
queue->add(priorityImmediate,getInputTypeCommand(currentModDataOffSrc.type),false);
queue->add(priorityImmediate,getInputTypeCommand(currentModData1Src.type),false);
if (rigCaps.commands.contains(funcDATA2Mod))
if (rigCaps->commands.contains(funcDATA2Mod))
queue->add(priorityImmediate,getInputTypeCommand(currentModData2Src.type),false);
if (rigCaps.commands.contains(funcDATA3Mod))
if (rigCaps->commands.contains(funcDATA3Mod))
queue->add(priorityImmediate,getInputTypeCommand(currentModData3Src.type),false);
}
@ -3540,21 +3524,21 @@ void wfmain:: getInitialRigState()
queue->add(priorityImmediate,funcMonitorGain,false);
*/
if(rigCaps.hasSpectrum)
if(rigCaps->hasSpectrum)
{
queue->add(priorityImmediate,queueItem(funcScopeOnOff,QVariant::fromValue(quint8(1)),false));
queue->add(priorityImmediate,queueItem(funcScopeDataOutput,QVariant::fromValue(quint8(1)),false));
// Find the scope ref limits
auto mr = rigCaps.commands.find(funcScopeMainRef);
if (mr != rigCaps.commands.end())
auto mr = rigCaps->commands.find(funcScopeMainRef);
if (mr != rigCaps->commands.end())
{
vfos[0]->setRefLimits(mr.value().minVal,mr.value().maxVal);
queue->add(priorityImmediate,(funcScopeMainRef),false,false);
}
auto sr = rigCaps.commands.find(funcScopeSubRef);
if (sr != rigCaps.commands.end())
auto sr = rigCaps->commands.find(funcScopeSubRef);
if (sr != rigCaps->commands.end())
{
if (vfos.size()>1)
vfos[1]->setRefLimits(sr.value().minVal,sr.value().maxVal);
@ -3564,14 +3548,14 @@ void wfmain:: getInitialRigState()
// Only show settingsgroup if rig has sub
ui->scopeSettingsGroup->setVisible(rigCaps.commands.contains(funcScopeSubWaveData));
ui->scopeSettingsGroup->setVisible(rigCaps->commands.contains(funcScopeSubWaveData));
ui->scopeDualBtn->setVisible(rigCaps.commands.contains(funcScopeSingleDual));
ui->antennaGroup->setVisible(rigCaps.commands.contains(funcAntenna));
ui->preampAttGroup->setVisible(rigCaps.commands.contains(funcPreamp));
ui->scopeDualBtn->setVisible(rigCaps->commands.contains(funcScopeSingleDual));
ui->antennaGroup->setVisible(rigCaps->commands.contains(funcAntenna));
ui->preampAttGroup->setVisible(rigCaps->commands.contains(funcPreamp));
quint64 start=UINT64_MAX;
quint64 end=0;
for (auto &band: rigCaps.bands)
for (auto &band: rigCaps->bands)
{
if (start > band.lowFreq)
start = band.lowFreq;
@ -3580,60 +3564,60 @@ void wfmain:: getInitialRigState()
}
foreach (auto vfo, vfos)
{
vfo->enableScope(this->rigCaps.commands.contains(funcScopeMainMode));
vfo->displaySettings(0, start, end, 1,(FctlUnit)prefs.frequencyUnits,&rigCaps.bands);
vfo->enableScope(this->rigCaps->commands.contains(funcScopeMainMode));
vfo->displaySettings(0, start, end, 1,(FctlUnit)prefs.frequencyUnits,&rigCaps->bands);
}
/*
if (rigCaps.commands.contains(funcFilterWidth))
if (rigCaps->commands.contains(funcFilterWidth))
queue->add(priorityHigh,funcFilterWidth,false);
if (rigCaps.commands.contains(funcSplitStatus))
if (rigCaps->commands.contains(funcSplitStatus))
queue->add(priorityHigh,funcSplitStatus,false);
if(rigCaps.commands.contains(funcTuningStep))
if(rigCaps->commands.contains(funcTuningStep))
queue->add(priorityImmediate,funcTuningStep,false);
if(rigCaps.commands.contains(funcRepeaterTone))
if(rigCaps->commands.contains(funcRepeaterTone))
{
queue->add(priorityImmediate,funcRepeaterTone,false);
queue->add(priorityImmediate,funcRepeaterTSQL,false);
}
if(rigCaps.commands.contains(funcRepeaterDTCS))
if(rigCaps->commands.contains(funcRepeaterDTCS))
queue->add(priorityImmediate,funcRepeaterDTCS,false);
if(rigCaps.commands.contains(funcToneSquelchType))
if(rigCaps->commands.contains(funcToneSquelchType))
queue->add(priorityImmediate,funcToneSquelchType,false);
if(rigCaps.commands.contains(funcAntenna))
if(rigCaps->commands.contains(funcAntenna))
queue->add(priorityImmediate,funcAntenna,false);
if(rigCaps.commands.contains(funcAttenuator))
if(rigCaps->commands.contains(funcAttenuator))
queue->add(priorityImmediate,funcAttenuator,false);
if(rigCaps.commands.contains(funcPreamp))
if(rigCaps->commands.contains(funcPreamp))
queue->add(priorityImmediate,funcPreamp,false);
if (rigCaps.commands.contains(funcRitStatus))
if (rigCaps->commands.contains(funcRitStatus))
{
queue->add(priorityImmediate,funcRITFreq,false);
queue->add(priorityImmediate,funcRitStatus,false);
}
if(rigCaps.commands.contains(funcIFShift))
if(rigCaps->commands.contains(funcIFShift))
queue->add(priorityImmediate,funcIFShift,false);
if(rigCaps.commands.contains(funcPBTInner) && rigCaps.commands.contains(funcPBTOuter))
if(rigCaps->commands.contains(funcPBTInner) && rigCaps->commands.contains(funcPBTOuter))
{
queue->add(priorityImmediate,funcPBTInner,false);
queue->add(priorityImmediate,funcPBTOuter,false);
}
if(rigCaps.commands.contains(funcTunerStatus))
if(rigCaps->commands.contains(funcTunerStatus))
queue->add(priorityImmediate,funcTunerStatus,false);
*/
@ -3791,223 +3775,6 @@ void wfmain::setDefaultColors(int presetNumber)
//ui->colorPresetCombo->setItemText(presetNumber, *(p->presetName));
}
void wfmain::receiveRigID(rigCapabilities rigCaps)
{
// We have heard from the rig, so if the connection is pending, stop the timer immediately
ConnectionTimer.stop();
// Note: We intentionally request rigID several times
// because without rigID, we can't do anything with the waterfall.
bandbtns->acceptRigCaps(rigCaps);
if(haveRigCaps)
{
// Note: This line makes it difficult to accept a different radio connecting.
return;
} else {
showStatusBarText(QString("Found radio at address 0x%1 of name %2 and model ID %3.").arg(rigCaps.civ,2,16).arg(rigCaps.modelName).arg(rigCaps.modelID));
qDebug(logSystem()) << "Rig name: " << rigCaps.modelName;
qDebug(logSystem()) << "Has LAN capabilities: " << rigCaps.hasLan;
qDebug(logSystem()) << "Rig ID received into wfmain: spectLenMax: " << rigCaps.spectLenMax;
qDebug(logSystem()) << "Rig ID received into wfmain: spectAmpMax: " << rigCaps.spectAmpMax;
qDebug(logSystem()) << "Rig ID received into wfmain: spectSeqMax: " << rigCaps.spectSeqMax;
qDebug(logSystem()) << "Rig ID received into wfmain: hasSpectrum: " << rigCaps.hasSpectrum;
this->rigCaps = rigCaps;
configureVFOs(); // Now we have a rig connection, need to configure the VFOs
rigName->setText(rigCaps.modelName);
if (serverConfig.enabled) {
serverConfig.rigs.first()->modelName = rigCaps.modelName;
serverConfig.rigs.first()->rigName = rigCaps.modelName;
serverConfig.rigs.first()->civAddr = rigCaps.civ;
serverConfig.rigs.first()->baudRate = rigCaps.baudRate;
}
setWindowTitle(rigCaps.modelName);
if(rigCaps.hasSpectrum)
{
foreach (auto vfo, vfos)
{
vfo->prepareScope(rigCaps.spectAmpMax, rigCaps.spectLenMax);
}
}
haveRigCaps = true;
if (rigCaps.bands.size() > 0) {
lastRequestedBand = rigCaps.bands[0].band;
}
// Added so that server receives rig capabilities.
emit sendRigCaps(rigCaps);
rpt->setRig(rigCaps);
trxadj->setRig(rigCaps);
foreach (auto vfo, vfos) {
// Setup various combo box up for each VFO:
vfo->clearMode();
for (auto &m: rigCaps.modes)
{
//ui->modeSelectCombo->addItem(m.name, m.mk);
vfo->addMode("Mode "+m.name,QVariant::fromValue(m));
}
vfo->clearFilter();
for (auto& f: rigCaps.filters)
{
vfo->addFilter(f.name,f.num);
}
vfo->clearData();
vfo->addData("Data Off",0);
if (rigCaps.commands.contains(funcDATA1Mod))
{
setupui->updateModSourceList(1, rigCaps.inputs);
if (!rigCaps.commands.contains(funcDATA2Mod))
{
vfo->addData("Data On", 2);
}
}
if (rigCaps.commands.contains(funcDATA2Mod))
{
setupui->updateModSourceList(2, rigCaps.inputs);
vfo->addData("Data 1", 2);
vfo->addData("Data 2", 2);
}
if (rigCaps.commands.contains(funcDATA3Mod))
{
setupui->updateModSourceList(3, rigCaps.inputs);
vfo->addData("Data 3", 3);
}
vfo->clearSpans();
if(rigCaps.hasSpectrum)
{
for(unsigned int i=0; i < rigCaps.scopeCenterSpans.size(); i++)
{
vfo->addSpan(rigCaps.scopeCenterSpans.at(i).name, QVariant::fromValue(rigCaps.scopeCenterSpans.at(i)));
}
vfo->setRange(prefs.mainPlotFloor, prefs.mainPlotCeiling);
}
}
// Set the tuning step combo box up:
ui->tuningStepCombo->blockSignals(true);
ui->tuningStepCombo->clear();
for (auto &s: rigCaps.steps)
{
ui->tuningStepCombo->addItem(s.name, s.hz);
}
ui->tuningStepCombo->setCurrentIndex(2);
ui->tuningStepCombo->blockSignals(false);
setupui->updateModSourceList(0, rigCaps.inputs);
ui->attSelCombo->clear();
if(rigCaps.commands.contains(funcAttenuator))
{
ui->attSelCombo->setDisabled(false);
for (auto &att: rigCaps.attenuators)
{
ui->attSelCombo->addItem(((att == 0) ? QString("0 dB") : QString("-%1 dB").arg(att)),att);
}
} else {
ui->attSelCombo->setDisabled(true);
}
ui->preampSelCombo->clear();
if(rigCaps.commands.contains(funcPreamp))
{
ui->preampSelCombo->setDisabled(false);
for (auto &pre: rigCaps.preamps)
{
ui->preampSelCombo->addItem(pre.name, pre.num);
}
} else {
ui->preampSelCombo->setDisabled(true);
}
ui->antennaSelCombo->clear();
if(rigCaps.commands.contains(funcAntenna))
{
ui->antennaSelCombo->setDisabled(false);
for (auto &ant: rigCaps.antennas)
{
ui->antennaSelCombo->addItem(ant.name,ant.num);
}
} else {
ui->antennaSelCombo->setDisabled(true);
}
ui->rxAntennaCheck->setEnabled(rigCaps.commands.contains(funcRXAntenna));
ui->rxAntennaCheck->setChecked(false);
//ui->scopeBWCombo->blockSignals(true);
//ui->scopeBWCombo->clear();
ui->tuneEnableChk->setEnabled(rigCaps.commands.contains(funcTunerStatus));
ui->tuneNowBtn->setEnabled(rigCaps.commands.contains(funcTunerStatus));
ui->memoriesBtn->setEnabled(rigCaps.commands.contains(funcMemoryContents));
//ui->useRTSforPTTchk->setChecked(prefs.forceRTSasPTT);
// ui->audioSystemCombo->setEnabled(false);
//ui->audioSystemServerCombo->setEnabled(false);
ui->connectBtn->setText("Disconnect from Radio"); // We must be connected now.
connStatus = connConnected;
if(usingLAN)
{
ui->afGainSlider->setValue(prefs.localAFgain);
emit sendLevel(funcAfGain,prefs.localAFgain);
}
// Adding these here because clearly at this point we have valid
// rig comms. In the future, we should establish comms and then
// do all the initial grabs. For now, this hack of adding them here and there:
// recalculate command timing now that we know the rig better:
if(prefs.polling_ms != 0)
{
changePollTiming(prefs.polling_ms, true);
} else {
calculateTimingParameters();
}
// Set the second meter here as I suspect we need to be connected for it to work?
changeMeterType(prefs.meter2Type, 2);
changeMeterType(prefs.meter3Type, 3);
ui->meter2Widget->blockMeterType(prefs.meter3Type);
ui->meter3Widget->blockMeterType(prefs.meter2Type);
ui->meter2Widget->setCompReverse(prefs.compMeterReverse);
ui->meter3Widget->setCompReverse(prefs.compMeterReverse);
// for (int i = 0; i < ui->meter2selectionCombo->count(); i++)
// {
// if (static_cast<meter_t>(ui->meter2selectionCombo->itemData(i).toInt()) == prefs.meter2Type)
// {
// // I thought that setCurrentIndex() would call the activated() function for the combobox
// // but it doesn't, so call it manually.
// //ui->meter2selectionCombo->setCurrentIndex(i);
// changeMeter2Type(i);
// }
// }
}
}
void wfmain::initPeriodicCommands()
{
// This function places periodic polling commands into the queue.
@ -4017,9 +3784,9 @@ void wfmain::initPeriodicCommands()
queue->clear();
foreach (auto cap, rigCaps.periodic) {
foreach (auto cap, rigCaps->periodic) {
if (cap.vfo == -1) {
for (uchar v=0;v<rigCaps.numVFO;v++)
for (uchar v=0;v<rigCaps->numVFO;v++)
{
qDebug(logSystem()) << "Inserting command" << funcString[cap.func] << "priority" << cap.priority << "on VFO" << QString::number(v);
queue->add(queuePriority(cap.prioVal),cap.func,true,v);
@ -4034,11 +3801,11 @@ void wfmain::initPeriodicCommands()
/*
queue->add(priorityMedium,funcSelectedFreq,true,false);
queue->add(priorityMedium,funcSelectedMode,true,false);
//queue->add(priorityMedium,(rigCaps.commands.contains(funcSelectedMode)?funcNone:funcDataModeWithFilter),true,false);
//queue->add(priorityMedium,(rigCaps->commands.contains(funcSelectedMode)?funcNone:funcDataModeWithFilter),true,false);
queue->add(priorityMedium,funcUnselectedFreq,true,true);
queue->add(priorityMedium,funcUnselectedMode,true,true);
if (rigCaps.hasSpectrum)
if (rigCaps->hasSpectrum)
{
queue->add(priorityHigh,funcOverflowStatus,true,false);
queue->add(priorityMediumHigh,funcScopeMainMode,true,false);
@ -4054,7 +3821,7 @@ void wfmain::initPeriodicCommands()
queue->add(priorityMedium,funcVFODualWatch,true,false);
}
if(rigCaps.hasTransmit) {
if(rigCaps->hasTransmit) {
queue->add(priorityHigh,funcTransceiverStatus,true,false);
queue->add(priorityMediumHigh,funcDATAOffMod,true,false);
queue->add(priorityMediumHigh,funcDATA1Mod,true,false);
@ -4189,7 +3956,7 @@ void wfmain::changeMode(rigMode_t mode)
void wfmain::changeMode(rigMode_t mode, unsigned char data)
{
for (modeInfo &mi: rigCaps.modes)
for (modeInfo &mi: rigCaps->modes)
{
if (mi.mk == mode)
{
@ -4199,8 +3966,8 @@ void wfmain::changeMode(rigMode_t mode, unsigned char data)
m.VFO=selVFO_t::activeVFO;
if((m.mk != currentModeInfo.mk) && prefs.automaticSidebandSwitching)
{
queue->add(priorityImmediate,queueItem((rigCaps.commands.contains(funcSelectedMode)?funcSelectedMode:funcModeGet),QVariant::fromValue<modeInfo>(m),false));
if (!rigCaps.commands.contains(funcSelectedMode))
queue->add(priorityImmediate,queueItem((rigCaps->commands.contains(funcSelectedMode)?funcSelectedMode:funcModeGet),QVariant::fromValue<modeInfo>(m),false));
if (!rigCaps->commands.contains(funcSelectedMode))
queue->add(priorityImmediate,queueItem(funcDataModeWithFilter,QVariant::fromValue<modeInfo>(m),false));
}
usingDataMode = data;
@ -4208,7 +3975,7 @@ void wfmain::changeMode(rigMode_t mode, unsigned char data)
}
}
queue->add(priorityImmediate,(rigCaps.commands.contains(funcSelectedMode)?funcSelectedMode:funcModeGet),false);
queue->add(priorityImmediate,(rigCaps->commands.contains(funcSelectedMode)?funcSelectedMode:funcModeGet),false);
}
void wfmain::on_freqDial_valueChanged(int value)
@ -4361,7 +4128,6 @@ void wfmain::on_monitorLabel_linkActivated(const QString&)
void wfmain::receiveIFShift(unsigned char level)
{
trxadj->updateIFShift(level);
emit sendLevel(funcIFShift,level);
}
@ -4703,7 +4469,7 @@ void wfmain::receiveTuningStep(unsigned char step)
{
if (step > 0)
{
for (auto &s: rigCaps.steps)
for (auto &s: rigCaps->steps)
{
if (step == s.num && ui->tuningStepCombo->currentData().toUInt() != s.hz) {
qInfo(logSystem()) << QString("Received new Tuning Step %0").arg(s.name);
@ -4926,7 +4692,7 @@ void wfmain::calculateTimingParameters()
if(msMinTiming < 25)
msMinTiming = 25;
if(haveRigCaps && rigCaps.hasFDcomms)
if(rigCaps != Q_NULLPTR && rigCaps->hasFDcomms)
{
delayedCommand->setInterval( msMinTiming); // 20 byte message
queue->interval(msMinTiming);
@ -5159,10 +4925,10 @@ void wfmain::enableRigCtl(bool enabled)
// Start rigctld
rigCtl = new rigCtlD(this);
rigCtl->startServer(prefs.rigCtlPort);
if (rig != Q_NULLPTR) {
// We are already connected to a rig.
emit sendRigCaps(rigCaps);
}
//if (rig != Q_NULLPTR) {
// // We are already connected to a rig.
// emit sendRigCaps(rigCaps);
//}
}
}
@ -5387,7 +5153,7 @@ void wfmain::connectionHandler(bool connect)
{
queue->clear();
emit sendCloseComm();
haveRigCaps = false;
rigName->setText("NONE");
connStatus = connDisconnected;
@ -5432,10 +5198,10 @@ void wfmain::on_cwButton_clicked()
void wfmain::on_memoriesBtn_clicked()
{
if (haveRigCaps) {
if (rigCaps != Q_NULLPTR) {
if (memWindow == Q_NULLPTR) {
// Add slowload option for background loading.
memWindow = new memories(rigCaps,false);
memWindow = new memories(false);
this->memWindow->connect(this, SIGNAL(haveMemory(memoryType)), memWindow, SLOT(receiveMemory(memoryType)));
this->memWindow->connect(this->memWindow, &memories::getMemory, rig,[=](const quint32 &mem) {
@ -5768,13 +5534,13 @@ void wfmain::receiveValue(cacheItem val){
queue->add(priorityImmediate,queueItem(funcSelectedFreq,QVariant::fromValue<freqt>(bsr.freq),false));
for (auto &md: rigCaps.modes)
for (auto &md: rigCaps->modes)
{
if (md.reg == bsr.mode) {
md.filter=bsr.filter;
md.data=bsr.data;
queue->add(priorityImmediate,queueItem((rigCaps.commands.contains(funcSelectedMode)?funcSelectedMode:funcModeSet),QVariant::fromValue<modeInfo>(md),false));
queue->add(priorityImmediate,queueItem((rigCaps.commands.contains(funcSelectedMode)?funcNone:funcDataModeWithFilter),QVariant::fromValue<modeInfo>(md),false));
queue->add(priorityImmediate,queueItem((rigCaps->commands.contains(funcSelectedMode)?funcSelectedMode:funcModeSet),QVariant::fromValue<modeInfo>(md),false));
queue->add(priorityImmediate,queueItem((rigCaps->commands.contains(funcSelectedMode)?funcNone:funcDataModeWithFilter),QVariant::fromValue<modeInfo>(md),false));
break;
}
@ -6085,6 +5851,205 @@ void wfmain::receiveElapsed(bool sub, qint64 us)
mainElapsed = us;
}
void wfmain::receiveRigCaps(rigCapabilities* caps)
{
this->rigCaps = caps;
// Convenient place to stop the connection timer as rigCaps has changed.
ConnectionTimer.stop();
//bandbtns->acceptRigCaps(rigCaps);
if(caps == Q_NULLPTR)
{
// Note: This line makes it difficult to accept a different radio connecting.
return;
} else {
showStatusBarText(QString("Found radio at address 0x%1 of name %2 and model ID %3.").arg(rigCaps->civ,2,16).arg(rigCaps->modelName).arg(rigCaps->modelID));
qDebug(logSystem()) << "Rig name: " << rigCaps->modelName;
qDebug(logSystem()) << "Has LAN capabilities: " << rigCaps->hasLan;
qDebug(logSystem()) << "Rig ID received into wfmain: spectLenMax: " << rigCaps->spectLenMax;
qDebug(logSystem()) << "Rig ID received into wfmain: spectAmpMax: " << rigCaps->spectAmpMax;
qDebug(logSystem()) << "Rig ID received into wfmain: spectSeqMax: " << rigCaps->spectSeqMax;
qDebug(logSystem()) << "Rig ID received into wfmain: hasSpectrum: " << rigCaps->hasSpectrum;
configureVFOs(); // Now we have a rig connection, need to configure the VFOs
rigName->setText(rigCaps->modelName);
if (serverConfig.enabled) {
serverConfig.rigs.first()->modelName = rigCaps->modelName;
serverConfig.rigs.first()->rigName = rigCaps->modelName;
serverConfig.rigs.first()->civAddr = rigCaps->civ;
serverConfig.rigs.first()->baudRate = rigCaps->baudRate;
}
setWindowTitle(rigCaps->modelName);
if(rigCaps->hasSpectrum)
{
foreach (auto vfo, vfos)
{
vfo->prepareScope(rigCaps->spectAmpMax, rigCaps->spectLenMax);
}
}
if (rigCaps->bands.size() > 0) {
lastRequestedBand = rigCaps->bands[0].band;
}
// Added so that server receives rig capabilities.
//emit sendRigCaps(rigCaps);
//rpt->setRig(rigCaps);
foreach (auto vfo, vfos) {
// Setup various combo box up for each VFO:
vfo->clearMode();
for (auto &m: rigCaps->modes)
{
//ui->modeSelectCombo->addItem(m.name, m.mk);
vfo->addMode("Mode "+m.name,QVariant::fromValue(m));
}
vfo->clearFilter();
for (auto& f: rigCaps->filters)
{
vfo->addFilter(f.name,f.num);
}
vfo->clearData();
vfo->addData("Data Off",0);
if (rigCaps->commands.contains(funcDATA1Mod))
{
setupui->updateModSourceList(1, rigCaps->inputs);
if (!rigCaps->commands.contains(funcDATA2Mod))
{
vfo->addData("Data On", 2);
}
}
if (rigCaps->commands.contains(funcDATA2Mod))
{
setupui->updateModSourceList(2, rigCaps->inputs);
vfo->addData("Data 1", 2);
vfo->addData("Data 2", 2);
}
if (rigCaps->commands.contains(funcDATA3Mod))
{
setupui->updateModSourceList(3, rigCaps->inputs);
vfo->addData("Data 3", 3);
}
vfo->clearSpans();
if(rigCaps->hasSpectrum)
{
for(unsigned int i=0; i < rigCaps->scopeCenterSpans.size(); i++)
{
vfo->addSpan(rigCaps->scopeCenterSpans.at(i).name, QVariant::fromValue(rigCaps->scopeCenterSpans.at(i)));
}
vfo->setRange(prefs.mainPlotFloor, prefs.mainPlotCeiling);
}
}
// Set the tuning step combo box up:
ui->tuningStepCombo->blockSignals(true);
ui->tuningStepCombo->clear();
for (auto &s: rigCaps->steps)
{
ui->tuningStepCombo->addItem(s.name, s.hz);
}
ui->tuningStepCombo->setCurrentIndex(2);
ui->tuningStepCombo->blockSignals(false);
setupui->updateModSourceList(0, rigCaps->inputs);
ui->attSelCombo->clear();
if(rigCaps->commands.contains(funcAttenuator))
{
ui->attSelCombo->setDisabled(false);
for (auto &att: rigCaps->attenuators)
{
ui->attSelCombo->addItem(((att == 0) ? QString("0 dB") : QString("-%1 dB").arg(att)),att);
}
} else {
ui->attSelCombo->setDisabled(true);
}
ui->preampSelCombo->clear();
if(rigCaps->commands.contains(funcPreamp))
{
ui->preampSelCombo->setDisabled(false);
for (auto &pre: rigCaps->preamps)
{
ui->preampSelCombo->addItem(pre.name, pre.num);
}
} else {
ui->preampSelCombo->setDisabled(true);
}
ui->antennaSelCombo->clear();
if(rigCaps->commands.contains(funcAntenna))
{
ui->antennaSelCombo->setDisabled(false);
for (auto &ant: rigCaps->antennas)
{
ui->antennaSelCombo->addItem(ant.name,ant.num);
}
} else {
ui->antennaSelCombo->setDisabled(true);
}
ui->rxAntennaCheck->setEnabled(rigCaps->commands.contains(funcRXAntenna));
ui->rxAntennaCheck->setChecked(false);
//ui->scopeBWCombo->blockSignals(true);
//ui->scopeBWCombo->clear();
ui->tuneEnableChk->setEnabled(rigCaps->commands.contains(funcTunerStatus));
ui->tuneNowBtn->setEnabled(rigCaps->commands.contains(funcTunerStatus));
ui->memoriesBtn->setEnabled(rigCaps->commands.contains(funcMemoryContents));
//ui->useRTSforPTTchk->setChecked(prefs.forceRTSasPTT);
// ui->audioSystemCombo->setEnabled(false);
//ui->audioSystemServerCombo->setEnabled(false);
ui->connectBtn->setText("Disconnect from Radio"); // We must be connected now.
connStatus = connConnected;
if(usingLAN)
{
ui->afGainSlider->setValue(prefs.localAFgain);
emit sendLevel(funcAfGain,prefs.localAFgain);
}
// Adding these here because clearly at this point we have valid
// rig comms. In the future, we should establish comms and then
// do all the initial grabs. For now, this hack of adding them here and there:
// recalculate command timing now that we know the rig better:
if(prefs.polling_ms != 0)
{
changePollTiming(prefs.polling_ms, true);
} else {
calculateTimingParameters();
}
// Set the second meter here as I suspect we need to be connected for it to work?
changeMeterType(prefs.meter2Type, 2);
changeMeterType(prefs.meter3Type, 3);
ui->meter2Widget->blockMeterType(prefs.meter3Type);
ui->meter3Widget->blockMeterType(prefs.meter2Type);
ui->meter2Widget->setCompReverse(prefs.compMeterReverse);
ui->meter3Widget->setCompReverse(prefs.compMeterReverse);
}
initPeriodicCommands();
getInitialRigState();
}
/* USB Hotplug support added at the end of the file for convenience */
#ifdef USB_HOTPLUG

Wyświetl plik

@ -35,7 +35,7 @@
#include "calibrationwindow.h"
#include "repeatersetup.h"
#include "satellitesetup.h"
#include "transceiveradjustments.h"
//#include "transceiveradjustments.h"
#include "cwsender.h"
#include "bandbuttons.h"
#include "frequencyinputwidget.h"
@ -406,8 +406,7 @@ private slots:
void receivePreamp(unsigned char pre, uchar vfo);
void receiveAttenuator(unsigned char att, uchar vfo);
void receiveAntennaSel(unsigned char ant, bool rx,uchar vfo);
void receiveRigID(rigCapabilities rigCaps);
void receiveFoundRigID(rigCapabilities rigCaps);
void receivePortError(errorType err);
void receiveStatusUpdate(networkStatus status);
void receiveNetworkAudioLevels(networkAudioLevels l);
@ -498,6 +497,8 @@ private slots:
void receiveElapsed(bool sub, qint64 us);
void connectionTimeout();
void receiveRigCaps(rigCapabilities* caps);
private:
Ui::wfmain *ui; // Main UI
@ -712,7 +713,7 @@ private:
int oldFreqDialVal;
QHash<unsigned char,QString> rigList;
rigCapabilities rigCaps;
rigCapabilities* rigCaps = Q_NULLPTR;
rigInput currentModSrc[4];
@ -728,7 +729,7 @@ private:
calibrationWindow *cal = Q_NULLPTR;
repeaterSetup *rpt = Q_NULLPTR;
satelliteSetup *sat = Q_NULLPTR;
transceiverAdjustments *trxadj = Q_NULLPTR;
//transceiverAdjustments *trxadj = Q_NULLPTR;
cwSender *cw = Q_NULLPTR;
controllerSetup* usbWindow = Q_NULLPTR;
aboutbox *abtBox = Q_NULLPTR;

Wyświetl plik

@ -287,7 +287,7 @@ SOURCES += main.cpp\
rigctld.cpp \
usbcontroller.cpp \
controllersetup.cpp \
transceiveradjustments.cpp \
# transceiveradjustments.cpp \
selectradio.cpp \
tcpserver.cpp \
cluster.cpp \
@ -345,7 +345,7 @@ HEADERS += wfmain.h \
ulaw.h \
usbcontroller.h \
controllersetup.h \
transceiveradjustments.h \
# transceiveradjustments.h \
audiotaper.h \
selectradio.h \
tcpserver.h \
@ -368,7 +368,7 @@ FORMS += wfmain.ui \
selectradio.ui \
repeatersetup.ui \
settingswidget.ui \
transceiveradjustments.ui \
# transceiveradjustments.ui \
controllersetup.ui \
aboutbox.ui