kopia lustrzana https://gitlab.com/eliggett/wfview
Make repeater/split screen use queue directly
rodzic
62c93da216
commit
2277dfee3a
|
@ -7,6 +7,12 @@ repeaterSetup::repeaterSetup(QWidget *parent) :
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
this->setObjectName("RepeaterSetup");
|
||||||
|
queue = cachingQueue::getInstance(this);
|
||||||
|
connect(queue, SIGNAL(rigCapsUpdated(rigCapabilities*)), this, SLOT(receiveRigCaps(rigCapabilities*)));
|
||||||
|
rigCaps = queue->getRigCaps();
|
||||||
|
receiveRigCaps(rigCaps);
|
||||||
|
|
||||||
ui->autoTrackLiveBtn->setEnabled(false); // until we set split enabled.
|
ui->autoTrackLiveBtn->setEnabled(false); // until we set split enabled.
|
||||||
ui->warningFMLabel->setVisible(false);
|
ui->warningFMLabel->setVisible(false);
|
||||||
// populate the CTCSS combo box:
|
// populate the CTCSS combo box:
|
||||||
|
@ -19,103 +25,9 @@ repeaterSetup::repeaterSetup(QWidget *parent) :
|
||||||
repeaterSetup::~repeaterSetup()
|
repeaterSetup::~repeaterSetup()
|
||||||
{
|
{
|
||||||
// Trying this for more consistent destruction
|
// Trying this for more consistent destruction
|
||||||
rig.inputs.clear();
|
|
||||||
rig.preamps.clear();
|
|
||||||
rig.attenuators.clear();
|
|
||||||
rig.antennas.clear();
|
|
||||||
|
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::setRig(rigCapabilities inRig)
|
|
||||||
{
|
|
||||||
this->rig = inRig;
|
|
||||||
haveRig = true;
|
|
||||||
if(rig.commands.contains(funcRepeaterTone)) {
|
|
||||||
ui->rptToneCombo->setDisabled(false);
|
|
||||||
ui->toneTone->setDisabled(false);
|
|
||||||
} else {
|
|
||||||
ui->rptToneCombo->setDisabled(true);
|
|
||||||
ui->toneTone->setDisabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(rig.commands.contains(funcRepeaterTSQL)) {
|
|
||||||
ui->toneTSQL->setDisabled(false);
|
|
||||||
} else {
|
|
||||||
ui->toneTSQL->setDisabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(rig.commands.contains(funcToneSquelchType))
|
|
||||||
{
|
|
||||||
ui->rptToneCombo->setDisabled(false);
|
|
||||||
ui->toneTone->setDisabled(false);
|
|
||||||
ui->toneTSQL->setDisabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(rig.commands.contains(funcRepeaterDTCS))
|
|
||||||
{
|
|
||||||
ui->rptDTCSCombo->setDisabled(false);
|
|
||||||
ui->toneDTCS->setDisabled(false);
|
|
||||||
ui->rptDTCSInvertRx->setDisabled(false);
|
|
||||||
ui->rptDTCSInvertTx->setDisabled(false);
|
|
||||||
} else {
|
|
||||||
ui->rptDTCSCombo->setDisabled(true);
|
|
||||||
ui->toneDTCS->setDisabled(true);
|
|
||||||
ui->rptDTCSInvertRx->setDisabled(true);
|
|
||||||
ui->rptDTCSInvertTx->setDisabled(true);
|
|
||||||
}
|
|
||||||
if(rig.commands.contains(funcVFOEqualAB))
|
|
||||||
{
|
|
||||||
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.commands.contains(funcVFOEqualMS))
|
|
||||||
{
|
|
||||||
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.commands.contains(funcVFOEqualAB) && rig.commands.contains(funcVFOEqualMS))
|
|
||||||
{
|
|
||||||
// Rigs that have both AB and MS
|
|
||||||
// do not have a swap AB command.
|
|
||||||
ui->swapABBtn->setDisabled(true);
|
|
||||||
}
|
|
||||||
bool mainSub = rig.commands.contains(funcVFOMainSelect);
|
|
||||||
if(mainSub)
|
|
||||||
{
|
|
||||||
ui->setRptrSubVFOBtn->setEnabled(true);
|
|
||||||
ui->setToneSubVFOBtn->setEnabled(true);
|
|
||||||
ui->setSplitRptrToneChk->setEnabled(true);
|
|
||||||
} else {
|
|
||||||
ui->setRptrSubVFOBtn->setDisabled(true);
|
|
||||||
ui->setToneSubVFOBtn->setDisabled(true);
|
|
||||||
ui->setSplitRptrToneChk->setDisabled(true);
|
|
||||||
}
|
|
||||||
bool rpt = rig.commands.contains(funcToneSquelchType);
|
|
||||||
ui->rptAutoBtn->setEnabled(rpt);
|
|
||||||
ui->rptDupMinusBtn->setEnabled(rpt);
|
|
||||||
ui->rptDupPlusBtn->setEnabled(rpt);
|
|
||||||
ui->rptSimplexBtn->setEnabled(rpt);
|
|
||||||
ui->rptrOffsetEdit->setEnabled(rpt);
|
|
||||||
ui->rptrOffsetSetBtn->setEnabled(rpt);
|
|
||||||
ui->setToneSubVFOBtn->setEnabled(mainSub);
|
|
||||||
ui->setRptrSubVFOBtn->setEnabled(mainSub);
|
|
||||||
ui->quickSplitChk->setVisible(rig.commands.contains(funcQuickSplit));
|
|
||||||
}
|
|
||||||
|
|
||||||
void repeaterSetup::populateTones()
|
void repeaterSetup::populateTones()
|
||||||
{
|
{
|
||||||
|
@ -461,17 +373,17 @@ void repeaterSetup::handleTransmitStatus(bool amTransmitting)
|
||||||
|
|
||||||
void repeaterSetup::showEvent(QShowEvent *event)
|
void repeaterSetup::showEvent(QShowEvent *event)
|
||||||
{
|
{
|
||||||
emit getDuplexMode();
|
|
||||||
emit getSplitModeEnabled();
|
queue->add(priorityImmediate,funcSplitStatus,false,false);
|
||||||
if(rig.commands.contains(funcToneSquelchType))
|
if(rigCaps->commands.contains(funcToneSquelchType))
|
||||||
emit getRptDuplexOffset();
|
queue->add(priorityImmediate,funcReadFreqOffset,false,false);
|
||||||
QMainWindow::showEvent(event);
|
QMainWindow::showEvent(event);
|
||||||
(void)event;
|
(void)event;
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_splitEnableChk_clicked()
|
void repeaterSetup::on_splitEnableChk_clicked()
|
||||||
{
|
{
|
||||||
emit setDuplexMode(dmSplitOn);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmSplitOn),false));
|
||||||
ui->autoTrackLiveBtn->setEnabled(true);
|
ui->autoTrackLiveBtn->setEnabled(true);
|
||||||
|
|
||||||
if(ui->autoTrackLiveBtn->isChecked() && !ui->splitOffsetEdit->text().isEmpty())
|
if(ui->autoTrackLiveBtn->isChecked() && !ui->splitOffsetEdit->text().isEmpty())
|
||||||
|
@ -487,40 +399,40 @@ void repeaterSetup::on_splitEnableChk_clicked()
|
||||||
|
|
||||||
void repeaterSetup::on_splitOffBtn_clicked()
|
void repeaterSetup::on_splitOffBtn_clicked()
|
||||||
{
|
{
|
||||||
emit setDuplexMode(dmSplitOff);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmSplitOff),false));
|
||||||
ui->autoTrackLiveBtn->setDisabled(true);
|
ui->autoTrackLiveBtn->setDisabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_rptSimplexBtn_clicked()
|
void repeaterSetup::on_rptSimplexBtn_clicked()
|
||||||
{
|
{
|
||||||
// Simplex
|
// Simplex
|
||||||
emit setDuplexMode(dmSplitOff);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmSplitOn),false));
|
||||||
if(rig.commands.contains(funcToneSquelchType))
|
if(rigCaps->commands.contains(funcToneSquelchType))
|
||||||
{
|
{
|
||||||
emit setDuplexMode(dmDupAutoOff);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmDupAutoOff),false));
|
||||||
emit setDuplexMode(dmSimplex);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmSimplex),false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_rptDupPlusBtn_clicked()
|
void repeaterSetup::on_rptDupPlusBtn_clicked()
|
||||||
{
|
{
|
||||||
// DUP+
|
// DUP+
|
||||||
emit setDuplexMode(dmDupAutoOff);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmDupAutoOff),false));
|
||||||
emit setDuplexMode(dmDupPlus);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmDupPlus),false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_rptDupMinusBtn_clicked()
|
void repeaterSetup::on_rptDupMinusBtn_clicked()
|
||||||
{
|
{
|
||||||
// DUP-
|
// DUP-
|
||||||
emit setDuplexMode(dmDupAutoOff);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmDupAutoOff),false));
|
||||||
emit setDuplexMode(dmDupMinus);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmDupMinus),false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_rptAutoBtn_clicked()
|
void repeaterSetup::on_rptAutoBtn_clicked()
|
||||||
{
|
{
|
||||||
// Auto Rptr (enable this feature)
|
// Auto Rptr (enable this feature)
|
||||||
// TODO: Hide an AutoOff button somewhere for non-US users
|
// TODO: Hide an AutoOff button somewhere for non-US users
|
||||||
emit setDuplexMode(dmDupAutoOn);
|
queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(dmDupAutoOn),false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_rptToneCombo_activated(int tindex)
|
void repeaterSetup::on_rptToneCombo_activated(int tindex)
|
||||||
|
@ -532,19 +444,19 @@ void repeaterSetup::on_rptToneCombo_activated(int tindex)
|
||||||
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
if(ui->toneTone->isChecked())
|
if(ui->toneTone->isChecked())
|
||||||
{
|
{
|
||||||
emit setTone(rt);
|
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
if(updateSub)
|
if(updateSub)
|
||||||
{
|
{
|
||||||
rt.useSecondaryVFO = true;
|
rt.useSecondaryVFO = true;
|
||||||
emit setTone(rt);
|
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (ui->toneTSQL->isChecked()) {
|
} else if (ui->toneTSQL->isChecked()) {
|
||||||
emit setTSQL(rt);
|
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
if(updateSub)
|
if(updateSub)
|
||||||
{
|
{
|
||||||
rt.useSecondaryVFO = true;
|
rt.useSecondaryVFO = true;
|
||||||
emit setTone(rt);
|
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -555,7 +467,24 @@ void repeaterSetup::on_rptDTCSCombo_activated(int index)
|
||||||
tone.tinv = ui->rptDTCSInvertTx->isChecked();
|
tone.tinv = ui->rptDTCSInvertTx->isChecked();
|
||||||
tone.rinv = ui->rptDTCSInvertRx->isChecked();
|
tone.rinv = ui->rptDTCSInvertRx->isChecked();
|
||||||
tone.tone = (quint16)ui->rptDTCSCombo->itemData(index).toUInt();
|
tone.tone = (quint16)ui->rptDTCSCombo->itemData(index).toUInt();
|
||||||
emit setDTCS(tone);
|
queue->add(priorityImmediate,queueItem(funcRepeaterDTCS,QVariant::fromValue<toneInfo>(tone),false));
|
||||||
|
}
|
||||||
|
|
||||||
|
void repeaterSetup::setRptAccessMode(rptrAccessData rd)
|
||||||
|
{
|
||||||
|
if (rigCaps->commands.contains(funcToneSquelchType)) {
|
||||||
|
queue->add(priorityImmediate,queueItem(funcToneSquelchType,QVariant::fromValue<rptrAccessData>(rd),false));
|
||||||
|
} else {
|
||||||
|
if(rd.accessMode == ratrTN) {
|
||||||
|
// recuring=false, vfo if rd.useSEcondaryVFO
|
||||||
|
queue->add(priorityImmediate,queueItem(funcRepeaterTone, QVariant::fromValue<bool>(true), false, rd.useSecondaryVFO));
|
||||||
|
} else if (rd.accessMode == ratrTT) {
|
||||||
|
queue->add(priorityImmediate,queueItem(funcRepeaterTSQL, QVariant::fromValue<bool>(true), false, rd.useSecondaryVFO));
|
||||||
|
} else if (rd.accessMode == ratrNN) {
|
||||||
|
queue->add(priorityImmediate,queueItem(funcRepeaterTone, QVariant::fromValue<bool>(false), false, rd.useSecondaryVFO));
|
||||||
|
queue->add(priorityImmediate,queueItem(funcRepeaterTSQL, QVariant::fromValue<bool>(false), false, rd.useSecondaryVFO));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_toneNone_clicked()
|
void repeaterSetup::on_toneNone_clicked()
|
||||||
|
@ -564,13 +493,13 @@ void repeaterSetup::on_toneNone_clicked()
|
||||||
rptrAccessData rd;
|
rptrAccessData rd;
|
||||||
rm = ratrNN;
|
rm = ratrNN;
|
||||||
rd.accessMode = rm;
|
rd.accessMode = rm;
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
|
|
||||||
if(updateSub)
|
if(updateSub)
|
||||||
{
|
{
|
||||||
rd.useSecondaryVFO = true;
|
rd.useSecondaryVFO = true;
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,8 +511,8 @@ void repeaterSetup::on_toneTone_clicked()
|
||||||
rd.accessMode = rm;
|
rd.accessMode = rm;
|
||||||
toneInfo rt;
|
toneInfo rt;
|
||||||
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
emit setTone(rt);
|
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
|
|
||||||
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
|
|
||||||
|
@ -591,8 +520,8 @@ void repeaterSetup::on_toneTone_clicked()
|
||||||
{
|
{
|
||||||
rd.useSecondaryVFO = true;
|
rd.useSecondaryVFO = true;
|
||||||
rt.useSecondaryVFO = true;
|
rt.useSecondaryVFO = true;
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
emit setTone(rt);
|
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -604,16 +533,16 @@ void repeaterSetup::on_toneTSQL_clicked()
|
||||||
toneInfo rt;
|
toneInfo rt;
|
||||||
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
||||||
rd.accessMode = rm;
|
rd.accessMode = rm;
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
emit setTSQL(rt);
|
queue->add(priorityImmediate,queueItem(funcTSQLFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
|
|
||||||
if(updateSub)
|
if(updateSub)
|
||||||
{
|
{
|
||||||
rd.useSecondaryVFO = true;
|
rd.useSecondaryVFO = true;
|
||||||
rt.useSecondaryVFO = true;
|
rt.useSecondaryVFO = true;
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
emit setTSQL(rt);
|
queue->add(priorityImmediate,queueItem(funcTSQLFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -622,12 +551,12 @@ void repeaterSetup::on_toneDTCS_clicked()
|
||||||
rptrAccessData rd;
|
rptrAccessData rd;
|
||||||
|
|
||||||
rd.accessMode = ratrDD;
|
rd.accessMode = ratrDD;
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
toneInfo tone;
|
toneInfo tone;
|
||||||
tone.tinv = ui->rptDTCSInvertTx->isChecked();
|
tone.tinv = ui->rptDTCSInvertTx->isChecked();
|
||||||
tone.rinv = ui->rptDTCSInvertRx->isChecked();
|
tone.rinv = ui->rptDTCSInvertRx->isChecked();
|
||||||
tone.tone = (quint16)ui->rptDTCSCombo->currentData().toUInt();
|
tone.tone = (quint16)ui->rptDTCSCombo->currentData().toUInt();
|
||||||
emit setDTCS(tone);
|
queue->add(priorityImmediate,queueItem(funcRepeaterDTCS,QVariant::fromValue<toneInfo>(tone),false));
|
||||||
// TODO: DTCS with subband
|
// TODO: DTCS with subband
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -721,8 +650,8 @@ void repeaterSetup::on_splitPlusButton_clicked()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(ui->splitEnableChk->isChecked() || ui->quickSplitChk->isChecked()) {
|
if(ui->splitEnableChk->isChecked() || ui->quickSplitChk->isChecked()) {
|
||||||
emit setTransmitFrequency(f);
|
queue->add(priorityImmediate,queueItem(funcSubFreq,QVariant::fromValue<freqt>(f),false));
|
||||||
emit setTransmitMode(modeTransmitVFO);
|
queue->add(priorityImmediate,queueItem(funcModeSet,QVariant::fromValue<modeInfo>(modeTransmitVFO),false));
|
||||||
} else {
|
} else {
|
||||||
qWarning(logRptr()) << "Not setting transmit frequency until split mode is enabled.";
|
qWarning(logRptr()) << "Not setting transmit frequency until split mode is enabled.";
|
||||||
}
|
}
|
||||||
|
@ -753,8 +682,8 @@ void repeaterSetup::on_splitMinusBtn_clicked()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui->splitEnableChk->isChecked() || ui->quickSplitChk->isChecked()) {
|
if(ui->splitEnableChk->isChecked() || ui->quickSplitChk->isChecked()) {
|
||||||
emit setTransmitFrequency(f);
|
queue->add(priorityImmediate,queueItem(funcSubFreq,QVariant::fromValue<freqt>(f),false));
|
||||||
emit setTransmitMode(modeTransmitVFO);
|
queue->add(priorityImmediate,queueItem(funcModeSet,QVariant::fromValue<modeInfo>(modeTransmitVFO),false));
|
||||||
} else {
|
} else {
|
||||||
qWarning(logRptr()) << "Not setting transmit frequency until split mode is enabled.";
|
qWarning(logRptr()) << "Not setting transmit frequency until split mode is enabled.";
|
||||||
return;
|
return;
|
||||||
|
@ -774,8 +703,8 @@ void repeaterSetup::on_splitTxFreqSetBtn_clicked()
|
||||||
f.Hz = fHz;
|
f.Hz = fHz;
|
||||||
f.VFO = inactiveVFO;
|
f.VFO = inactiveVFO;
|
||||||
f.MHzDouble = f.Hz/1E6;
|
f.MHzDouble = f.Hz/1E6;
|
||||||
emit setTransmitFrequency(f);
|
queue->add(priorityImmediate,queueItem(funcSubFreq,QVariant::fromValue<freqt>(f),false));
|
||||||
emit setTransmitMode(modeTransmitVFO);
|
queue->add(priorityImmediate,queueItem(funcModeSet,QVariant::fromValue<modeInfo>(modeTransmitVFO),false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -788,45 +717,45 @@ void repeaterSetup::on_splitTransmitFreqEdit_returnPressed()
|
||||||
void repeaterSetup::on_selABtn_clicked()
|
void repeaterSetup::on_selABtn_clicked()
|
||||||
{
|
{
|
||||||
vfo_t v = vfoA;
|
vfo_t v = vfoA;
|
||||||
emit selectVFO(v);
|
queue->add(priorityImmediate,queueItem(funcSelectVFO,QVariant::fromValue<vfo_t>(v),false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_selBBtn_clicked()
|
void repeaterSetup::on_selBBtn_clicked()
|
||||||
{
|
{
|
||||||
vfo_t v = vfoB;
|
vfo_t v = vfoB;
|
||||||
emit selectVFO(v);
|
queue->add(priorityImmediate,queueItem(funcSelectVFO,QVariant::fromValue<vfo_t>(v),false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_aEqBBtn_clicked()
|
void repeaterSetup::on_aEqBBtn_clicked()
|
||||||
{
|
{
|
||||||
emit equalizeVFOsAB();
|
queue->add(priorityImmediate,funcVFOEqualAB,false,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_swapABBtn_clicked()
|
void repeaterSetup::on_swapABBtn_clicked()
|
||||||
{
|
{
|
||||||
emit swapVFOs();
|
queue->add(priorityImmediate,funcVFOSwapAB,false,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_selMainBtn_clicked()
|
void repeaterSetup::on_selMainBtn_clicked()
|
||||||
{
|
{
|
||||||
vfo_t v = vfoMain;
|
vfo_t v = vfoMain;
|
||||||
emit selectVFO(v);
|
queue->add(priorityImmediate,queueItem(funcSelectVFO,QVariant::fromValue<vfo_t>(v),false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_selSubBtn_clicked()
|
void repeaterSetup::on_selSubBtn_clicked()
|
||||||
{
|
{
|
||||||
vfo_t v = vfoSub;
|
vfo_t v = vfoSub;
|
||||||
emit selectVFO(v);
|
queue->add(priorityImmediate,queueItem(funcSelectVFO,QVariant::fromValue<vfo_t>(v),false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_mEqSBtn_clicked()
|
void repeaterSetup::on_mEqSBtn_clicked()
|
||||||
{
|
{
|
||||||
emit equalizeVFOsMS();
|
queue->add(priorityImmediate,funcVFOEqualMS,false,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_swapMSBtn_clicked()
|
void repeaterSetup::on_swapMSBtn_clicked()
|
||||||
{
|
{
|
||||||
emit swapVFOs();
|
queue->add(priorityImmediate,funcVFOSwapMS,false,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_setToneSubVFOBtn_clicked()
|
void repeaterSetup::on_setToneSubVFOBtn_clicked()
|
||||||
|
@ -837,7 +766,7 @@ void repeaterSetup::on_setToneSubVFOBtn_clicked()
|
||||||
toneInfo rt;
|
toneInfo rt;
|
||||||
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
||||||
rt.useSecondaryVFO = true;
|
rt.useSecondaryVFO = true;
|
||||||
emit setTone(rt);
|
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(rt),false, rt.useSecondaryVFO));
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_setRptrSubVFOBtn_clicked()
|
void repeaterSetup::on_setRptrSubVFOBtn_clicked()
|
||||||
|
@ -856,7 +785,7 @@ void repeaterSetup::on_setRptrSubVFOBtn_clicked()
|
||||||
if(ui->toneDTCS->isChecked())
|
if(ui->toneDTCS->isChecked())
|
||||||
rd.accessMode=ratrDD;
|
rd.accessMode=ratrDD;
|
||||||
|
|
||||||
emit setRptAccessMode(rd);
|
setRptAccessMode(rd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_rptrOffsetSetBtn_clicked()
|
void repeaterSetup::on_rptrOffsetSetBtn_clicked()
|
||||||
|
@ -867,7 +796,7 @@ void repeaterSetup::on_rptrOffsetSetBtn_clicked()
|
||||||
f.VFO=activeVFO;
|
f.VFO=activeVFO;
|
||||||
if(f.Hz != 0)
|
if(f.Hz != 0)
|
||||||
{
|
{
|
||||||
emit setRptDuplexOffset(f);
|
queue->add(priorityImmediate,queueItem(funcSendFreqOffset,QVariant::fromValue<freqt>(f),false));
|
||||||
}
|
}
|
||||||
ui->rptrOffsetEdit->clearFocus();
|
ui->rptrOffsetEdit->clearFocus();
|
||||||
}
|
}
|
||||||
|
@ -888,5 +817,101 @@ void repeaterSetup::on_setSplitRptrToneChk_clicked(bool checked)
|
||||||
|
|
||||||
void repeaterSetup::on_quickSplitChk_clicked(bool checked)
|
void repeaterSetup::on_quickSplitChk_clicked(bool checked)
|
||||||
{
|
{
|
||||||
emit setQuickSplit(checked);
|
queue->add(priorityImmediate,queueItem(funcQuickSplit,QVariant::fromValue<bool>(checked),false));
|
||||||
|
}
|
||||||
|
|
||||||
|
void repeaterSetup::receiveRigCaps(rigCapabilities* rig)
|
||||||
|
{
|
||||||
|
this->rigCaps = rig;
|
||||||
|
if (rig != Q_NULLPTR)
|
||||||
|
{
|
||||||
|
qInfo() << "Got rigcaps for:" << rig->modelName;
|
||||||
|
|
||||||
|
if(rig->commands.contains(funcRepeaterTone)) {
|
||||||
|
ui->rptToneCombo->setDisabled(false);
|
||||||
|
ui->toneTone->setDisabled(false);
|
||||||
|
} else {
|
||||||
|
ui->rptToneCombo->setDisabled(true);
|
||||||
|
ui->toneTone->setDisabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rig->commands.contains(funcRepeaterTSQL)) {
|
||||||
|
ui->toneTSQL->setDisabled(false);
|
||||||
|
} else {
|
||||||
|
ui->toneTSQL->setDisabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rig->commands.contains(funcToneSquelchType))
|
||||||
|
{
|
||||||
|
ui->rptToneCombo->setDisabled(false);
|
||||||
|
ui->toneTone->setDisabled(false);
|
||||||
|
ui->toneTSQL->setDisabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rig->commands.contains(funcRepeaterDTCS))
|
||||||
|
{
|
||||||
|
ui->rptDTCSCombo->setDisabled(false);
|
||||||
|
ui->toneDTCS->setDisabled(false);
|
||||||
|
ui->rptDTCSInvertRx->setDisabled(false);
|
||||||
|
ui->rptDTCSInvertTx->setDisabled(false);
|
||||||
|
} else {
|
||||||
|
ui->rptDTCSCombo->setDisabled(true);
|
||||||
|
ui->toneDTCS->setDisabled(true);
|
||||||
|
ui->rptDTCSInvertRx->setDisabled(true);
|
||||||
|
ui->rptDTCSInvertTx->setDisabled(true);
|
||||||
|
}
|
||||||
|
if(rig->commands.contains(funcVFOEqualAB))
|
||||||
|
{
|
||||||
|
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->commands.contains(funcVFOEqualMS))
|
||||||
|
{
|
||||||
|
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->commands.contains(funcVFOEqualAB) && rig->commands.contains(funcVFOEqualMS))
|
||||||
|
{
|
||||||
|
// Rigs that have both AB and MS
|
||||||
|
// do not have a swap AB command.
|
||||||
|
//ui->swapABBtn->setDisabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool mainSub = rig->commands.contains(funcVFOMainSelect);
|
||||||
|
if(mainSub)
|
||||||
|
{
|
||||||
|
ui->setRptrSubVFOBtn->setEnabled(true);
|
||||||
|
ui->setToneSubVFOBtn->setEnabled(true);
|
||||||
|
ui->setSplitRptrToneChk->setEnabled(true);
|
||||||
|
} else {
|
||||||
|
ui->setRptrSubVFOBtn->setDisabled(true);
|
||||||
|
ui->setToneSubVFOBtn->setDisabled(true);
|
||||||
|
ui->setSplitRptrToneChk->setDisabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool rpt = rig->commands.contains(funcToneSquelchType);
|
||||||
|
ui->rptAutoBtn->setEnabled(rpt);
|
||||||
|
ui->rptDupMinusBtn->setEnabled(rpt);
|
||||||
|
ui->rptDupPlusBtn->setEnabled(rpt);
|
||||||
|
ui->rptSimplexBtn->setEnabled(rpt);
|
||||||
|
ui->rptrOffsetEdit->setEnabled(rpt);
|
||||||
|
ui->rptrOffsetSetBtn->setEnabled(rpt);
|
||||||
|
ui->setToneSubVFOBtn->setEnabled(mainSub);
|
||||||
|
ui->setRptrSubVFOBtn->setEnabled(mainSub);
|
||||||
|
ui->quickSplitChk->setVisible(rig->commands.contains(funcQuickSplit));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include "cachingqueue.h"
|
||||||
#include "repeaterattributes.h"
|
#include "repeaterattributes.h"
|
||||||
#include "rigidentities.h"
|
#include "rigidentities.h"
|
||||||
#include "logcategories.h"
|
#include "logcategories.h"
|
||||||
|
@ -30,7 +31,6 @@ signals:
|
||||||
void getTone();
|
void getTone();
|
||||||
void getTSQL();
|
void getTSQL();
|
||||||
void getDTCS();
|
void getDTCS();
|
||||||
void setRptAccessMode(rptrAccessData rd);
|
|
||||||
void getRptAccessMode();
|
void getRptAccessMode();
|
||||||
void setRptDuplexOffset(freqt f);
|
void setRptDuplexOffset(freqt f);
|
||||||
void getRptDuplexOffset();
|
void getRptDuplexOffset();
|
||||||
|
@ -60,6 +60,8 @@ public slots:
|
||||||
void handleUpdateCurrentMainMode(modeInfo m);
|
void handleUpdateCurrentMainMode(modeInfo m);
|
||||||
void handleTransmitStatus(bool amTransmitting);
|
void handleTransmitStatus(bool amTransmitting);
|
||||||
void handleRptOffsetFrequency(freqt f);
|
void handleRptOffsetFrequency(freqt f);
|
||||||
|
void receiveRigCaps(rigCapabilities* caps);
|
||||||
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void showEvent(QShowEvent *event);
|
void showEvent(QShowEvent *event);
|
||||||
|
@ -101,6 +103,7 @@ private:
|
||||||
void populateDTCS();
|
void populateDTCS();
|
||||||
quint64 getFreqHzFromKHzString(QString khz);
|
quint64 getFreqHzFromKHzString(QString khz);
|
||||||
quint64 getFreqHzFromMHzString(QString MHz);
|
quint64 getFreqHzFromMHzString(QString MHz);
|
||||||
|
void setRptAccessMode(rptrAccessData rd);
|
||||||
|
|
||||||
rigCapabilities rig;
|
rigCapabilities rig;
|
||||||
bool haveRig = false;
|
bool haveRig = false;
|
||||||
|
@ -111,6 +114,8 @@ private:
|
||||||
freqt currentOffset;
|
freqt currentOffset;
|
||||||
bool usedPlusSplit = false;
|
bool usedPlusSplit = false;
|
||||||
bool amTransmitting = false;
|
bool amTransmitting = false;
|
||||||
|
cachingQueue* queue = Q_NULLPTR;
|
||||||
|
rigCapabilities* rigCaps = Q_NULLPTR;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // REPEATERSETUP_H
|
#endif // REPEATERSETUP_H
|
||||||
|
|
48
wfmain.cpp
48
wfmain.cpp
|
@ -513,24 +513,11 @@ void wfmain::makeRig()
|
||||||
//connect(this, SIGNAL(clearMemory(quint32)), rig, SLOT(clearMemory(quint32)));
|
//connect(this, SIGNAL(clearMemory(quint32)), rig, SLOT(clearMemory(quint32)));
|
||||||
//connect(this, SIGNAL(rigCaps->ry(quint32)), rig, SLOT(rigCaps->ry(quint32)));
|
//connect(this, SIGNAL(rigCaps->ry(quint32)), rig, SLOT(rigCaps->ry(quint32)));
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setDuplexMode, this->rig,
|
|
||||||
[=](const duplexMode_t &t) { queue->add(priorityImmediate,queueItem(funcSplitStatus,QVariant::fromValue<duplexMode_t>(t),false));});
|
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::getTone, this->rig,
|
connect(this->rpt, &repeaterSetup::getTone, this->rig,
|
||||||
[=]() {
|
[=]() {
|
||||||
qDebug(logSystem()) << "Asking for TONE";
|
qDebug(logSystem()) << "Asking for TONE";
|
||||||
queue->add(priorityImmediate,funcRepeaterTone,false,false);});
|
queue->add(priorityImmediate,funcRepeaterTone,false,false);});
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setTone, this->rig,
|
|
||||||
[=](const toneInfo& t) {
|
|
||||||
qDebug(logSystem()) << "Setting TONE for VFO, useInactiveVFO= [" << t.useSecondaryVFO << "], tone=" << t.tone;
|
|
||||||
queue->add(priorityImmediate,queueItem(funcToneFreq,QVariant::fromValue<toneInfo>(t),false, t.useSecondaryVFO));});
|
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setTSQL, this->rig,
|
|
||||||
[=](const toneInfo& t) {
|
|
||||||
qDebug(logSystem()) << "Setting TSQL for VFO, useInactiveVFO= [" << t.useSecondaryVFO << "], tone=" << t.tone;
|
|
||||||
queue->add(priorityImmediate,queueItem(funcTSQLFreq,QVariant::fromValue<toneInfo>(t),false, t.useSecondaryVFO));});
|
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::getTSQL, this->rig,
|
connect(this->rpt, &repeaterSetup::getTSQL, this->rig,
|
||||||
[=]() {
|
[=]() {
|
||||||
qDebug(logSystem()) << "Asking for TSQL";
|
qDebug(logSystem()) << "Asking for TSQL";
|
||||||
|
@ -541,12 +528,6 @@ void wfmain::makeRig()
|
||||||
qDebug(logSystem()) << "Setting DCS, code =" << t.tone;
|
qDebug(logSystem()) << "Setting DCS, code =" << t.tone;
|
||||||
queue->add(priorityImmediate,queueItem(funcRepeaterDTCS,QVariant::fromValue<toneInfo>(t),false));});
|
queue->add(priorityImmediate,queueItem(funcRepeaterDTCS,QVariant::fromValue<toneInfo>(t),false));});
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::getDTCS, this->rig,
|
|
||||||
[=]() {
|
|
||||||
qDebug(logSystem()) << "Asking for DCS";
|
|
||||||
queue->add(priorityImmediate,funcRepeaterDTCS,false,false);});
|
|
||||||
|
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::getRptAccessMode, this->rig,
|
connect(this->rpt, &repeaterSetup::getRptAccessMode, this->rig,
|
||||||
[=]() {
|
[=]() {
|
||||||
if (rigCaps->commands.contains(funcToneSquelchType)) {
|
if (rigCaps->commands.contains(funcToneSquelchType)) {
|
||||||
|
@ -557,27 +538,6 @@ void wfmain::makeRig()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setQuickSplit, this->rig,
|
|
||||||
[=](const bool &qsEnabled) {
|
|
||||||
queue->add(priorityImmediate,queueItem(funcQuickSplit,QVariant::fromValue<bool>(qsEnabled),false));
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setRptAccessMode, this->rig,
|
|
||||||
[=](const rptrAccessData &rd) {
|
|
||||||
if (rigCaps->commands.contains(funcToneSquelchType)) {
|
|
||||||
queue->add(priorityImmediate,queueItem(funcToneSquelchType,QVariant::fromValue<rptrAccessData>(rd),false));
|
|
||||||
} else {
|
|
||||||
if(rd.accessMode == ratrTN) {
|
|
||||||
// recuring=false, vfo if rd.useSEcondaryVFO
|
|
||||||
queue->add(priorityImmediate,queueItem(funcRepeaterTone, QVariant::fromValue<bool>(true), false, rd.useSecondaryVFO));
|
|
||||||
} else if (rd.accessMode == ratrTT) {
|
|
||||||
queue->add(priorityImmediate,queueItem(funcRepeaterTSQL, QVariant::fromValue<bool>(true), false, rd.useSecondaryVFO));
|
|
||||||
} else if (rd.accessMode == ratrNN) {
|
|
||||||
queue->add(priorityImmediate,queueItem(funcRepeaterTone, QVariant::fromValue<bool>(false), false, rd.useSecondaryVFO));
|
|
||||||
queue->add(priorityImmediate,queueItem(funcRepeaterTSQL, QVariant::fromValue<bool>(false), false, rd.useSecondaryVFO));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(this->rig, &rigCommander::haveDuplexMode, this->rpt,
|
connect(this->rig, &rigCommander::haveDuplexMode, this->rpt,
|
||||||
[=](const duplexMode_t &dm) {
|
[=](const duplexMode_t &dm) {
|
||||||
|
@ -587,12 +547,6 @@ void wfmain::makeRig()
|
||||||
this->splitModeEnabled = false;
|
this->splitModeEnabled = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setTransmitFrequency, this->rig,
|
|
||||||
[=](const freqt &transmitFreq) { queue->add(priorityImmediate,queueItem(funcSubFreq,QVariant::fromValue<freqt>(transmitFreq),false));});
|
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::setTransmitMode, this->rig,
|
|
||||||
[=](const modeInfo &transmitMode) { queue->add(priorityImmediate,queueItem(funcModeSet,QVariant::fromValue<modeInfo>(transmitMode),false));});
|
|
||||||
|
|
||||||
connect(this->rpt, &repeaterSetup::selectVFO, this->rig,
|
connect(this->rpt, &repeaterSetup::selectVFO, this->rig,
|
||||||
[=](const vfo_t &v) { queue->add(priorityImmediate,queueItem(funcSelectVFO,QVariant::fromValue<vfo_t>(v),false));});
|
[=](const vfo_t &v) { queue->add(priorityImmediate,queueItem(funcSelectVFO,QVariant::fromValue<vfo_t>(v),false));});
|
||||||
|
|
||||||
|
@ -5857,7 +5811,7 @@ void wfmain::receiveRigCaps(rigCapabilities* caps)
|
||||||
|
|
||||||
// Added so that server receives rig capabilities.
|
// Added so that server receives rig capabilities.
|
||||||
//emit sendRigCaps(rigCaps);
|
//emit sendRigCaps(rigCaps);
|
||||||
//rpt->setRig(rigCaps);
|
|
||||||
|
|
||||||
foreach (auto receiver, receivers) {
|
foreach (auto receiver, receivers) {
|
||||||
// Setup various combo box up for each VFO:
|
// Setup various combo box up for each VFO:
|
||||||
|
|
Ładowanie…
Reference in New Issue