kopia lustrzana https://gitlab.com/eliggett/wfview
Added sub VFO repeater access and tone control, hopefully will work for
IC-7610 and IC-7850.failbranch
rodzic
404d6ddceb
commit
2c6884d827
|
@ -2,31 +2,7 @@
|
||||||
#define REPEATERATTRIBUTES_H
|
#define REPEATERATTRIBUTES_H
|
||||||
#include <QMetaType>
|
#include <QMetaType>
|
||||||
|
|
||||||
enum duplexMode {
|
// TODO: Remove this file as it does nothing.
|
||||||
dmSplitOff=0x00,
|
|
||||||
dmSplitOn=0x01,
|
|
||||||
dmSimplex=0x10,
|
|
||||||
dmDupMinus=0x11,
|
|
||||||
dmDupPlus=0x12,
|
|
||||||
dmDupRPS=0x13,
|
|
||||||
dmDupAutoOn=0x26,
|
|
||||||
dmDupAutoOff=0x36
|
|
||||||
};
|
|
||||||
|
|
||||||
// Here, T=tone, D=DCS, N=none
|
|
||||||
// And the naming convention order is Transmit Receive
|
|
||||||
enum rptAccessTxRx {
|
|
||||||
ratrNN=0x00,
|
|
||||||
ratrTN=0x01, // "TONE" (T only)
|
|
||||||
ratrNT=0x02, // "TSQL" (R only)
|
|
||||||
ratrDD=0x03, // "DTCS" (TR)
|
|
||||||
ratrDN=0x06, // "DTCS(T)"
|
|
||||||
ratrTD=0x07, // "TONE(T) / TSQL(R)"
|
|
||||||
ratrDT=0x08, // "DTCS(T) / TSQL(R)"
|
|
||||||
ratrTT=0x09 // "TONE(T) / TSQL(R)"
|
|
||||||
};
|
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(enum duplexMode)
|
|
||||||
Q_DECLARE_METATYPE(enum rptAccessTxRx)
|
|
||||||
|
|
||||||
#endif // REPEATERATTRIBUTES_H
|
#endif // REPEATERATTRIBUTES_H
|
||||||
|
|
|
@ -92,6 +92,16 @@ void repeaterSetup::setRig(rigCapabilities inRig)
|
||||||
// do not have a swap AB command.
|
// do not have a swap AB command.
|
||||||
ui->swapABBtn->setDisabled(true);
|
ui->swapABBtn->setDisabled(true);
|
||||||
}
|
}
|
||||||
|
if(rig.hasSpecifyMainSubCmd)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::populateTones()
|
void repeaterSetup::populateTones()
|
||||||
|
@ -362,6 +372,11 @@ void repeaterSetup::handleUpdateCurrentMainFrequency(freqt mainfreq)
|
||||||
on_splitMinusBtn_clicked();
|
on_splitMinusBtn_clicked();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(ui->setSplitRptrToneChk->isChecked())
|
||||||
|
{
|
||||||
|
// TODO, not really needed if the op
|
||||||
|
// just sets the tone when needed, as it will do both bands.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this->currentMainFrequency = mainfreq;
|
this->currentMainFrequency = mainfreq;
|
||||||
}
|
}
|
||||||
|
@ -428,11 +443,25 @@ void repeaterSetup::on_rptToneCombo_activated(int tindex)
|
||||||
{
|
{
|
||||||
quint16 tone=0;
|
quint16 tone=0;
|
||||||
tone = (quint16)ui->rptToneCombo->itemData(tindex).toUInt();
|
tone = (quint16)ui->rptToneCombo->itemData(tindex).toUInt();
|
||||||
|
rptrTone_t rt;
|
||||||
|
rt.tone = tone;
|
||||||
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
if(ui->toneTone->isChecked())
|
if(ui->toneTone->isChecked())
|
||||||
{
|
{
|
||||||
emit setTone(tone);
|
emit setTone(rt);
|
||||||
|
if(updateSub)
|
||||||
|
{
|
||||||
|
rt.useSecondaryVFO = true;
|
||||||
|
emit setTone(rt);
|
||||||
|
}
|
||||||
|
|
||||||
} else if (ui->toneTSQL->isChecked()) {
|
} else if (ui->toneTSQL->isChecked()) {
|
||||||
emit setTSQL(tone);
|
emit setTSQL(rt);
|
||||||
|
if(updateSub)
|
||||||
|
{
|
||||||
|
rt.useSecondaryVFO = true;
|
||||||
|
emit setTone(rt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -448,38 +477,75 @@ void repeaterSetup::on_rptDTCSCombo_activated(int index)
|
||||||
void repeaterSetup::on_toneNone_clicked()
|
void repeaterSetup::on_toneNone_clicked()
|
||||||
{
|
{
|
||||||
rptAccessTxRx rm;
|
rptAccessTxRx rm;
|
||||||
|
rptrAccessData_t rd;
|
||||||
rm = ratrNN;
|
rm = ratrNN;
|
||||||
emit setRptAccessMode(rm);
|
rd.accessMode = rm;
|
||||||
|
emit setRptAccessMode(rd);
|
||||||
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
|
|
||||||
|
if(updateSub)
|
||||||
|
{
|
||||||
|
rd.useSecondaryVFO = true;
|
||||||
|
emit setRptAccessMode(rd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_toneTone_clicked()
|
void repeaterSetup::on_toneTone_clicked()
|
||||||
{
|
{
|
||||||
rptAccessTxRx rm;
|
rptAccessTxRx rm;
|
||||||
|
rptrAccessData_t rd;
|
||||||
rm = ratrTN;
|
rm = ratrTN;
|
||||||
emit setRptAccessMode(rm);
|
rd.accessMode = rm;
|
||||||
emit setTone((quint16)ui->rptToneCombo->currentData().toUInt());
|
rptrTone_t rt;
|
||||||
|
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
||||||
|
emit setRptAccessMode(rd);
|
||||||
|
emit setTone(rt);
|
||||||
|
|
||||||
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
|
|
||||||
|
if(updateSub)
|
||||||
|
{
|
||||||
|
rd.useSecondaryVFO = true;
|
||||||
|
rt.useSecondaryVFO = true;
|
||||||
|
emit setRptAccessMode(rd);
|
||||||
|
emit setTone(rt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_toneTSQL_clicked()
|
void repeaterSetup::on_toneTSQL_clicked()
|
||||||
{
|
{
|
||||||
rptAccessTxRx rm;
|
rptAccessTxRx rm;
|
||||||
|
rptrAccessData_t rd;
|
||||||
rm = ratrTT;
|
rm = ratrTT;
|
||||||
emit setRptAccessMode(rm);
|
rptrTone_t rt;
|
||||||
emit setTSQL((quint16)ui->rptToneCombo->currentData().toUInt());
|
rt.tone = (quint16)ui->rptToneCombo->currentData().toUInt();
|
||||||
|
rd.accessMode = rm;
|
||||||
|
emit setRptAccessMode(rd);
|
||||||
|
emit setTSQL(rt);
|
||||||
|
bool updateSub = ui->setSplitRptrToneChk->isEnabled() && ui->setSplitRptrToneChk->isChecked();
|
||||||
|
|
||||||
|
if(updateSub)
|
||||||
|
{
|
||||||
|
rd.useSecondaryVFO = true;
|
||||||
|
rt.useSecondaryVFO = true;
|
||||||
|
emit setRptAccessMode(rd);
|
||||||
|
emit setTone(rt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_toneDTCS_clicked()
|
void repeaterSetup::on_toneDTCS_clicked()
|
||||||
{
|
{
|
||||||
rptAccessTxRx rm;
|
rptrAccessData_t rd;
|
||||||
quint16 dcode=0;
|
quint16 dcode=0;
|
||||||
|
|
||||||
rm = ratrDD;
|
rd.accessMode = ratrDD;
|
||||||
emit setRptAccessMode(rm);
|
emit setRptAccessMode(rd);
|
||||||
|
|
||||||
bool tinv = ui->rptDTCSInvertTx->isChecked();
|
bool tinv = ui->rptDTCSInvertTx->isChecked();
|
||||||
bool rinv = ui->rptDTCSInvertRx->isChecked();
|
bool rinv = ui->rptDTCSInvertRx->isChecked();
|
||||||
dcode = (quint16)ui->rptDTCSCombo->currentData().toUInt();
|
dcode = (quint16)ui->rptDTCSCombo->currentData().toUInt();
|
||||||
emit setDTCS(dcode, tinv, rinv);
|
emit setDTCS(dcode, tinv, rinv);
|
||||||
|
// TODO: DTCS with subband
|
||||||
}
|
}
|
||||||
|
|
||||||
void repeaterSetup::on_debugBtn_clicked()
|
void repeaterSetup::on_debugBtn_clicked()
|
||||||
|
@ -667,3 +733,13 @@ void repeaterSetup::on_swapMSBtn_clicked()
|
||||||
{
|
{
|
||||||
emit swapVFOs();
|
emit swapVFOs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void repeaterSetup::on_setToneSubVFOBtn_clicked()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void repeaterSetup::on_setRptrSubVFOBtn_clicked()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -23,13 +23,14 @@ public:
|
||||||
signals:
|
signals:
|
||||||
void getDuplexMode();
|
void getDuplexMode();
|
||||||
void setDuplexMode(duplexMode dm);
|
void setDuplexMode(duplexMode dm);
|
||||||
void setTone(quint16 tone);
|
void setTone(rptrTone_t tone);
|
||||||
void setTSQL(quint16 tsql);
|
void setTSQL(rptrTone_t tsql);
|
||||||
void setDTCS(quint16 dcode, bool tinv, bool rinv);
|
void setDTCS(quint16 dcode, bool tinv, bool rinv);
|
||||||
void getTone();
|
void getTone();
|
||||||
void getTSQL();
|
void getTSQL();
|
||||||
void getDTCS();
|
void getDTCS();
|
||||||
void setRptAccessMode(rptAccessTxRx tmode);
|
void setRptAccessMode(rptrAccessData_t rd);
|
||||||
|
|
||||||
void getRptAccessMode();
|
void getRptAccessMode();
|
||||||
// Split:
|
// Split:
|
||||||
void getSplitModeEnabled();
|
void getSplitModeEnabled();
|
||||||
|
@ -93,6 +94,10 @@ private slots:
|
||||||
|
|
||||||
void on_swapMSBtn_clicked();
|
void on_swapMSBtn_clicked();
|
||||||
|
|
||||||
|
void on_setToneSubVFOBtn_clicked();
|
||||||
|
|
||||||
|
void on_setRptrSubVFOBtn_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::repeaterSetup *ui;
|
Ui::repeaterSetup *ui;
|
||||||
freqt currentMainFrequency;
|
freqt currentMainFrequency;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1198</width>
|
<width>1198</width>
|
||||||
<height>217</height>
|
<height>238</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -141,6 +141,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="setSplitRptrToneChk">
|
||||||
|
<property name="text">
|
||||||
|
<string>Set Repeater Tone</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -339,6 +346,13 @@
|
||||||
</attribute>
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="setRptrSubVFOBtn">
|
||||||
|
<property name="text">
|
||||||
|
<string>Set Sub VFO</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -394,6 +408,13 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="setToneSubVFOBtn">
|
||||||
|
<property name="text">
|
||||||
|
<string>Set Sub VFO</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -1019,28 +1019,54 @@ void rigCommander::getTransmitFrequency()
|
||||||
|
|
||||||
void rigCommander::setTone(quint16 tone)
|
void rigCommander::setTone(quint16 tone)
|
||||||
{
|
{
|
||||||
|
rptrTone_t t;
|
||||||
|
t.tone = tone;
|
||||||
|
setTone(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rigCommander::setTone(rptrTone_t t)
|
||||||
|
{
|
||||||
|
quint16 tone = t.tone;
|
||||||
|
|
||||||
QByteArray fenc = encodeTone(tone);
|
QByteArray fenc = encodeTone(tone);
|
||||||
|
|
||||||
QByteArray payload;
|
QByteArray payload;
|
||||||
payload.setRawData("\x1B\x00", 2);
|
payload.setRawData("\x1B\x00", 2);
|
||||||
payload.append(fenc);
|
payload.append(fenc);
|
||||||
|
|
||||||
//qInfo() << __func__ << "TONE encoded payload: ";
|
if(t.useSecondaryVFO)
|
||||||
printHex(payload);
|
{
|
||||||
|
qDebug(logRig()) << "Sending TONE to secondary VFO";
|
||||||
|
payload.prepend("\x29\x01");
|
||||||
|
printHex(payload);
|
||||||
|
}
|
||||||
|
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rigCommander::setTSQL(quint16 tsql)
|
void rigCommander::setTSQL(quint16 t)
|
||||||
{
|
{
|
||||||
|
rptrTone_t tn;
|
||||||
|
tn.tone = t;
|
||||||
|
setTSQL(tn);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rigCommander::setTSQL(rptrTone_t t)
|
||||||
|
{
|
||||||
|
quint16 tsql = t.tone;
|
||||||
|
|
||||||
QByteArray fenc = encodeTone(tsql);
|
QByteArray fenc = encodeTone(tsql);
|
||||||
|
|
||||||
QByteArray payload;
|
QByteArray payload;
|
||||||
payload.setRawData("\x1B\x01", 2);
|
payload.setRawData("\x1B\x01", 2);
|
||||||
payload.append(fenc);
|
payload.append(fenc);
|
||||||
|
|
||||||
//qInfo() << __func__ << "TSQL encoded payload: ";
|
if(t.useSecondaryVFO)
|
||||||
printHex(payload);
|
{
|
||||||
|
qDebug(logRig()) << "Sending TSQL to secondary VFO";
|
||||||
|
payload.prepend("\x29\x01");
|
||||||
|
printHex(payload);
|
||||||
|
}
|
||||||
|
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
}
|
}
|
||||||
|
@ -1148,10 +1174,21 @@ void rigCommander::getRptAccessMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
void rigCommander::setRptAccessMode(rptAccessTxRx ratr)
|
void rigCommander::setRptAccessMode(rptAccessTxRx ratr)
|
||||||
|
{
|
||||||
|
rptrAccessData_t rd;
|
||||||
|
rd.accessMode = ratr;
|
||||||
|
setRptAccessMode(rd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rigCommander::setRptAccessMode(rptrAccessData_t rd)
|
||||||
{
|
{
|
||||||
QByteArray payload;
|
QByteArray payload;
|
||||||
payload.setRawData("\x16\x5D", 2);
|
payload.setRawData("\x16\x5D", 2);
|
||||||
payload.append((unsigned char)ratr);
|
payload.append((unsigned char)rd.accessMode);
|
||||||
|
if(rd.useSecondaryVFO)
|
||||||
|
{
|
||||||
|
payload.prepend("\x29\x01");
|
||||||
|
}
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -135,13 +135,16 @@ public slots:
|
||||||
void setDuplexMode(duplexMode dm);
|
void setDuplexMode(duplexMode dm);
|
||||||
void getDuplexMode();
|
void getDuplexMode();
|
||||||
void getTransmitFrequency();
|
void getTransmitFrequency();
|
||||||
void setTone(quint16 tone);
|
void setTone(rptrTone_t t);
|
||||||
void setTSQL(quint16 tsql);
|
void setTSQL(rptrTone_t t);
|
||||||
|
void setTone(quint16 t);
|
||||||
|
void setTSQL(quint16 t);
|
||||||
void getTSQL();
|
void getTSQL();
|
||||||
void getTone();
|
void getTone();
|
||||||
void setDTCS(quint16 dcscode, bool tinv, bool rinv);
|
void setDTCS(quint16 dcscode, bool tinv, bool rinv);
|
||||||
void getDTCS();
|
void getDTCS();
|
||||||
void setRptAccessMode(rptAccessTxRx ratr);
|
void setRptAccessMode(rptAccessTxRx ratr);
|
||||||
|
void setRptAccessMode(rptrAccessData_t ratr);
|
||||||
void getRptAccessMode();
|
void getRptAccessMode();
|
||||||
|
|
||||||
// Get Levels:
|
// Get Levels:
|
||||||
|
|
50
wfmain.cpp
50
wfmain.cpp
|
@ -57,11 +57,13 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
|
||||||
qRegisterMetaType<rigCapabilities>();
|
qRegisterMetaType<rigCapabilities>();
|
||||||
qRegisterMetaType<duplexMode>();
|
qRegisterMetaType<duplexMode>();
|
||||||
qRegisterMetaType<rptAccessTxRx>();
|
qRegisterMetaType<rptAccessTxRx>();
|
||||||
|
qRegisterMetaType<rptrAccessData_t>();
|
||||||
qRegisterMetaType<rigInput>();
|
qRegisterMetaType<rigInput>();
|
||||||
qRegisterMetaType<meterKind>();
|
qRegisterMetaType<meterKind>();
|
||||||
qRegisterMetaType<spectrumMode>();
|
qRegisterMetaType<spectrumMode>();
|
||||||
qRegisterMetaType<freqt>();
|
qRegisterMetaType<freqt>();
|
||||||
qRegisterMetaType<vfo_t>();
|
qRegisterMetaType<vfo_t>();
|
||||||
|
qRegisterMetaType<rptrTone_t>();
|
||||||
qRegisterMetaType<mode_info>();
|
qRegisterMetaType<mode_info>();
|
||||||
qRegisterMetaType<mode_kind>();
|
qRegisterMetaType<mode_kind>();
|
||||||
qRegisterMetaType<audioPacket>();
|
qRegisterMetaType<audioPacket>();
|
||||||
|
@ -385,11 +387,21 @@ void wfmain::rigConnections()
|
||||||
connect(rpt, SIGNAL(getTone()), rig, SLOT(getTone()));
|
connect(rpt, SIGNAL(getTone()), rig, SLOT(getTone()));
|
||||||
connect(rpt, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
|
connect(rpt, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
|
||||||
connect(rpt, SIGNAL(getDTCS()), rig, SLOT(getDTCS()));
|
connect(rpt, SIGNAL(getDTCS()), rig, SLOT(getDTCS()));
|
||||||
connect(rpt, SIGNAL(setTone(quint16)), rig, SLOT(setTone(quint16)));
|
|
||||||
connect(rpt, SIGNAL(setTSQL(quint16)), rig, SLOT(setTSQL(quint16)));
|
connect(this->rpt, &repeaterSetup::setTone,
|
||||||
|
[=](const rptrTone_t &t) { issueCmd(cmdSetTone, t);});
|
||||||
|
|
||||||
|
connect(this->rpt, &repeaterSetup::setTSQL,
|
||||||
|
[=](const rptrTone_t &t) { issueCmd(cmdSetTSQL, t);});
|
||||||
|
|
||||||
connect(rpt, SIGNAL(setDTCS(quint16,bool,bool)), rig, SLOT(setDTCS(quint16,bool,bool)));
|
connect(rpt, SIGNAL(setDTCS(quint16,bool,bool)), rig, SLOT(setDTCS(quint16,bool,bool)));
|
||||||
connect(rpt, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode()));
|
connect(rpt, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode()));
|
||||||
connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
|
|
||||||
|
//connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx)));
|
||||||
|
|
||||||
|
connect(this->rpt, &repeaterSetup::setRptAccessMode,
|
||||||
|
[=](const rptrAccessData_t &rd) { issueCmd(cmdSetRptAccessMode, rd);});
|
||||||
|
|
||||||
connect(rig, SIGNAL(haveTone(quint16)), rpt, SLOT(handleTone(quint16)));
|
connect(rig, SIGNAL(haveTone(quint16)), rpt, SLOT(handleTone(quint16)));
|
||||||
connect(rig, SIGNAL(haveTSQL(quint16)), rpt, SLOT(handleTSQL(quint16)));
|
connect(rig, SIGNAL(haveTSQL(quint16)), rpt, SLOT(handleTSQL(quint16)));
|
||||||
connect(rig, SIGNAL(haveDTCS(quint16,bool,bool)), rpt, SLOT(handleDTCS(quint16,bool,bool)));
|
connect(rig, SIGNAL(haveDTCS(quint16,bool,bool)), rpt, SLOT(handleDTCS(quint16,bool,bool)));
|
||||||
|
@ -3681,6 +3693,18 @@ void wfmain::doCmd(commandtype cmddata)
|
||||||
emit setTPBFOuter(outerLevel);
|
emit setTPBFOuter(outerLevel);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case cmdSetTone:
|
||||||
|
{
|
||||||
|
rptrTone_t t = (*std::static_pointer_cast<rptrTone_t>(data));
|
||||||
|
emit setTone(t);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case cmdSetTSQL:
|
||||||
|
{
|
||||||
|
rptrAccessData_t rd = (*std::static_pointer_cast<rptrAccessData_t>(data));
|
||||||
|
emit setRepeaterAccessMode(rd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case cmdSetPTT:
|
case cmdSetPTT:
|
||||||
{
|
{
|
||||||
bool pttrequest = (*std::static_pointer_cast<bool>(data));
|
bool pttrequest = (*std::static_pointer_cast<bool>(data));
|
||||||
|
@ -4108,6 +4132,14 @@ void wfmain::issueCmd(cmds cmd, mode_info m)
|
||||||
delayedCmdQue.push_back(cmddata);
|
delayedCmdQue.push_back(cmddata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wfmain::issueCmd(cmds cmd, freqt f)
|
||||||
|
{
|
||||||
|
commandtype cmddata;
|
||||||
|
cmddata.cmd = cmd;
|
||||||
|
cmddata.data = std::shared_ptr<freqt>(new freqt(f));
|
||||||
|
delayedCmdQue.push_back(cmddata);
|
||||||
|
}
|
||||||
|
|
||||||
void wfmain::issueCmd(cmds cmd, vfo_t v)
|
void wfmain::issueCmd(cmds cmd, vfo_t v)
|
||||||
{
|
{
|
||||||
commandtype cmddata;
|
commandtype cmddata;
|
||||||
|
@ -4116,11 +4148,19 @@ void wfmain::issueCmd(cmds cmd, vfo_t v)
|
||||||
delayedCmdQue.push_back(cmddata);
|
delayedCmdQue.push_back(cmddata);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::issueCmd(cmds cmd, freqt f)
|
void wfmain::issueCmd(cmds cmd, rptrTone_t v)
|
||||||
{
|
{
|
||||||
commandtype cmddata;
|
commandtype cmddata;
|
||||||
cmddata.cmd = cmd;
|
cmddata.cmd = cmd;
|
||||||
cmddata.data = std::shared_ptr<freqt>(new freqt(f));
|
cmddata.data = std::shared_ptr<rptrTone_t>(new rptrTone_t(v));
|
||||||
|
delayedCmdQue.push_back(cmddata);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wfmain::issueCmd(cmds cmd, rptrAccessData_t rd)
|
||||||
|
{
|
||||||
|
commandtype cmddata;
|
||||||
|
cmddata.cmd = cmd;
|
||||||
|
cmddata.data = std::shared_ptr<rptrAccessData_t>(new rptrAccessData_t(rd));
|
||||||
delayedCmdQue.push_back(cmddata);
|
delayedCmdQue.push_back(cmddata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
wfmain.h
11
wfmain.h
|
@ -115,6 +115,9 @@ signals:
|
||||||
void getTSQL();
|
void getTSQL();
|
||||||
void getDTCS();
|
void getDTCS();
|
||||||
void getRptAccessMode();
|
void getRptAccessMode();
|
||||||
|
void setRepeaterAccessMode(rptrAccessData_t rd);
|
||||||
|
void setTone(rptrTone_t t);
|
||||||
|
void setTSQL(rptrTone_t t);
|
||||||
|
|
||||||
// Level get:
|
// Level get:
|
||||||
void getLevels(); // get all levels
|
void getLevels(); // get all levels
|
||||||
|
@ -913,6 +916,8 @@ private:
|
||||||
void issueCmd(cmds cmd, freqt f);
|
void issueCmd(cmds cmd, freqt f);
|
||||||
void issueCmd(cmds cmd, mode_info m);
|
void issueCmd(cmds cmd, mode_info m);
|
||||||
void issueCmd(cmds cmd, vfo_t v);
|
void issueCmd(cmds cmd, vfo_t v);
|
||||||
|
void issueCmd(cmds cmd, rptrTone_t t);
|
||||||
|
void issueCmd(cmds cmd, rptrAccessData_t rd);
|
||||||
void issueCmd(cmds cmd, timekind t);
|
void issueCmd(cmds cmd, timekind t);
|
||||||
void issueCmd(cmds cmd, datekind d);
|
void issueCmd(cmds cmd, datekind d);
|
||||||
void issueCmd(cmds cmd, int i);
|
void issueCmd(cmds cmd, int i);
|
||||||
|
@ -1140,7 +1145,7 @@ Q_DECLARE_METATYPE(enum rigInput)
|
||||||
Q_DECLARE_METATYPE(enum meterKind)
|
Q_DECLARE_METATYPE(enum meterKind)
|
||||||
Q_DECLARE_METATYPE(enum spectrumMode)
|
Q_DECLARE_METATYPE(enum spectrumMode)
|
||||||
Q_DECLARE_METATYPE(enum mode_kind)
|
Q_DECLARE_METATYPE(enum mode_kind)
|
||||||
Q_DECLARE_METATYPE(enum vfo_t);
|
Q_DECLARE_METATYPE(enum vfo_t)
|
||||||
Q_DECLARE_METATYPE(QList<radio_cap_packet>)
|
Q_DECLARE_METATYPE(QList<radio_cap_packet>)
|
||||||
Q_DECLARE_METATYPE(QList<spotData>)
|
Q_DECLARE_METATYPE(QList<spotData>)
|
||||||
Q_DECLARE_METATYPE(rigstate*)
|
Q_DECLARE_METATYPE(rigstate*)
|
||||||
|
@ -1150,6 +1155,10 @@ Q_DECLARE_METATYPE(QVector <COMMAND>*)
|
||||||
Q_DECLARE_METATYPE(const COMMAND*)
|
Q_DECLARE_METATYPE(const COMMAND*)
|
||||||
Q_DECLARE_METATYPE(codecType)
|
Q_DECLARE_METATYPE(codecType)
|
||||||
Q_DECLARE_METATYPE(errorType)
|
Q_DECLARE_METATYPE(errorType)
|
||||||
|
Q_DECLARE_METATYPE(enum duplexMode)
|
||||||
|
Q_DECLARE_METATYPE(enum rptAccessTxRx)
|
||||||
|
Q_DECLARE_METATYPE(struct rptrTone_t)
|
||||||
|
Q_DECLARE_METATYPE(struct rptrAccessData_t)
|
||||||
|
|
||||||
//void (*wfmain::logthistext)(QString text) = NULL;
|
//void (*wfmain::logthistext)(QString text) = NULL;
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,40 @@ enum vfo_t {
|
||||||
vfoSub = 0xD1
|
vfoSub = 0xD1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct rptrTone_t {
|
||||||
|
quint16 tone = 0;
|
||||||
|
bool useSecondaryVFO = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum duplexMode {
|
||||||
|
dmSplitOff=0x00,
|
||||||
|
dmSplitOn=0x01,
|
||||||
|
dmSimplex=0x10,
|
||||||
|
dmDupMinus=0x11,
|
||||||
|
dmDupPlus=0x12,
|
||||||
|
dmDupRPS=0x13,
|
||||||
|
dmDupAutoOn=0x26,
|
||||||
|
dmDupAutoOff=0x36
|
||||||
|
};
|
||||||
|
|
||||||
|
// Here, T=tone, D=DCS, N=none
|
||||||
|
// And the naming convention order is Transmit Receive
|
||||||
|
enum rptAccessTxRx {
|
||||||
|
ratrNN=0x00,
|
||||||
|
ratrTN=0x01, // "TONE" (T only)
|
||||||
|
ratrNT=0x02, // "TSQL" (R only)
|
||||||
|
ratrDD=0x03, // "DTCS" (TR)
|
||||||
|
ratrDN=0x06, // "DTCS(T)"
|
||||||
|
ratrTD=0x07, // "TONE(T) / TSQL(R)"
|
||||||
|
ratrDT=0x08, // "DTCS(T) / TSQL(R)"
|
||||||
|
ratrTT=0x09 // "TONE(T) / TSQL(R)"
|
||||||
|
};
|
||||||
|
|
||||||
|
struct rptrAccessData_t {
|
||||||
|
rptAccessTxRx accessMode = ratrNN;
|
||||||
|
bool useSecondaryVFO = false;
|
||||||
|
};
|
||||||
|
|
||||||
struct mode_info {
|
struct mode_info {
|
||||||
mode_kind mk;
|
mode_kind mk;
|
||||||
unsigned char reg;
|
unsigned char reg;
|
||||||
|
@ -119,7 +153,8 @@ enum cmds {
|
||||||
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
|
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
|
||||||
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
|
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
|
||||||
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
|
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
|
||||||
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
|
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdSetTone, cmdSetTSQL, cmdSetRptAccessMode,
|
||||||
|
cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS,
|
||||||
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
|
||||||
|
|
Ładowanie…
Reference in New Issue