diff --git a/bandbuttons.cpp b/bandbuttons.cpp index ca7ebfc..1798b58 100644 --- a/bandbuttons.cpp +++ b/bandbuttons.cpp @@ -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(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(f),false,false)); + break; + } } } } diff --git a/bandbuttons.h b/bandbuttons.h index b34b87d..1e30846 100644 --- a/bandbuttons.h +++ b/bandbuttons.h @@ -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; }; diff --git a/cachingqueue.h b/cachingqueue.h index d8fb282..22b3b16 100644 --- a/cachingqueue.h +++ b/cachingqueue.h @@ -118,7 +118,7 @@ public: QMultiMap 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; } }; diff --git a/memories.cpp b/memories.cpp index 8951794..6bee685 100644 --- a/memories.cpp +++ b/memories.cpp @@ -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((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(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(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 parser; + queue->add(priorityImmediate,queueItem(funcSatelliteMode,QVariant::fromValue(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(lastMemoryRequested & 0xffff))); + }); } else { - emit getSatMemory(lastMemoryRequested); + queue->add(priorityImmediate,queueItem(funcSatelliteMemory,QVariant::fromValue(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(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(band.band))); } } - emit getMemory(lastMemoryRequested); + queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue(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(lastMemoryRequested & 0xffff))); else - emit getMemory(lastMemoryRequested); + queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue(lastMemoryRequested))); timeoutTimer.start(MEMORY_TIMEOUT); } else if (mem.channel == groupMemories) @@ -946,7 +967,8 @@ void memories::receiveMemory(memoryType mem) for (int n = 0; ntable->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(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;imodes.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(mem.channel & 0xffff))); + } else { + queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue(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(lastMemoryRequested & 0xffff))); + } else { + queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue(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(quint32((ui->group->currentData().toUInt() << 16) | row[0].toInt())))); + }); } // rownum is now the row we need to work on. diff --git a/memories.h b/memories.h index 3350e9b..f23073c 100644 --- a/memories.h +++ b/memories.h @@ -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; diff --git a/pttyhandler.cpp b/pttyhandler.cpp index 909a0b9..5fcc21f 100644 --- a/pttyhandler.cpp +++ b/pttyhandler.cpp @@ -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; } - diff --git a/pttyhandler.h b/pttyhandler.h index dda18ac..b9e510b 100644 --- a/pttyhandler.h +++ b/pttyhandler.h @@ -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 diff --git a/rigcommander.cpp b/rigcommander.cpp index 2b7a431..79321d4 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -95,8 +95,6 @@ void rigCommander::commSetup(QHash 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 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)), this, SLOT(radioSelection(QList))); 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))); diff --git a/rigctld.cpp b/rigctld.cpp index 54f7fdd..8c9bc6c 100644 --- a/rigctld.cpp +++ b/rigctld.cpp @@ -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; } diff --git a/rigctld.h b/rigctld.h index 3b43dd5..9306a7c 100644 --- a/rigctld.h +++ b/rigctld.h @@ -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]; diff --git a/transceiveradjustments.cpp b/transceiveradjustments.cpp index 413814e..c480c78 100644 --- a/transceiveradjustments.cpp +++ b/transceiveradjustments.cpp @@ -33,11 +33,6 @@ transceiverAdjustments::transceiverAdjustments(QWidget *parent) : transceiverAdjustments::~transceiverAdjustments() { - rigCaps.inputs.clear(); - rigCaps.preamps.clear(); - rigCaps.attenuators.clear(); - rigCaps.antennas.clear(); - delete ui; } diff --git a/usbcontroller.cpp b/usbcontroller.cpp index 3e715ed..ff9e0db 100644 --- a/usbcontroller.cpp +++ b/usbcontroller.cpp @@ -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 diff --git a/wfmain.cpp b/wfmain.cpp index 0ff62a7..3a51374 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -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(); qRegisterMetaType(); - 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(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(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;inumVFO;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(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;vnumVFO;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(m),false)); - if (!rigCaps.commands.contains(funcSelectedMode)) + queue->add(priorityImmediate,queueItem((rigCaps->commands.contains(funcSelectedMode)?funcSelectedMode:funcModeGet),QVariant::fromValue(m),false)); + if (!rigCaps->commands.contains(funcSelectedMode)) queue->add(priorityImmediate,queueItem(funcDataModeWithFilter,QVariant::fromValue(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(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(md),false)); - queue->add(priorityImmediate,queueItem((rigCaps.commands.contains(funcSelectedMode)?funcNone:funcDataModeWithFilter),QVariant::fromValue(md),false)); + queue->add(priorityImmediate,queueItem((rigCaps->commands.contains(funcSelectedMode)?funcSelectedMode:funcModeSet),QVariant::fromValue(md),false)); + queue->add(priorityImmediate,queueItem((rigCaps->commands.contains(funcSelectedMode)?funcNone:funcDataModeWithFilter),QVariant::fromValue(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 diff --git a/wfmain.h b/wfmain.h index cf5cd36..bb5585d 100644 --- a/wfmain.h +++ b/wfmain.h @@ -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 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; diff --git a/wfview.pro b/wfview.pro index af912e3..224fc96 100644 --- a/wfview.pro +++ b/wfview.pro @@ -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