Duplex controls now function. NB: "Auto" mode works as follows: User

selects "auto", rig does nothing, user changes frequency or band, and
then, the rig will automatically select the correct duplex mode. This is
the same way the rig works from the front panel.
merge-requests/2/head
Elliott Liggett 2021-02-18 21:47:19 -08:00
rodzic 74c6d65e1d
commit 5c50b82dba
6 zmienionych plików z 114 dodań i 25 usunięć

Wyświetl plik

@ -550,30 +550,29 @@ void rigCommander::getDataMode()
void rigCommander::setDuplexMode(duplexMode dm)
{
QByteArray payload;
payload.setRawData("\x0F", 1);
payload.append((unsigned char) dm);
if(dm==dmDupAutoOff)
{
payload.setRawData("\x1A\x05\x00\x46\x00", 5);
} else if (dm==dmDupAutoOn)
{
payload.setRawData("\x1A\x05\x00\x46\x01", 5);
} else {
payload.setRawData("\x0F", 1);
payload.append((unsigned char) dm);
}
prepDataAndSend(payload);
}
void rigCommander::getDuplexMode()
{
QByteArray payload;
payload.setRawData("\x0F\x00", 2);
// Duplex mode:
payload.setRawData("\x0F", 1);
prepDataAndSend(payload);
payload.setRawData("\x0F\x01", 2);
prepDataAndSend(payload);
payload.setRawData("\x0F\x10", 2);
prepDataAndSend(payload);
payload.setRawData("\x0F\x11", 2);
prepDataAndSend(payload);
payload.setRawData("\x0F\x12", 2);
prepDataAndSend(payload);
payload.setRawData("\x0F\x13", 2);
// Auto Repeater Mode:
payload.setRawData("\x1A\x05\x00\x46", 4);
prepDataAndSend(payload);
}
@ -803,6 +802,7 @@ void rigCommander::parseCommand()
this->parseMode();
break;
case '\x0F':
qDebug() << "Received duplex mode: " << (unsigned char)payloadIn[1];
emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]);
break;
case '\x14':

Wyświetl plik

@ -30,7 +30,9 @@ enum duplexMode{
dmSimplex=0x10,
dmDupMinus=0x11,
dmDupPlus=0x12,
dmDupRPS=0x13
dmDupRPS=0x13,
dmDupAutoOn=0x26,
dmDupAutoOff=0x36
};
class rigCommander : public QObject

Wyświetl plik

@ -99,7 +99,7 @@
<property name="maximumSize">
<size>
<width>16777215</width>
<height>15</height>
<height>20</height>
</size>
</property>
<property name="text">
@ -167,6 +167,12 @@
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
@ -299,7 +305,7 @@
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>true</bool>
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderShowSortIndicator" stdset="0">
<bool>true</bool>

Wyświetl plik

