Added quicksplit checkbox

failbranch
Elliott Liggett 2023-02-01 09:21:17 -08:00
rodzic bbcc0e4842
commit 156f45d42f
9 zmienionych plików z 71 dodań i 13 usunięć

Wyświetl plik

@ -101,6 +101,7 @@ void repeaterSetup::setRig(rigCapabilities inRig)
ui->rptrOffsetSetBtn->setEnabled(rig.hasRepeaterModes); ui->rptrOffsetSetBtn->setEnabled(rig.hasRepeaterModes);
ui->setToneSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd); ui->setToneSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd);
ui->setRptrSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd); ui->setRptrSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd);
ui->quickSplitChk->setVisible(rig.hasQuickSplitCommand);
} }
void repeaterSetup::populateTones() void repeaterSetup::populateTones()
@ -831,3 +832,8 @@ void repeaterSetup::on_setSplitRptrToneChk_clicked(bool checked)
on_setToneSubVFOBtn_clicked(); on_setToneSubVFOBtn_clicked();
} }
} }
void repeaterSetup::on_quickSplitChk_clicked(bool checked)
{
emit setQuickSplit(checked);
}

Wyświetl plik

@ -35,6 +35,7 @@ signals:
void getRptDuplexOffset(); void getRptDuplexOffset();
// Split: // Split:
void getSplitModeEnabled(); void getSplitModeEnabled();
void setQuickSplit(bool qsOn);
void getTransmitFrequency(); void getTransmitFrequency();
// Use the duplexMode to communicate split. // Use the duplexMode to communicate split.
// void setSplitModeEnabled(bool splitEnabled); // void setSplitModeEnabled(bool splitEnabled);
@ -108,6 +109,8 @@ private slots:
void on_setSplitRptrToneChk_clicked(bool checked); void on_setSplitRptrToneChk_clicked(bool checked);
void on_quickSplitChk_clicked(bool checked);
private: private:
Ui::repeaterSetup *ui; Ui::repeaterSetup *ui;
freqt currentMainFrequency; freqt currentMainFrequency;

Wyświetl plik

@ -151,6 +151,13 @@
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="quickSplitChk">
<property name="text">
<string>QuickSplit</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>

Wyświetl plik

@ -935,6 +935,16 @@ void rigCommander::getDuplexMode()
prepDataAndSend(payload); 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) void rigCommander::setPassband(quint16 pass)
{ {
QByteArray payload; QByteArray payload;
@ -3523,6 +3533,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x71"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x71");
rigCaps.hasVFOMS = false; rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x30");
break; break;
case modelR8600: case modelR8600:
rigCaps.modelName = QString("IC-R8600"); rigCaps.modelName = QString("IC-R8600");
@ -3596,6 +3608,8 @@ void rigCommander::determineRigCaps()
rigCaps.hasVFOMS = true; rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasAdvancedRptrToneCmds = true; rigCaps.hasAdvancedRptrToneCmds = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x43");
break; break;
case model910h: case model910h:
rigCaps.modelName = QString("IC-910H"); rigCaps.modelName = QString("IC-910H");
@ -3650,6 +3664,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x97"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x97");
rigCaps.hasVFOMS = true; rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false; rigCaps.hasVFOAB = false;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x64");
break; break;
case model7610: case model7610:
rigCaps.modelName = QString("IC-7610"); rigCaps.modelName = QString("IC-7610");
@ -3684,6 +3700,8 @@ void rigCommander::determineRigCaps()
rigCaps.hasRXAntenna = true; rigCaps.hasRXAntenna = true;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x12"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x12");
rigCaps.hasSpecifyMainSubCmd = true; rigCaps.hasSpecifyMainSubCmd = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x33");
rigCaps.hasVFOMS = true; rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false; rigCaps.hasVFOAB = false;
break; break;
@ -3719,6 +3737,8 @@ void rigCommander::determineRigCaps()
rigCaps.hasRXAntenna = true; rigCaps.hasRXAntenna = true;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x55"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x55");
rigCaps.hasSpecifyMainSubCmd = true; rigCaps.hasSpecifyMainSubCmd = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x01\x13");
rigCaps.hasVFOMS = true; rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false; rigCaps.hasVFOAB = false;
break; break;
@ -3758,6 +3778,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x31"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x01\x31");
rigCaps.hasVFOMS = false; rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x45");
break; break;
case model7000: case model7000:
rigCaps.modelName = QString("IC-7000"); rigCaps.modelName = QString("IC-7000");
@ -3784,6 +3806,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x92"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x92");
rigCaps.hasVFOMS = false; rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x52");
break; break;
case model7410: case model7410:
rigCaps.modelName = QString("IC-7410"); rigCaps.modelName = QString("IC-7410");
@ -3809,6 +3833,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x40"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x40");
rigCaps.hasVFOMS = false; rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x11");
break; break;
case model7100: case model7100:
rigCaps.modelName = QString("IC-7100"); rigCaps.modelName = QString("IC-7100");
@ -3840,6 +3866,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95");
rigCaps.hasVFOMS = false; rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x15");
break; break;
case model7200: case model7200:
rigCaps.modelName = QString("IC-7200"); rigCaps.modelName = QString("IC-7200");
@ -3864,6 +3892,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x03\x48"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x03\x48");
rigCaps.hasVFOMS = false; rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x03\x18");
break; break;
case model7700: case model7700:
rigCaps.modelName = QString("IC-7700"); rigCaps.modelName = QString("IC-7700");
@ -3892,6 +3922,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x95");
rigCaps.hasVFOMS = false; rigCaps.hasVFOMS = false;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x67");
break; break;
case model703: case model703:
rigCaps.modelName = QString("IC-703"); rigCaps.modelName = QString("IC-703");
@ -4132,6 +4164,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
rigCaps.hasVFOMS = true; rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false; rigCaps.hasVFOAB = false;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x24");
break; break;
case model756proiii: case model756proiii:
rigCaps.modelName = QString("IC-756 Pro III"); rigCaps.modelName = QString("IC-756 Pro III");
@ -4155,6 +4189,8 @@ void rigCommander::determineRigCaps()
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00"); rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
rigCaps.hasVFOMS = true; rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = false; rigCaps.hasVFOAB = false;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x24");
break; break;
case model9100: case model9100:
rigCaps.modelName = QString("IC-9100"); rigCaps.modelName = QString("IC-9100");
@ -4186,6 +4222,8 @@ void rigCommander::determineRigCaps()
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeDV, 0x17, "DV")}); rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeDV, 0x17, "DV")});
rigCaps.hasVFOMS = true; rigCaps.hasVFOMS = true;
rigCaps.hasVFOAB = true; rigCaps.hasVFOAB = true;
rigCaps.hasQuickSplitCommand = true;
rigCaps.quickSplitCommand = QByteArrayLiteral("\x1a\x05\x00\x14");
break; break;
default: default:
rigCaps.modelName = QString("IC-0x%1").arg(rigCaps.modelID, 2, 16); rigCaps.modelName = QString("IC-0x%1").arg(rigCaps.modelID, 2, 16);

