diff --git a/repeatersetup.cpp b/repeatersetup.cpp
index 58c148d..a9e586d 100644
--- a/repeatersetup.cpp
+++ b/repeatersetup.cpp
@@ -50,7 +50,6 @@ void repeaterSetup::setRig(rigCapabilities inRig)
ui->toneTone->setDisabled(true);
ui->toneTSQL->setDisabled(true);
}
-
if(rig.hasDTCS)
{
ui->rptDTCSCombo->setDisabled(false);
@@ -63,6 +62,36 @@ void repeaterSetup::setRig(rigCapabilities inRig)
ui->rptDTCSInvertRx->setDisabled(true);
ui->rptDTCSInvertTx->setDisabled(true);
}
+ if(rig.hasVFOAB)
+ {
+ ui->selABtn->setDisabled(false);
+ ui->selBBtn->setDisabled(false);
+ ui->aEqBBtn->setDisabled(false);
+ ui->swapABBtn->setDisabled(false);
+ } else {
+ ui->selABtn->setDisabled(true);
+ ui->selBBtn->setDisabled(true);
+ ui->aEqBBtn->setDisabled(true);
+ ui->swapABBtn->setDisabled(true);
+ }
+ if(rig.hasVFOMS)
+ {
+ ui->selMainBtn->setDisabled(false);
+ ui->selSubBtn->setDisabled(false);
+ ui->mEqSBtn->setDisabled(false);
+ ui->swapMSBtn->setDisabled(false);
+ } else {
+ ui->selMainBtn->setDisabled(true);
+ ui->selSubBtn->setDisabled(true);
+ ui->mEqSBtn->setDisabled(true);
+ ui->swapMSBtn->setDisabled(true);
+ }
+ if(rig.hasVFOMS && rig.hasVFOAB)
+ {
+ // Rigs that have both AB and MS
+ // do not have a swap AB command.
+ ui->swapABBtn->setDisabled(true);
+ }
}
void repeaterSetup::populateTones()
@@ -594,3 +623,47 @@ void repeaterSetup::on_splitTxFreqSetBtn_clicked()
emit setTransmitMode(modeTransmitVFO);
}
}
+
+void repeaterSetup::on_selABtn_clicked()
+{
+ vfo_t v = vfoA;
+ emit selectVFO(v);
+}
+
+void repeaterSetup::on_selBBtn_clicked()
+{
+ vfo_t v = vfoB;
+ emit selectVFO(v);
+}
+
+void repeaterSetup::on_aEqBBtn_clicked()
+{
+ emit equalizeVFOsAB();
+}
+
+void repeaterSetup::on_swapABBtn_clicked()
+{
+ emit swapVFOs();
+}
+
+void repeaterSetup::on_selMainBtn_clicked()
+{
+ vfo_t v = vfoMain;
+ emit selectVFO(v);
+}
+
+void repeaterSetup::on_selSubBtn_clicked()
+{
+ vfo_t v = vfoSub;
+ emit selectVFO(v);
+}
+
+void repeaterSetup::on_mEqSBtn_clicked()
+{
+ emit equalizeVFOsMS();
+}
+
+void repeaterSetup::on_swapMSBtn_clicked()
+{
+ emit swapVFOs();
+}
diff --git a/repeatersetup.h b/repeatersetup.h
index 73c71c7..eec824e 100644
--- a/repeatersetup.h
+++ b/repeatersetup.h
@@ -38,6 +38,11 @@ signals:
// void setSplitModeEnabled(bool splitEnabled);
void setTransmitFrequency(freqt transmitFreq);
void setTransmitMode(mode_info m);
+ // VFO:
+ void selectVFO(vfo_t v); // A,B,M,S
+ void equalizeVFOsAB();
+ void equalizeVFOsMS();
+ void swapVFOs();
public slots:
void receiveDuplexMode(duplexMode dm);
@@ -72,6 +77,22 @@ private slots:
void on_splitTxFreqSetBtn_clicked();
+ void on_selABtn_clicked();
+
+ void on_selBBtn_clicked();
+
+ void on_aEqBBtn_clicked();
+
+ void on_swapABBtn_clicked();
+
+ void on_selMainBtn_clicked();
+
+ void on_selSubBtn_clicked();
+
+ void on_mEqSBtn_clicked();
+
+ void on_swapMSBtn_clicked();
+
private:
Ui::repeaterSetup *ui;
freqt currentMainFrequency;
diff --git a/repeatersetup.ui b/repeatersetup.ui
index e49f2f2..6f86adf 100644
--- a/repeatersetup.ui
+++ b/repeatersetup.ui
@@ -6,7 +6,7 @@
0
0
- 922
+ 1198
217
@@ -228,6 +228,71 @@
+ -
+
+
+ VFO
+
+
+
-
+
+
+ Swap AB
+
+
+
+ -
+
+
+ Sel Sub
+
+
+
+ -
+
+
+ Sel Main
+
+
+
+ -
+
+
+ Sel B
+
+
+
+ -
+
+
+ Sel A
+
+
+
+ -
+
+
+ A=B
+
+
+
+ -
+
+
+ M=S
+
+
+
+ -
+
+
+ Swap MS
+
+
+
+
+
+
-
diff --git a/rigcommander.cpp b/rigcommander.cpp
index 03ee556..9f0f509 100644
--- a/rigcommander.cpp
+++ b/rigcommander.cpp
@@ -657,6 +657,44 @@ void rigCommander::setFrequency(unsigned char vfo, freqt freq)
prepDataAndSend(cmdPayload);
}
+void rigCommander::selectVFO(vfo_t vfo)
+{
+ // Note, some radios use main/sub,
+ // some use A/B,
+ // and some appear to use both...
+ QByteArray payload;
+
+ char vfoBytes[1];
+ vfoBytes[0] = (unsigned char)vfo;
+
+ payload.setRawData("\x07", 1);
+ payload.append(vfoBytes, 1);
+ prepDataAndSend(payload);
+}
+
+void rigCommander::equalizeVFOsAB()
+{
+ QByteArray payload;
+ payload.setRawData("\x07\xA0", 2);
+ prepDataAndSend(payload);
+}
+
+void rigCommander::equalizeVFOsMS()
+{
+ QByteArray payload;
+ payload.setRawData("\x07\xB1", 2);
+ prepDataAndSend(payload);
+}
+
+void rigCommander::exchangeVFOs()
+{
+ // NB: This command exchanges A-B or M-S
+ // depending upon the radio.
+ QByteArray payload;
+ payload.setRawData("\x07\xB0", 2);
+ prepDataAndSend(payload);
+}
+
QByteArray rigCommander::makeFreqPayload(freqt freq)
{
QByteArray result;
@@ -3333,7 +3371,8 @@ void rigCommander::determineRigCaps()
rigCaps.bands.insert(rigCaps.bands.end(), { bandDef4m, bandDef630m, bandDef2200m, bandDefGen });
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x71");
-
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case modelR8600:
rigCaps.modelName = QString("IC-R8600");
@@ -3371,6 +3410,8 @@ void rigCommander::determineRigCaps()
createMode(modeDCR, 0x21, "DCR")});
rigCaps.scopeCenterSpans.insert(rigCaps.scopeCenterSpans.end(), {createScopeCenter(cs1M, "±1M"), createScopeCenter(cs2p5M, "±2.5M")});
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x92");
+ rigCaps.hasVFOMS = true; // not documented very well
+ rigCaps.hasVFOAB = true; // so we just do both...
break;
case model9700:
rigCaps.modelName = QString("IC-9700");
@@ -3401,6 +3442,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeDV, 0x17, "DV"),
createMode(modeDD, 0x22, "DD")});
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x27");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = true;
break;
case model910h:
rigCaps.modelName = QString("IC-910H");
@@ -3424,6 +3467,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[band2m] = 0x01;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x58");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model7600:
rigCaps.modelName = QString("IC-7600");
@@ -3450,6 +3495,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes.insert(rigCaps.modes.end(), { createMode(modePSK, 0x12, "PSK"),
createMode(modePSK_R, 0x13, "PSK-R") });
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x97");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = false;
break;
case model7610:
rigCaps.modelName = QString("IC-7610");
@@ -3483,6 +3530,9 @@ void rigCommander::determineRigCaps()
createMode(modePSK_R, 0x13, "PSK-R") });
rigCaps.hasRXAntenna = true;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x12");
+ rigCaps.hasSpecifyMainSubCmd = true;
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = false;
break;
case model7850:
rigCaps.modelName = QString("IC-785x");
@@ -3515,6 +3565,9 @@ void rigCommander::determineRigCaps()
createMode(modePSK_R, 0x13, "PSK-R")});
rigCaps.hasRXAntenna = true;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x55");
+ rigCaps.hasSpecifyMainSubCmd = true;
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = false;
break;
case model705:
rigCaps.modelName = QString("IC-705");
@@ -3549,6 +3602,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeWFM, 0x06, "WFM"),
createMode(modeDV, 0x17, "DV")});
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x31");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model7000:
rigCaps.modelName = QString("IC-7000");
@@ -3573,6 +3628,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x13;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x92");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model7410:
rigCaps.modelName = QString("IC-7410");
@@ -3596,6 +3653,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x40");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model7100:
rigCaps.modelName = QString("IC-7100");
@@ -3624,6 +3683,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeWFM, 0x06, "WFM"),
createMode(modeDV, 0x17, "DV")});
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model7200:
rigCaps.modelName = QString("IC-7200");
@@ -3646,6 +3707,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x03\x48");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model7700:
rigCaps.modelName = QString("IC-7700");
@@ -3672,6 +3735,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modePSK, 0x12, "PSK"),
createMode(modePSK_R, 0x13, "PSK-R")});
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model703:
rigCaps.modelName = QString("IC-703");
@@ -3714,6 +3779,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), createMode(modeWFM, 0x06, "WFM"));
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model718:
rigCaps.modelName = QString("IC-718");
@@ -3740,7 +3807,9 @@ void rigCommander::determineRigCaps()
createMode(modeRTTY, 0x04, "RTTY"), createMode(modeRTTY_R, 0x08, "RTTY-R")
};
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
- break;
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
+ break;
case model736:
rigCaps.modelName = QString("IC-736");
rigCaps.rigctlModel = 3020;
@@ -3761,6 +3830,8 @@ void rigCommander::determineRigCaps()
createMode(modeAM, 0x02, "AM"), createMode(modeFM, 0x05, "FM"),
createMode(modeCW, 0x03, "CW"), createMode(modeCW_R, 0x07, "CW-R"),
};
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model737:
rigCaps.modelName = QString("IC-737");
@@ -3782,6 +3853,8 @@ void rigCommander::determineRigCaps()
createMode(modeAM, 0x02, "AM"), createMode(modeFM, 0x05, "FM"),
createMode(modeCW, 0x03, "CW"), createMode(modeCW_R, 0x07, "CW-R"),
};
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model738:
rigCaps.modelName = QString("IC-738");
@@ -3803,6 +3876,8 @@ void rigCommander::determineRigCaps()
createMode(modeAM, 0x02, "AM"), createMode(modeFM, 0x05, "FM"),
createMode(modeCW, 0x03, "CW"), createMode(modeCW_R, 0x07, "CW-R"),
};
+ rigCaps.hasVFOMS = false;
+ rigCaps.hasVFOAB = true;
break;
case model746:
rigCaps.modelName = QString("IC-746");
@@ -3830,6 +3905,8 @@ void rigCommander::determineRigCaps()
rigCaps.bands.push_back(bandDefGen);
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = true;
break;
case model756:
rigCaps.modelName = QString("IC-756");
@@ -3851,6 +3928,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = false;
break;
case model756pro:
rigCaps.modelName = QString("IC-756 Pro");
@@ -3872,6 +3951,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = false;
break;
case model756proii:
rigCaps.modelName = QString("IC-756 Pro II");
@@ -3893,6 +3974,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = false;
break;
case model756proiii:
rigCaps.modelName = QString("IC-756 Pro III");
@@ -3914,6 +3997,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x11;
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = false;
break;
case model9100:
rigCaps.modelName = QString("IC-9100");
@@ -3942,6 +4027,8 @@ void rigCommander::determineRigCaps()
rigCaps.bsr[bandGen] = 0x14;
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeDV, 0x17, "DV")});
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = true;
break;
default:
rigCaps.modelName = QString("IC-0x%1").arg(rigCaps.modelID, 2, 16);
@@ -3964,6 +4051,8 @@ void rigCommander::determineRigCaps()
rigCaps.bands.insert(rigCaps.bands.end(), {bandDef23cm, bandDef4m, bandDef630m, bandDef2200m, bandDefGen});
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
+ rigCaps.hasVFOMS = true;
+ rigCaps.hasVFOAB = true;
qInfo(logRig()) << "Found unknown rig: 0x" << QString("%1").arg(rigCaps.modelID, 2, 16);
break;
}
diff --git a/rigcommander.h b/rigcommander.h
index df5cf0f..0c9c0f3 100644
--- a/rigcommander.h
+++ b/rigcommander.h
@@ -71,6 +71,10 @@ public slots:
// Frequency, Mode, BSR:
void setFrequency(unsigned char vfo, freqt freq);
void getFrequency();
+ void selectVFO(vfo_t vfo);
+ void equalizeVFOsAB();
+ void equalizeVFOsMS();
+ void exchangeVFOs();
void setMode(unsigned char mode, unsigned char modeFilter);
void setMode(mode_info);
void getMode();
diff --git a/rigidentities.h b/rigidentities.h
index 3ea80ea..87f051a 100644
--- a/rigidentities.h
+++ b/rigidentities.h
@@ -147,6 +147,10 @@ struct rigCapabilities {
bool hasRXAntenna;
+ bool hasSpecifyMainSubCmd = false; // 0x29
+ bool hasVFOMS = false;
+ bool hasVFOAB = true; // 0x07 [00||01]
+
std::vector attenuators;
std::vector preamps;
std::vector antennas;
diff --git a/wfmain.cpp b/wfmain.cpp
index 03c716f..38f2fdf 100644
--- a/wfmain.cpp
+++ b/wfmain.cpp
@@ -61,6 +61,7 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
qRegisterMetaType();
qRegisterMetaType();
qRegisterMetaType();
+ qRegisterMetaType();
qRegisterMetaType();
qRegisterMetaType();
qRegisterMetaType();
@@ -343,6 +344,11 @@ void wfmain::rigConnections()
connect(this, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));
connect(this, SIGNAL(getPTT()), rig, SLOT(getPTT()));
+ connect(this, SIGNAL(selectVFO(vfo_t)), rig, SLOT(selectVFO(vfo_t)));
+ connect(this, SIGNAL(sendVFOSwap()), rig, SLOT(exchangeVFOs()));
+ connect(this, SIGNAL(sendVFOEqualAB()), rig, SLOT(equalizeVFOsAB()));
+ connect(this, SIGNAL(sendVFOEqualMS()), rig, SLOT(equalizeVFOsMS()));
+
connect(this, SIGNAL(sendCW(QString)), rig, SLOT(sendCW(QString)));
connect(this, SIGNAL(stopCW()), rig, SLOT(sendStopCW()));
connect(this, SIGNAL(setKeySpeed(unsigned char)), rig, SLOT(setKeySpeed(unsigned char)));
@@ -390,9 +396,16 @@ void wfmain::rigConnections()
connect(rig, SIGNAL(haveRptAccessMode(rptAccessTxRx)), rpt, SLOT(handleRptAccessMode(rptAccessTxRx)));
connect(this->rpt, &repeaterSetup::setTransmitFrequency,
[=](const freqt &transmitFreq) { issueCmd(cmdSetFreq, transmitFreq);});
-
connect(this->rpt, &repeaterSetup::setTransmitMode,
[=](const mode_info &transmitMode) { issueCmd(cmdSetMode, transmitMode);});
+ connect(this->rpt, &repeaterSetup::selectVFO,
+ [=](const vfo_t &v) { issueCmd(cmdSelVFO, v);});
+ connect(this->rpt, &repeaterSetup::equalizeVFOsAB,
+ [=]() { issueDelayedCommand(cmdVFOEqualAB);});
+ connect(this->rpt, &repeaterSetup::equalizeVFOsMS,
+ [=]() { issueDelayedCommand(cmdVFOEqualMS);});
+ connect(this->rpt, &repeaterSetup::swapVFOs,
+ [=]() { issueDelayedCommand(cmdVFOSwap);});
connect(this, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
connect(this, SIGNAL(getPassband()), rig, SLOT(getPassband()));
@@ -403,8 +416,6 @@ void wfmain::rigConnections()
connect(this, SIGNAL(getTone()), rig, SLOT(getTone()));
connect(this, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
connect(this, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode()));
- //connect(this, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
- //connect(rig, SIGNAL(haveDuplexMode(duplexMode)), this, SLOT(receiveDuplexMode(duplexMode)));
connect(this, SIGNAL(getModInput(bool)), rig, SLOT(getModInput(bool)));
connect(rig, SIGNAL(haveModInput(rigInput,bool)), this, SLOT(receiveModInput(rigInput, bool)));
@@ -3603,6 +3614,12 @@ void wfmain::doCmd(commandtype cmddata)
emit setMode(m);
break;
}
+ case cmdSelVFO:
+ {
+ vfo_t v = (*std::static_pointer_cast(data));
+ emit selectVFO(v);
+ break;
+ }
case cmdSetTxPower:
{
unsigned char txpower = (*std::static_pointer_cast(data));
@@ -3786,6 +3803,15 @@ void wfmain::doCmd(cmds cmd)
case cmdGetMode:
emit getMode();
break;
+ case cmdVFOSwap:
+ emit sendVFOSwap();
+ break;
+ case cmdVFOEqualAB:
+ emit sendVFOEqualAB();
+ break;
+ case cmdVFOEqualMS:
+ emit sendVFOEqualMS();
+ break;
case cmdGetDataMode:
if(rigCaps.hasDataModes)
emit getDataMode();
@@ -4004,6 +4030,7 @@ void wfmain::sendRadioCommandLoop()
}
} else if ((!rapidPollCmdQueue.empty()) && rapidPollCmdQueueEnabled)
{
+ qDebug(logSystem()) << "Running rapid poll command.";
int nrCmds = (int)rapidPollCmdQueue.size();
cmds rCmd = rapidPollCmdQueue[(rapidCmdNum++)%nrCmds];
doCmd(rCmd);
@@ -4081,6 +4108,14 @@ void wfmain::issueCmd(cmds cmd, mode_info m)
delayedCmdQue.push_back(cmddata);
}
+void wfmain::issueCmd(cmds cmd, vfo_t v)
+{
+ commandtype cmddata;
+ cmddata.cmd = cmd;
+ cmddata.data = std::shared_ptr(new vfo_t(v));
+ delayedCmdQue.push_back(cmddata);
+}
+
void wfmain::issueCmd(cmds cmd, freqt f)
{
commandtype cmddata;
@@ -4504,6 +4539,11 @@ void wfmain::initPeriodicCommands()
insertPeriodicRapidCmd(cmdGetPassband);
insertPeriodicRapidCmd(cmdGetTPBFInner);
insertPeriodicRapidCmd(cmdGetTPBFOuter);
+
+// insertPeriodicCommand(cmdGetPassband, 128);
+// insertPeriodicCommand(cmdGetTPBFInner, 128);
+// insertPeriodicCommand(cmdGetTPBFOuter, 128);
+
}
rapidPollCmdQueueEnabled = true;
}
diff --git a/wfmain.h b/wfmain.h
index 18166b5..a6f2c63 100644
--- a/wfmain.h
+++ b/wfmain.h
@@ -94,6 +94,10 @@ signals:
void getMode();
void setMode(unsigned char modeIndex, unsigned char modeFilter);
void setMode(mode_info);
+ void selectVFO(vfo_t vfo);
+ void sendVFOSwap();
+ void sendVFOEqualAB();
+ void sendVFOEqualMS();
void setDataMode(bool dataOn, unsigned char filter);
void getDataMode();
void getModInput(bool dataOn);
@@ -908,6 +912,7 @@ private:
void issueCmd(cmds cmd, freqt f);
void issueCmd(cmds cmd, mode_info m);
+ void issueCmd(cmds cmd, vfo_t v);
void issueCmd(cmds cmd, timekind t);
void issueCmd(cmds cmd, datekind d);
void issueCmd(cmds cmd, int i);
@@ -1135,6 +1140,7 @@ Q_DECLARE_METATYPE(enum rigInput)
Q_DECLARE_METATYPE(enum meterKind)
Q_DECLARE_METATYPE(enum spectrumMode)
Q_DECLARE_METATYPE(enum mode_kind)
+Q_DECLARE_METATYPE(enum vfo_t);
Q_DECLARE_METATYPE(QList)
Q_DECLARE_METATYPE(QList)
Q_DECLARE_METATYPE(rigstate*)
diff --git a/wfviewtypes.h b/wfviewtypes.h
index 131989d..04194bd 100644
--- a/wfviewtypes.h
+++ b/wfviewtypes.h
@@ -65,6 +65,13 @@ enum selVFO_t {
inactiveVFO = 1
};
+enum vfo_t {
+ vfoA=0,
+ vfoB=1,
+ vfoMain = 0xD0,
+ vfoSub = 0xD1
+};
+
struct mode_info {
mode_kind mk;
unsigned char reg;
@@ -102,16 +109,18 @@ enum cmds {
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner,
- cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus, cmdGetPassband, cmdSetPassband,
+ cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetPassband, cmdSetPassband,
cmdGetCwPitch, cmdGetPskTone, cmdGetRttyMark, cmdSetCwPitch, cmdSetPskTone, cmdSetRttyMark,
- cmdSetATU, cmdStartATU, cmdGetSpectrumMode,
- cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,cmdPTTToggle,
+ cmdSetATU, cmdStartATU, cmdGetATUStatus,
+ cmdGetSpectrumMode, cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode,
+ cmdGetPTT, cmdSetPTT,cmdPTTToggle,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel,
cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
- cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
+ cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
+ cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
cmdSetTime, cmdSetDate, cmdSetUTCOffset
};