@ -273,6 +273,8 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
openRig();
qRegisterMetaType<rigCapabilities>();
qRegisterMetaType<duplexMode>();
qRegisterMetaType<rigInput>();
connect(rig, SIGNAL(haveFrequency(double)), this, SLOT(receiveFreq(double)));
connect(this, SIGNAL(getFrequency()), rig, SLOT(getFrequency()));
@ -292,6 +294,11 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
connect(this, SIGNAL(scopeDisplayEnable()), rig, SLOT(enableSpectrumDisplay()));
connect(rig, SIGNAL(haveMode(unsigned char, unsigned char)), this, SLOT(receiveMode(unsigned char, unsigned char)));
connect(rig, SIGNAL(haveDataMode(bool)), this, SLOT(receiveDataModeStatus(bool)));
connect(this, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
connect(this, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
connect(rig, SIGNAL(haveDuplexMode(duplexMode)), this, SLOT(receiveDuplexMode(duplexMode)));
connect(rig, SIGNAL(haveSpectrumData(QByteArray, double, double)), this, SLOT(receiveSpectrumData(QByteArray, double, double)));
connect(rig, SIGNAL(haveSpectrumFixedMode(bool)), this, SLOT(receiveSpectrumFixedMode(bool)));
connect(this, SIGNAL(setFrequency(double)), rig, SLOT(setFrequency(double)));
@ -1222,18 +1229,21 @@ void wfmain:: getInitialRigState()
cmdOutQue.append(cmdGetFreq);
cmdOutQue.append(cmdGetMode);
// From left to right in the UI:
cmdOutQue.append(cmdGetDataMode);
cmdOutQue.append(cmdGetRxGain);
cmdOutQue.append(cmdGetAfGain);
cmdOutQue.append(cmdGetSql);
cmdOutQue.append(cmdGetSpectrumRefLevel);
cmdOutQue.append(cmdGetTxPower);
cmdOutQue.append(cmdGetMicGain);
cmdOutQue.append(cmdGetSpectrumRefLevel);
cmdOutQue.append(cmdGetDuplexMode);
cmdOutQue.append(cmdDispEnable);
cmdOutQue.append(cmdSpecOn);
cmdOutQue.append(cmdNone);
if(rigCaps.hasATU)
{
cmdOutQue.append(cmdGetATUStatus);
@ -1400,6 +1410,9 @@ void wfmain::runDelayedCommand()
case cmdSetDataModeOn:
emit setDataMode(true);
break;
case cmdGetDuplexMode:
emit getDuplexMode();
break;
case cmdDispEnable:
emit scopeDisplayEnable();
break;
@ -2675,6 +2688,20 @@ void wfmain::receiveModInput(rigInput input)
void wfmain::receiveDuplexMode(duplexMode dm)
{
switch(dm)
{
case dmSimplex:
ui->rptSimplexBtn->setChecked(true);
break;
case dmDupPlus:
ui->rptDupPlusBtn->setChecked(true);
break;
case dmDupMinus:
ui->rptDupMinusBtn->setChecked(true);
break;
default:
break;
}
(void)dm;
}
@ -2748,8 +2775,8 @@ void wfmain::on_debugBtn_clicked()
// emit getLevels();
// emit getMeters(amTransmitting);
emit getSpectrumRefLevel();
//emit getSpectrumRefLevel();
emit getDuplexMode();
}
// Slot to send/receive server config.
@ -2768,3 +2795,31 @@ void wfmain::serverConfigRequested(SERVERCONFIG conf, bool store)
}
void wfmain::on_rptDupPlusBtn_clicked()
{
// DUP+
emit setDuplexMode(dmDupAutoOff);
emit setDuplexMode(dmDupPlus);
}
void wfmain::on_rptSimplexBtn_clicked()
{
// Simplex
emit setDuplexMode(dmDupAutoOff);
emit setDuplexMode(dmSimplex);
}
void wfmain::on_rptDupMinusBtn_clicked()
{
// DUP-
emit setDuplexMode(dmDupAutoOff);
emit setDuplexMode(dmDupMinus);
}
void wfmain::on_rptAutoBtn_clicked()
{
// Auto Rptr (enable this feature)
// TODO: Hide an AutoOff button somewhere for non-US users
emit setDuplexMode(dmDupAutoOn);
}

Wyświetl plik

@ -46,6 +46,7 @@ signals:
void setDataMode(bool dataOn);
void getDataMode();
void getDuplexMode();
void setDuplexMode(duplexMode dm);
void getModInput();
void getPTT();
void setPTT(bool pttOn);
@ -345,6 +346,14 @@ private slots:
void on_scopeRefLevelSlider_valueChanged(int value);
void on_rptDupPlusBtn_clicked();
void on_rptSimplexBtn_clicked();
void on_rptDupMinusBtn_clicked();
void on_rptAutoBtn_clicked();
private:
Ui::wfmain *ui;
QSettings settings;
@ -437,7 +446,7 @@ private:
enum cmds {cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdGetMode, cmdGetDataMode, cmdSetDataModeOn, cmdSetDataModeOff,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdGetAfGain,
cmdGetSql, cmdGetATUStatus, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT,
cmdGetTxPower, cmdGetMicGain, cmdGetSpectrumRefLevel};
cmdGetTxPower, cmdGetMicGain, cmdGetSpectrumRefLevel, cmdGetDuplexMode};
cmds cmdOut;
QVector <cmds> cmdOutQue;
freqMemory mem;
@ -527,7 +536,9 @@ private:
};
Q_DECLARE_METATYPE(struct rigCapabilities) ;
Q_DECLARE_METATYPE(struct rigCapabilities)
Q_DECLARE_METATYPE(enum rigInput)
Q_DECLARE_METATYPE(enum duplexMode)
#endif // WFMAIN_H

Wyświetl plik

@ -610,6 +610,9 @@
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">duplexBtnGrp</string>
</attribute>
</widget>
</item>
<item>
@ -617,6 +620,9 @@
<property name="text">
<string>Dup+</string>
</property>
<attribute name="buttonGroup">
<string notr="true">duplexBtnGrp</string>
</attribute>
</widget>
</item>
<item>
@ -624,6 +630,9 @@
<property name="text">
<string>Dup-</string>
</property>
<attribute name="buttonGroup">
<string notr="true">duplexBtnGrp</string>
</attribute>
</widget>
</item>
<item>
@ -631,6 +640,9 @@
<property name="text">
<string>Auto</string>
</property>
<attribute name="buttonGroup">
<string notr="true">duplexBtnGrp</string>
</attribute>
</widget>
</item>
</layout>
@ -1937,4 +1949,7 @@
</customwidgets>
<resources/>
<connections/>
<buttongroups>
<buttongroup name="duplexBtnGrp"/>
</buttongroups>
</ui>