Wyświetl plik

@ -137,6 +137,7 @@ public slots:
// Repeater: // Repeater:
void setDuplexMode(duplexMode dm); void setDuplexMode(duplexMode dm);
void getDuplexMode(); void getDuplexMode();
void setQuickSplit(bool qsOn);
void getTransmitFrequency(); void getTransmitFrequency();
void setTone(rptrTone_t t); void setTone(rptrTone_t t);
void setTSQL(rptrTone_t t); void setTSQL(rptrTone_t t);

Wyświetl plik

@ -153,6 +153,8 @@ struct rigCapabilities {
bool hasVFOAB = true; // 0x07 [00||01] bool hasVFOAB = true; // 0x07 [00||01]
bool hasAdvancedRptrToneCmds = false; bool hasAdvancedRptrToneCmds = false;
bool hasQuickSplitCommand = false;
QByteArray quickSplitCommand;
std::vector <unsigned char> attenuators; std::vector <unsigned char> attenuators;
std::vector <unsigned char> preamps; std::vector <unsigned char> preamps;

Wyświetl plik

@ -415,18 +415,12 @@ void wfmain::rigConnections()
} }
}); });
// How to understand the reply of getToneEnabled, getTSQLEnabled connect(this->rpt, &repeaterSetup::setQuickSplit,
// ...... [=](const bool &qsEnabled) {
// it's currently only read into rigState. issueCmd(cmdSetQuickSplit, qsEnabled);
// 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, SIGNAL(setQuickSplit(bool)), rig, SLOT(setQuickSplit(bool)));
//connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
connect(this->rpt, &repeaterSetup::setRptAccessMode, connect(this->rpt, &repeaterSetup::setRptAccessMode,
[=](const rptrAccessData_t &rd) { [=](const rptrAccessData_t &rd) {
@ -453,7 +447,7 @@ void wfmain::rigConnections()
connect(this, SIGNAL(getTSQLEnabled()), rig, SLOT(getToneSqlEnabled())); connect(this, SIGNAL(getTSQLEnabled()), rig, SLOT(getToneSqlEnabled()));
connect(this->rpt, &repeaterSetup::setTransmitFrequency, connect(this->rpt, &repeaterSetup::setTransmitFrequency,
[=](const freqt &transmitFreq) { issueCmd(cmdSetFreq, transmitFreq);}); [=](const freqt &transmitFreq) { issueCmdUniquePriority(cmdSetFreq, transmitFreq);});
connect(this->rpt, &repeaterSetup::setTransmitMode, connect(this->rpt, &repeaterSetup::setTransmitMode,
[=](const mode_info &transmitMode) { issueCmd(cmdSetMode, transmitMode);}); [=](const mode_info &transmitMode) { issueCmd(cmdSetMode, transmitMode);});
connect(this->rpt, &repeaterSetup::selectVFO, connect(this->rpt, &repeaterSetup::selectVFO,
@ -3825,6 +3819,12 @@ void wfmain::doCmd(commandtype cmddata)
emit setRptDuplexOffset(f); emit setRptDuplexOffset(f);
break; break;
} }
case cmdSetQuickSplit:
{
bool qsEnabled = (*std::static_pointer_cast<bool>(data));
emit setQuickSplit(qsEnabled);
break;
}
case cmdSetPTT: case cmdSetPTT:
{ {
bool pttrequest = (*std::static_pointer_cast<bool>(data)); bool pttrequest = (*std::static_pointer_cast<bool>(data));

Wyświetl plik

@ -111,6 +111,7 @@ signals:
// Repeater: // Repeater:
void getDuplexMode(); void getDuplexMode();
void setQuickSplit(bool qsOn);
void getTone(); void getTone();
void getTSQL(); void getTSQL();
void getDTCS(); void getDTCS();

Wyświetl plik

@ -164,7 +164,7 @@ enum cmds {
cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS, cmdGetTone, cmdGetTSQL, cmdGetToneEnabled, cmdGetTSQLEnabled, cmdGetDTCS,
cmdSetToneEnabled, cmdSetTSQLEnabled, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL, cmdSetToneEnabled, cmdSetTSQLEnabled, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL,
cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset, cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdSetQuickSplit,
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW, cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
cmdSetTime, cmdSetDate, cmdSetUTCOffset, cmdSetTime, cmdSetDate, cmdSetUTCOffset,