kopia lustrzana https://gitlab.com/eliggett/wfview
Added MS and AB VFO operations.
rodzic
be0aee6183
commit
f660681c53
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>922</width>
|
||||
<width>1198</width>
|
||||
<height>217</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -228,6 +228,71 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>VFO</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="swapABBtn">
|
||||
<property name="text">
|
||||
<string>Swap AB</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="selSubBtn">
|
||||
<property name="text">
|
||||
<string>Sel Sub</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QPushButton" name="selMainBtn">
|
||||
<property name="text">
|
||||
<string>Sel Main</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="selBBtn">
|
||||
<property name="text">
|
||||
<string>Sel B</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="selABtn">
|
||||
<property name="text">
|
||||
<string>Sel A</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="aEqBBtn">
|
||||
<property name="text">
|
||||
<string>A=B</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QPushButton" name="mEqSBtn">
|
||||
<property name="text">
|
||||
<string>M=S</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="swapMSBtn">
|
||||
<property name="text">
|
||||
<string>Swap MS</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
|
|
|
@ -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,6 +3807,8 @@ void rigCommander::determineRigCaps()
|
|||
createMode(modeRTTY, 0x04, "RTTY"), createMode(modeRTTY_R, 0x08, "RTTY-R")
|
||||
};
|
||||
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
|
||||
rigCaps.hasVFOMS = false;
|
||||
rigCaps.hasVFOAB = true;
|
||||
break;
|
||||
case model736:
|
||||
rigCaps.modelName = QString("IC-736");
|
||||
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -147,6 +147,10 @@ struct rigCapabilities {
|
|||
|
||||
bool hasRXAntenna;
|
||||
|
||||
bool hasSpecifyMainSubCmd = false; // 0x29
|
||||
bool hasVFOMS = false;
|
||||
bool hasVFOAB = true; // 0x07 [00||01]
|
||||
|
||||
std::vector <unsigned char> attenuators;
|
||||
std::vector <unsigned char> preamps;
|
||||
std::vector <unsigned char> antennas;
|
||||
|
|
46
wfmain.cpp
46
wfmain.cpp
|
@ -61,6 +61,7 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
|
|||
qRegisterMetaType<meterKind>();
|
||||
qRegisterMetaType<spectrumMode>();
|
||||
qRegisterMetaType<freqt>();
|
||||
qRegisterMetaType<vfo_t>();
|
||||
qRegisterMetaType<mode_info>();
|
||||
qRegisterMetaType<mode_kind>();
|
||||
qRegisterMetaType<audioPacket>();
|
||||
|
@ -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<vfo_t>(data));
|
||||
emit selectVFO(v);
|
||||
break;
|
||||
}
|
||||
case cmdSetTxPower:
|
||||
{
|
||||
unsigned char txpower = (*std::static_pointer_cast<unsigned char>(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<vfo_t>(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;
|
||||
}
|
||||
|
|
6
wfmain.h
6
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<radio_cap_packet>)
|
||||
Q_DECLARE_METATYPE(QList<spotData>)
|
||||
Q_DECLARE_METATYPE(rigstate*)
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
Ładowanie…
Reference in New Issue