kopia lustrzana https://gitlab.com/eliggett/wfview
Working manual repeater offset, split, tones, tones on sub vfo, etc!
rodzic
8903c7cb07
commit
6976120d48
|
@ -16,11 +16,9 @@ repeaterSetup::repeaterSetup(QWidget *parent) :
|
|||
#ifdef QT_DEBUG
|
||||
ui->debugBtn->setVisible(true);
|
||||
ui->rptReadRigBtn->setVisible(true);
|
||||
ui->rptOffsetBtn->setVisible(true);
|
||||
#else
|
||||
ui->debugBtn->setVisible(false);
|
||||
ui->rptReadRigBtn->setVisible(false);
|
||||
ui->rptOffsetBtn->setVisible(false);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
@ -102,6 +100,14 @@ void repeaterSetup::setRig(rigCapabilities inRig)
|
|||
ui->setToneSubVFOBtn->setDisabled(true);
|
||||
ui->setSplitRptrToneChk->setDisabled(true);
|
||||
}
|
||||
ui->rptAutoBtn->setEnabled(rig.hasRepeaterModes);
|
||||
ui->rptDupMinusBtn->setEnabled(rig.hasRepeaterModes);
|
||||
ui->rptDupPlusBtn->setEnabled(rig.hasRepeaterModes);
|
||||
ui->rptSimplexBtn->setEnabled(rig.hasRepeaterModes);
|
||||
ui->rptrOffsetEdit->setEnabled(rig.hasRepeaterModes);
|
||||
ui->rptrOffsetSetBtn->setEnabled(rig.hasRepeaterModes);
|
||||
ui->setToneSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd);
|
||||
ui->setRptrSubVFOBtn->setEnabled(rig.hasSpecifyMainSubCmd);
|
||||
}
|
||||
|
||||
void repeaterSetup::populateTones()
|
||||
|
@ -280,7 +286,7 @@ void repeaterSetup::receiveDuplexMode(duplexMode dm)
|
|||
switch(dm)
|
||||
{
|
||||
case dmSplitOff:
|
||||
ui->splitEnableChk->setChecked(false);
|
||||
//ui->splitEnableChk->setChecked(false);
|
||||
ui->autoTrackLiveBtn->setChecked(false);
|
||||
break;
|
||||
case dmSplitOn:
|
||||
|
@ -291,17 +297,17 @@ void repeaterSetup::receiveDuplexMode(duplexMode dm)
|
|||
break;
|
||||
case dmSimplex:
|
||||
ui->rptSimplexBtn->setChecked(true);
|
||||
ui->splitEnableChk->setChecked(false);
|
||||
//ui->splitEnableChk->setChecked(false);
|
||||
ui->autoTrackLiveBtn->setChecked(false);
|
||||
break;
|
||||
case dmDupPlus:
|
||||
ui->rptDupPlusBtn->setChecked(true);
|
||||
ui->splitEnableChk->setChecked(false);
|
||||
//ui->splitEnableChk->setChecked(false);
|
||||
ui->autoTrackLiveBtn->setChecked(false);
|
||||
break;
|
||||
case dmDupMinus:
|
||||
ui->rptDupMinusBtn->setChecked(true);
|
||||
ui->splitEnableChk->setChecked(false);
|
||||
//ui->splitEnableChk->setChecked(false);
|
||||
ui->autoTrackLiveBtn->setChecked(false);
|
||||
break;
|
||||
default:
|
||||
|
@ -395,6 +401,12 @@ void repeaterSetup::handleUpdateCurrentMainMode(mode_info m)
|
|||
}
|
||||
}
|
||||
|
||||
void repeaterSetup::handleRptOffsetFrequency(freqt f)
|
||||
{
|
||||
QString offsetstr = QString::number(f.Hz / double(1E6), 'f', 4);
|
||||
ui->rptrOffsetEdit->setText(offsetstr);
|
||||
}
|
||||
|
||||
void repeaterSetup::handleTransmitStatus(bool amTransmitting)
|
||||
{
|
||||
this->amTransmitting = amTransmitting;
|
||||
|
@ -402,15 +414,38 @@ void repeaterSetup::handleTransmitStatus(bool amTransmitting)
|
|||
|
||||
void repeaterSetup::showEvent(QShowEvent *event)
|
||||
{
|
||||
emit getDuplexMode();
|
||||
emit getSplitModeEnabled();
|
||||
if(rig.hasRepeaterModes)
|
||||
emit getRptDuplexOffset();
|
||||
|
||||
(void)event;
|
||||
}
|
||||
|
||||
void repeaterSetup::on_splitEnableChk_clicked()
|
||||
{
|
||||
emit setDuplexMode(dmSplitOn);
|
||||
|
||||
if(ui->autoTrackLiveBtn->isChecked())
|
||||
{
|
||||
ui->autoTrackLiveBtn->setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
void repeaterSetup::on_splitOffBtn_clicked()
|
||||
{
|
||||
emit setDuplexMode(dmSplitOff);
|
||||
}
|
||||
|
||||
void repeaterSetup::on_rptSimplexBtn_clicked()
|
||||
{
|
||||
// Simplex
|
||||
emit setDuplexMode(dmDupAutoOff);
|
||||
emit setDuplexMode(dmSimplex);
|
||||
emit setDuplexMode(dmSplitOff);
|
||||
if(rig.hasRepeaterModes)
|
||||
{
|
||||
emit setDuplexMode(dmDupAutoOff);
|
||||
emit setDuplexMode(dmSimplex);
|
||||
}
|
||||
}
|
||||
|
||||
void repeaterSetup::on_rptDupPlusBtn_clicked()
|
||||
|
@ -557,27 +592,13 @@ void repeaterSetup::on_debugBtn_clicked()
|
|||
emit getRptAccessMode();
|
||||
}
|
||||
|
||||
void repeaterSetup::on_splitOffsetSetBtn_clicked()
|
||||
{
|
||||
freqt txFreq;
|
||||
bool ok = true;
|
||||
txFreq.Hz = ui->splitTransmitFreqEdit->text().toDouble(&ok) * 1E6;
|
||||
emit setTransmitFrequency(txFreq);
|
||||
}
|
||||
|
||||
void repeaterSetup::on_splitEnableChk_clicked(bool enabled)
|
||||
{
|
||||
if(enabled)
|
||||
{
|
||||
emit setDuplexMode(dmSplitOn);
|
||||
} else {
|
||||
emit setDuplexMode(dmSplitOff);
|
||||
}
|
||||
if(ui->autoTrackLiveBtn->isChecked())
|
||||
{
|
||||
ui->autoTrackLiveBtn->setChecked(false);
|
||||
}
|
||||
}
|
||||
//void repeaterSetup::on_splitOffsetSetBtn_clicked()
|
||||
//{
|
||||
// freqt txFreq;
|
||||
// bool ok = true;
|
||||
// txFreq.Hz = ui->splitTransmitFreqEdit->text().toDouble(&ok) * 1E6;
|
||||
// emit setTransmitFrequency(txFreq);
|
||||
//}
|
||||
|
||||
quint64 repeaterSetup::getFreqHzFromKHzString(QString khz)
|
||||
{
|
||||
|
@ -623,10 +644,16 @@ quint64 repeaterSetup::getFreqHzFromMHzString(QString MHz)
|
|||
// We want the right 4xx 3 characters.
|
||||
QString KHz = MHz.right(MHz.length() - decimalPtIndex - 1);
|
||||
MHz.chop(MHz.length() - decimalPtIndex);
|
||||
|
||||
if(KHz.length() != 6)
|
||||
{
|
||||
QString zeros = QString("000000");
|
||||
zeros.chop(KHz.length());
|
||||
KHz.append(zeros);
|
||||
}
|
||||
//qInfo() << "KHz string: " << KHz;
|
||||
fhz = MHz.toUInt(&ok) * 1E6; if(!ok) goto handleError;
|
||||
fhz += KHz.toUInt(&ok) * 1E3; if(!ok) goto handleError;
|
||||
|
||||
fhz += KHz.toUInt(&ok) * 1; if(!ok) goto handleError;
|
||||
//qInfo() << "Fhz: " << fhz;
|
||||
} else {
|
||||
// Frequency was already MHz (unlikely but what can we do?)
|
||||
fhz = MHz.toUInt(&ok) * 1E6; if(!ok) goto handleError;
|
||||
|
@ -736,10 +763,40 @@ void repeaterSetup::on_swapMSBtn_clicked()
|
|||
|
||||
void repeaterSetup::on_setToneSubVFOBtn_clicked()
|
||||
{
|
||||
|
||||
// Perhaps not needed
|
||||
// Set the secondary VFO to the selected tone
|
||||
// TODO: DTCS
|
||||
rptrTone_t rt;
|
||||
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
||||
rt.useSecondaryVFO = true;
|
||||
emit setTone(rt);
|
||||
}
|
||||
|
||||
void repeaterSetup::on_setRptrSubVFOBtn_clicked()
|
||||
{
|
||||
// Perhaps not needed
|
||||
// Set the secondary VFO to the selected repeater mode
|
||||
rptrAccessData_t rd;
|
||||
rd.useSecondaryVFO = true;
|
||||
|
||||
if(ui->toneTone->isChecked())
|
||||
rd.accessMode=ratrTN;
|
||||
if(ui->toneNone->isChecked())
|
||||
rd.accessMode=ratrNN;
|
||||
if(ui->toneTSQL->isChecked())
|
||||
rd.accessMode=ratrTT;
|
||||
if(ui->toneDTCS->isChecked())
|
||||
rd.accessMode=ratrDD;
|
||||
|
||||
emit setRptAccessMode(rd);
|
||||
}
|
||||
|
||||
void repeaterSetup::on_rptrOffsetSetBtn_clicked()
|
||||
{
|
||||
freqt f;
|
||||
f.Hz = getFreqHzFromMHzString(ui->rptrOffsetEdit->text());
|
||||
if(f.Hz != 0)
|
||||
{
|
||||
emit setRptDuplexOffset(f);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,8 +30,9 @@ signals:
|
|||
void getTSQL();
|
||||
void getDTCS();
|
||||
void setRptAccessMode(rptrAccessData_t rd);
|
||||
|
||||
void getRptAccessMode();
|
||||
void setRptDuplexOffset(freqt f);
|
||||
void getRptDuplexOffset();
|
||||
// Split:
|
||||
void getSplitModeEnabled();
|
||||
void getTransmitFrequency();
|
||||
|
@ -56,6 +57,7 @@ public slots:
|
|||
void handleUpdateCurrentMainFrequency(freqt mainfreq);
|
||||
void handleUpdateCurrentMainMode(mode_info m);
|
||||
void handleTransmitStatus(bool amTransmitting);
|
||||
void handleRptOffsetFrequency(freqt f);
|
||||
|
||||
private slots:
|
||||
void showEvent(QShowEvent *event);
|
||||
|
@ -71,8 +73,6 @@ private slots:
|
|||
void on_toneTone_clicked();
|
||||
void on_toneTSQL_clicked();
|
||||
void on_toneDTCS_clicked();
|
||||
void on_splitOffsetSetBtn_clicked();
|
||||
void on_splitEnableChk_clicked(bool enabled);
|
||||
void on_splitPlusButton_clicked();
|
||||
void on_splitMinusBtn_clicked();
|
||||
|
||||
|
@ -98,6 +98,12 @@ private slots:
|
|||
|
||||
void on_setRptrSubVFOBtn_clicked();
|
||||
|
||||
void on_rptrOffsetSetBtn_clicked();
|
||||
|
||||
void on_splitOffBtn_clicked();
|
||||
|
||||
void on_splitEnableChk_clicked();
|
||||
|
||||
private:
|
||||
Ui::repeaterSetup *ui;
|
||||
freqt currentMainFrequency;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1198</width>
|
||||
<height>238</height>
|
||||
<width>1230</width>
|
||||
<height>267</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -116,6 +116,27 @@
|
|||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Offset (MHz):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="rptrOffsetEdit"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="rptrOffsetSetBtn">
|
||||
<property name="text">
|
||||
<string>Set</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -128,23 +149,36 @@
|
|||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="splitEnableChk">
|
||||
<widget class="QRadioButton" name="splitEnableChk">
|
||||
<property name="text">
|
||||
<string>Split Enable</string>
|
||||
<string>Split On</string>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string notr="true">rptDuplexBtns</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="splitOffBtn">
|
||||
<property name="text">
|
||||
<string>Split Off</string>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string notr="true">rptDuplexBtns</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="autoTrackLiveBtn">
|
||||
<property name="text">
|
||||
<string>Auto Track Live</string>
|
||||
<string>AutoTrack</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="setSplitRptrToneChk">
|
||||
<property name="text">
|
||||
<string>Set Repeater Tone</string>
|
||||
<string>Set Rpt Tone</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -189,13 +223,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="rptOffsetBtn">
|
||||
<property name="text">
|
||||
<string>RPT</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
|
|
@ -1192,6 +1192,27 @@ void rigCommander::setRptAccessMode(rptrAccessData_t rd)
|
|||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
void rigCommander::setRptDuplexOffset(freqt f)
|
||||
{
|
||||
QByteArray payload;
|
||||
payload.setRawData("\x0D", 1);
|
||||
// get f, chop to 10 MHz
|
||||
QByteArray freqPayload = makeFreqPayload(f);
|
||||
payload.append(freqPayload.mid(1, 3));
|
||||
//qInfo(logRig()) << "Here is potential repeater offset setting, not sending to radio:";
|
||||
printHexNow(payload, logRig());
|
||||
QString g = getHex(payload);
|
||||
//qInfo(logRig()).noquote().nospace() << g;
|
||||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
void rigCommander::getRptDuplexOffset()
|
||||
{
|
||||
QByteArray payload;
|
||||
payload.setRawData("\x0C", 1);
|
||||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
void rigCommander::setIPP(bool enabled)
|
||||
{
|
||||
QByteArray payload;
|
||||
|
@ -1526,6 +1547,10 @@ void rigCommander::parseCommand()
|
|||
//qInfo(logRig()) << "Have mode data";
|
||||
this->parseMode();
|
||||
break;
|
||||
case '\x0C':
|
||||
qDebug(logRig) << "Have 0x0C reply";
|
||||
emit haveRptOffsetFrequency(parseFrequencyRptOffset(payloadIn));
|
||||
break;
|
||||
case '\x0F':
|
||||
emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]);
|
||||
state.set(DUPLEX, (duplexMode)(unsigned char)payloadIn[1], false);
|
||||
|
@ -3467,6 +3492,7 @@ void rigCommander::determineRigCaps()
|
|||
rigCaps.hasDV = true;
|
||||
rigCaps.hasCTCSS = true;
|
||||
rigCaps.hasDTCS = true;
|
||||
rigCaps.hasRepeaterModes = true;
|
||||
rigCaps.hasTBPF = true;
|
||||
rigCaps.attenuators.push_back('\x10');
|
||||
rigCaps.preamps.push_back('\x01');
|
||||
|
@ -3494,6 +3520,7 @@ void rigCommander::determineRigCaps()
|
|||
rigCaps.hasDV = false;
|
||||
rigCaps.hasCTCSS = true;
|
||||
rigCaps.hasDTCS = true;
|
||||
rigCaps.hasRepeaterModes = true;
|
||||
rigCaps.hasATU = false;
|
||||
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x10' , '\x20', '\x30'});
|
||||
rigCaps.preamps.push_back('\x01');
|
||||
|
@ -3623,6 +3650,7 @@ void rigCommander::determineRigCaps()
|
|||
rigCaps.hasATU = true;
|
||||
rigCaps.hasCTCSS = true;
|
||||
rigCaps.hasDTCS = true;
|
||||
rigCaps.hasRepeaterModes = true;
|
||||
rigCaps.hasTBPF = true;
|
||||
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x10' , '\x20'});
|
||||
rigCaps.preamps.push_back('\x01');
|
||||
|
@ -3706,6 +3734,7 @@ void rigCommander::determineRigCaps()
|
|||
rigCaps.hasATU = true;
|
||||
rigCaps.hasCTCSS = true;
|
||||
rigCaps.hasDTCS = true;
|
||||
rigCaps.hasRepeaterModes = true;
|
||||
rigCaps.hasTBPF = true;
|
||||
rigCaps.attenuators.push_back('\x12');
|
||||
rigCaps.preamps.push_back('\x01');
|
||||
|
@ -3930,6 +3959,7 @@ void rigCommander::determineRigCaps()
|
|||
rigCaps.hasIFShift = true;
|
||||
rigCaps.hasCTCSS = true;
|
||||
rigCaps.hasDTCS = true;
|
||||
rigCaps.hasRepeaterModes = true;
|
||||
rigCaps.hasAntennaSel = true;
|
||||
rigCaps.preamps.push_back('\x01');
|
||||
rigCaps.preamps.push_back('\x02');
|
||||
|
@ -4050,6 +4080,7 @@ void rigCommander::determineRigCaps()
|
|||
rigCaps.hasATU = true;
|
||||
rigCaps.hasDV = true;
|
||||
rigCaps.hasTBPF = true;
|
||||
rigCaps.hasRepeaterModes = true;
|
||||
rigCaps.preamps.push_back('\x01');
|
||||
rigCaps.preamps.push_back('\x02');
|
||||
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x20' });
|
||||
|
@ -4405,6 +4436,26 @@ void rigCommander::parseFrequency()
|
|||
emit haveFrequency(freq);
|
||||
}
|
||||
|
||||
freqt rigCommander::parseFrequencyRptOffset(QByteArray data)
|
||||
{
|
||||
// DATA: 0c 00 60 00 fd
|
||||
// INDEX: 00 01 02 03 04
|
||||
// 00.600.0 MHz (600.0 KHz)
|
||||
|
||||
freqt f;
|
||||
f.Hz = 0;
|
||||
|
||||
f.Hz += (data[1] & 0x0f) * 1E6; // 1 MHz
|
||||
f.Hz += ((data[1] & 0xf0) >> 4) * 1E6 * 10; // 10 MHz
|
||||
f.Hz += (data[2] & 0x0f) * 10E3; // 10 KHz
|
||||
f.Hz += ((data[2] & 0xf0) >> 4) * 100E3; // 100 KHz
|
||||
|
||||
f.Hz += (data[3] & 0x0f) * 100; // 100 Hz
|
||||
f.Hz += ((data[3] & 0xf0) >> 4) * 1000; // 1 KHz
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
freqt rigCommander::parseFrequency(QByteArray data, unsigned char lastPosition)
|
||||
{
|
||||
// process payloadIn, which is stripped.
|
||||
|
|
|
@ -146,6 +146,8 @@ public slots:
|
|||
void setRptAccessMode(rptAccessTxRx ratr);
|
||||
void setRptAccessMode(rptrAccessData_t ratr);
|
||||
void getRptAccessMode();
|
||||
void setRptDuplexOffset(freqt f);
|
||||
void getRptDuplexOffset();
|
||||
|
||||
// Get Levels:
|
||||
void getLevels(); // all supported levels
|
||||
|
@ -309,6 +311,7 @@ signals:
|
|||
void haveTone(quint16 tone);
|
||||
void haveTSQL(quint16 tsql);
|
||||
void haveDTCS(quint16 dcscode, bool tinv, bool rinv);
|
||||
void haveRptOffsetFrequency(freqt f);
|
||||
|
||||
// Levels:
|
||||
void haveRfGain(unsigned char level);
|
||||
|
@ -378,6 +381,8 @@ private:
|
|||
QByteArray bcdEncodeInt(unsigned int);
|
||||
void parseFrequency();
|
||||
freqt parseFrequency(QByteArray data, unsigned char lastPosition); // supply index where Mhz is found
|
||||
freqt parseFrequencyRptOffset(QByteArray data);
|
||||
QByteArray makeFreqPayloadRptOffset(freqt freq);
|
||||
QByteArray makeFreqPayload(double frequency);
|
||||
QByteArray makeFreqPayload(freqt freq);
|
||||
QByteArray encodeTone(quint16 tone, bool tinv, bool rinv);
|
||||
|
|
|
@ -134,6 +134,7 @@ struct rigCapabilities {
|
|||
|
||||
bool hasCTCSS;
|
||||
bool hasDTCS;
|
||||
bool hasRepeaterModes = false;
|
||||
|
||||
bool hasTransmit;
|
||||
bool hasPTTCommand;
|
||||
|
|
30
wfmain.cpp
30
wfmain.cpp
|
@ -381,9 +381,12 @@ void wfmain::rigConnections()
|
|||
connect(rig, SIGNAL(havePassband(quint16)), this, SLOT(receivePassband(quint16)));
|
||||
connect(rig, SIGNAL(haveCwPitch(unsigned char)), this, SLOT(receiveCwPitch(unsigned char)));
|
||||
|
||||
// Repeater, duplex, and split:
|
||||
connect(rpt, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
|
||||
connect(rpt, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
|
||||
connect(rig, SIGNAL(haveDuplexMode(duplexMode)), rpt, SLOT(receiveDuplexMode(duplexMode)));
|
||||
connect(this, SIGNAL(getRptDuplexOffset()), rig, SLOT(getRptDuplexOffset()));
|
||||
connect(rig, SIGNAL(haveRptOffsetFrequency(freqt)), rpt, SLOT(handleRptOffsetFrequency(freqt)));
|
||||
connect(rpt, SIGNAL(getTone()), rig, SLOT(getTone()));
|
||||
connect(rpt, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
|
||||
connect(rpt, SIGNAL(getDTCS()), rig, SLOT(getDTCS()));
|
||||
|
@ -420,8 +423,14 @@ void wfmain::rigConnections()
|
|||
[=]() { issueDelayedCommand(cmdVFOEqualMS);});
|
||||
connect(this->rpt, &repeaterSetup::swapVFOs,
|
||||
[=]() { issueDelayedCommand(cmdVFOSwap);});
|
||||
connect(this->rpt, &repeaterSetup::setRptDuplexOffset,
|
||||
[=](const freqt &fOffset) { issueCmd(cmdSetRptDuplexOffset, fOffset);});
|
||||
connect(this->rpt, &repeaterSetup::getRptDuplexOffset,
|
||||
[=]() { issueDelayedCommand(cmdGetRptDuplexOffset);});
|
||||
|
||||
connect(this, SIGNAL(setRptDuplexOffset(freqt)), rig, SLOT(setRptDuplexOffset(freqt)));
|
||||
connect(this, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
|
||||
|
||||
connect(this, SIGNAL(getPassband()), rig, SLOT(getPassband()));
|
||||
connect(this, SIGNAL(setPassband(quint16)), rig, SLOT(setPassband(quint16)));
|
||||
connect(this, SIGNAL(getCwPitch()), rig, SLOT(getCwPitch()));
|
||||
|
@ -3713,6 +3722,12 @@ void wfmain::doCmd(commandtype cmddata)
|
|||
emit setRepeaterAccessMode(rd);
|
||||
break;
|
||||
}
|
||||
case cmdSetRptDuplexOffset:
|
||||
{
|
||||
freqt f = (*std::static_pointer_cast<freqt>(data));
|
||||
emit setRptDuplexOffset(f);
|
||||
break;
|
||||
}
|
||||
case cmdSetPTT:
|
||||
{
|
||||
bool pttrequest = (*std::static_pointer_cast<bool>(data));
|
||||
|
@ -3877,6 +3892,9 @@ void wfmain::doCmd(cmds cmd)
|
|||
case cmdGetDuplexMode:
|
||||
emit getDuplexMode();
|
||||
break;
|
||||
case cmdGetRptDuplexOffset:
|
||||
emit getRptDuplexOffset();
|
||||
break;
|
||||
case cmdGetPassband:
|
||||
emit getPassband();
|
||||
break;
|
||||
|
@ -4062,7 +4080,6 @@ 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);
|
||||
|
@ -6894,7 +6911,15 @@ void wfmain::on_serialDeviceListCombo_textActivated(const QString &arg1)
|
|||
|
||||
void wfmain::on_rptSetupBtn_clicked()
|
||||
{
|
||||
if(rpt->isMinimized())
|
||||
{
|
||||
rpt->raise();
|
||||
rpt->activateWindow();
|
||||
return;
|
||||
}
|
||||
rpt->show();
|
||||
rpt->raise();
|
||||
rpt->activateWindow();
|
||||
}
|
||||
|
||||
void wfmain::on_attSelCombo_activated(int index)
|
||||
|
@ -7666,7 +7691,8 @@ void wfmain::on_underlayAverageBuffer_toggled(bool checked)
|
|||
void wfmain::on_debugBtn_clicked()
|
||||
{
|
||||
qInfo(logSystem()) << "Debug button pressed.";
|
||||
cw->show();
|
||||
qDebug(logSystem()) << "Query for repeater duplex offset 0x0C headed out";
|
||||
issueDelayedCommand(cmdGetRptDuplexOffset);
|
||||
}
|
||||
|
||||
// ---------- color helper functions: ---------- //
|
||||
|
|
2
wfmain.h
2
wfmain.h
|
@ -118,6 +118,8 @@ signals:
|
|||
void setRepeaterAccessMode(rptrAccessData_t rd);
|
||||
void setTone(rptrTone_t t);
|
||||
void setTSQL(rptrTone_t t);
|
||||
void setRptDuplexOffset(freqt f);
|
||||
void getRptDuplexOffset();
|
||||
|
||||
// Level get:
|
||||
void getLevels(); // get all levels
|
||||
|
|
|
@ -153,7 +153,7 @@ enum cmds {
|
|||
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
|
||||
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
|
||||
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
|
||||
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL, cmdSetRptAccessMode,
|
||||
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL, cmdSetRptAccessMode, cmdSetRptDuplexOffset, cmdGetRptDuplexOffset,
|
||||
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
|
||||
cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
|
||||
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
|
||||
|
|
Ładowanie…
Reference in New Issue