diff --git a/repeatersetup.cpp b/repeatersetup.cpp
index a384dac..6af089f 100644
--- a/repeatersetup.cpp
+++ b/repeatersetup.cpp
@@ -101,6 +101,7 @@ void repeaterSetup::setRig(rigCapabilities inRig)
ui->rptrOffsetSetBtn->setEnabled(rig.hasRepeaterModes);
ui->setToneSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd);
ui->setRptrSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd);
+ ui->quickSplitChk->setVisible(rig.hasQuickSplitCommand);
}
void repeaterSetup::populateTones()
@@ -831,3 +832,8 @@ void repeaterSetup::on_setSplitRptrToneChk_clicked(bool checked)
on_setToneSubVFOBtn_clicked();
}
}
+
+void repeaterSetup::on_quickSplitChk_clicked(bool checked)
+{
+ emit setQuickSplit(checked);
+}
diff --git a/repeatersetup.h b/repeatersetup.h
index c9e2f47..52650e3 100644
--- a/repeatersetup.h
+++ b/repeatersetup.h
@@ -35,6 +35,7 @@ signals:
void getRptDuplexOffset();
// Split:
void getSplitModeEnabled();
+ void setQuickSplit(bool qsOn);
void getTransmitFrequency();
// Use the duplexMode to communicate split.
// void setSplitModeEnabled(bool splitEnabled);
@@ -108,6 +109,8 @@ private slots:
void on_setSplitRptrToneChk_clicked(bool checked);
+ void on_quickSplitChk_clicked(bool checked);
+
private:
Ui::repeaterSetup *ui;
freqt currentMainFrequency;
diff --git a/repeatersetup.ui b/repeatersetup.ui
index d418873..fd73983 100644
--- a/repeatersetup.ui
+++ b/repeatersetup.ui
@@ -151,6 +151,13 @@
+ -
+
+
+ QuickSplit
+
+
+
-
diff --git a/rigcommander.cpp b/rigcommander.cpp
index bb4b362..2972733 100644
--- a/rigcommander.cpp
+++ b/rigcommander.cpp
@@ -935,6 +935,16 @@ void rigCommander::getDuplexMode()
prepDataAndSend(payload);
}
+void rigCommander::setQuickSplit(bool qsOn)
+{
+ if(rigCaps.hasQuickSplitCommand)
+ {
+ QByteArray payload = rigCaps.quickSplitCommand;
+ payload.append((unsigned char)qsOn);
+ prepDataAndSend(payload);
+ }
+}
+
void rigCommander::setPassband(quint16 pass)
{
QByteArray payload;
@@ -3523,6 +3533,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x71");
rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x30");
break;
case modelR8600:
rigCaps.modelName = QString("IC-R8600");
@@ -3596,6 +3608,8 @@ void rigCommander::determineRigCaps()
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = true;
rigCaps.hasAdvancedRptrToneCmds = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x43");
break;
case model910h:
rigCaps.modelName = QString("IC-910H");
@@ -3650,6 +3664,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x97");
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x64");
break;
case model7610:
rigCaps.modelName = QString("IC-7610");
@@ -3684,6 +3700,8 @@ void rigCommander::determineRigCaps()
rigCaps.hasRXAntenna = true;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x12");
rigCaps.hasSpecifyMainSubCmd = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x33");
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false;
break;
@@ -3719,6 +3737,8 @@ void rigCommander::determineRigCaps()
rigCaps.hasRXAntenna = true;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x55");
rigCaps.hasSpecifyMainSubCmd = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x01\x13");
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false;
break;
@@ -3758,6 +3778,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x31");
rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x45");
break;
case model7000:
rigCaps.modelName = QString("IC-7000");
@@ -3784,6 +3806,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x92");
rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x52");
break;
case model7410:
rigCaps.modelName = QString("IC-7410");
@@ -3809,6 +3833,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x40");
rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x11");
break;
case model7100:
rigCaps.modelName = QString("IC-7100");
@@ -3840,6 +3866,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95");
rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x15");
break;
case model7200:
rigCaps.modelName = QString("IC-7200");
@@ -3864,6 +3892,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x03\x48");
rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x03\x18");
break;
case model7700:
rigCaps.modelName = QString("IC-7700");
@@ -3892,6 +3922,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95");
rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x67");
break;
case model703:
rigCaps.modelName = QString("IC-703");
@@ -4132,6 +4164,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x24");
break;
case model756proiii:
rigCaps.modelName = QString("IC-756 Pro III");
@@ -4155,6 +4189,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x24");
break;
case model9100:
rigCaps.modelName = QString("IC-9100");
@@ -4186,6 +4222,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeDV, 0x17, "DV")});
rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = true;
+ rigCaps.hasQuickSplitCommand = true;
+ rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x14");
break;
default:
rigCaps.modelName = QString("IC-0x%1").arg(rigCaps.modelID, 2, 16);
diff --git a/rigcommander.h b/rigcommander.h
index b55c7ae..740fda3 100644
--- a/rigcommander.h
+++ b/rigcommander.h
@@ -137,6 +137,7 @@ public slots:
// Repeater:
void setDuplexMode(duplexMode dm);
void getDuplexMode();
+ void setQuickSplit(bool qsOn);
void getTransmitFrequency();
void setTone(rptrTone_t t);
void setTSQL(rptrTone_t t);
diff --git a/rigidentities.h b/rigidentities.h
index 3a985fe..8202506 100644
--- a/rigidentities.h
+++ b/rigidentities.h
@@ -153,6 +153,8 @@ struct rigCapabilities {
bool hasVFOAB = true; // 0x07 [00||01]
bool hasAdvancedRptrToneCmds = false;
+ bool hasQuickSplitCommand = false;
+ QByteArray quickSplitCommand;
std::vector attenuators;
std::vector preamps;
diff --git a/wfmain.cpp b/wfmain.cpp
index 154fc02..75d1c77 100644
--- a/wfmain.cpp
+++ b/wfmain.cpp
@@ -415,18 +415,12 @@ void wfmain::rigConnections()
}
});
- // How to understand the reply of getToneEnabled, getTSQLEnabled
- // ......
- // it's currently only read into rigState.
- // We could emit a signal from rigCommander, turn it into
- // a rptrAccess data type and feed that to rptr.
- // But there will be two replies, and we need to somehow
- // understand both before forming a sensible reply to
- // the rptr setup.
- // If we don't care, then it just works but we don't know the current state.
+ connect(this->rpt, &repeaterSetup::setQuickSplit,
+ [=](const bool &qsEnabled) {
+ issueCmd(cmdSetQuickSplit, qsEnabled);
+ });
-
- //connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
+ connect(this, SIGNAL(setQuickSplit(bool)), rig, SLOT(setQuickSplit(bool)));
connect(this->rpt, &repeaterSetup::setRptAccessMode,
[=](const rptrAccessData_t &rd) {
@@ -453,7 +447,7 @@ void wfmain::rigConnections()
connect(this, SIGNAL(getTSQLEnabled()), rig, SLOT(getToneSqlEnabled()));
connect(this->rpt, &repeaterSetup::setTransmitFrequency,
- [=](const freqt &transmitFreq) { issueCmd(cmdSetFreq, transmitFreq);});
+ [=](const freqt &transmitFreq) { issueCmdUniquePriority(cmdSetFreq, transmitFreq);});
connect(this->rpt, &repeaterSetup::setTransmitMode,
[=](const mode_info &transmitMode) { issueCmd(cmdSetMode, transmitMode);});
connect(this->rpt, &repeaterSetup::selectVFO,
@@ -3825,6 +3819,12 @@ void wfmain::doCmd(commandtype cmddata)
emit setRptDuplexOffset(f);
break;
}
+ case cmdSetQuickSplit:
+ {
+ bool qsEnabled = (*std::static_pointer_cast(data));
+ emit setQuickSplit(qsEnabled);
+ break;
+ }
case cmdSetPTT:
{
bool pttrequest = (*std::static_pointer_cast(data));
diff --git a/wfmain.h b/wfmain.h
index c1a4445..de8ccf4 100644
--- a/wfmain.h
+++ b/wfmain.h
@@ -111,6 +111,7 @@ signals:
// Repeater:
void getDuplexMode();
+ void setQuickSplit(bool qsOn);
void getTone();
void getTSQL();
void getDTCS();
diff --git a/wfviewtypes.h b/wfviewtypes.h
index 6fb4a72..0251363 100644
--- a/wfviewtypes.h
+++ b/wfviewtypes.h
@@ -164,7 +164,7 @@ enum cmds {
cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS,
cmdSetToneEnabled, cmdSetTSQLEnabled, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL,
cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
- cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
+ cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdSetQuickSplit,
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
cmdSetTime, cmdSetDate, cmdSetUTCOffset,