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 };