kopia lustrzana https://gitlab.com/eliggett/wfview
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
rodzic
74c6d65e1d
commit
5c50b82dba
|
@ -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':
|
||||
|
|
|
@ -30,7 +30,9 @@ enum duplexMode{
|
|||
dmSimplex=0x10,
|
||||
dmDupMinus=0x11,
|
||||
dmDupPlus=0x12,
|
||||
dmDupRPS=0x13
|
||||
dmDupRPS=0x13,
|
||||
dmDupAutoOn=0x26,
|
||||
dmDupAutoOff=0x36
|
||||
};
|
||||
|
||||
class rigCommander : public QObject
|
||||
|
|
|
@ -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>
|
||||
|
|
63
wfmain.cpp
63
wfmain.cpp
|
@ -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);
|
||||
}
|
||||
|
|
15
wfmain.h
15
wfmain.h
|
@ -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
|
||||
|
|
15
wfmain.ui
15
wfmain.ui
|
@ -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>
|
||||
|
|
Ładowanie…
Reference in New Issue