kopia lustrzana https://gitlab.com/eliggett/wfview
Added support for Scroll modes in latest firmware. Removed setCenter...
signals and replaced with setScopeMode signals. Fixed a bug where we could not query the scope mode.merge-requests/2/head
rodzic
c74d5d448d
commit
5a673e256c
|
@ -149,7 +149,7 @@ void rigCommander::setup()
|
|||
|
||||
lookingForRig = false;
|
||||
foundRig = false;
|
||||
oldScopeMode = 3;
|
||||
oldScopeMode = spectModeUnknown;
|
||||
|
||||
pttAllowed = true; // This is for developing, set to false for "safe" debugging. Set to true for deployment.
|
||||
}
|
||||
|
@ -326,7 +326,7 @@ void rigCommander::getScopeMode()
|
|||
{
|
||||
// center or fixed
|
||||
QByteArray payload;
|
||||
payload.setRawData("\x27\x14", 2);
|
||||
payload.setRawData("\x27\x14\x00", 3);
|
||||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
|
@ -419,6 +419,14 @@ void rigCommander::setSpectrumCenteredMode(bool centerEnable)
|
|||
prepDataAndSend(specModePayload);
|
||||
}
|
||||
|
||||
void rigCommander::setSpectrumMode(spectrumMode spectMode)
|
||||
{
|
||||
QByteArray specModePayload;
|
||||
specModePayload.setRawData("\x27\x14\x00", 3);
|
||||
specModePayload.append( static_cast<unsigned char>(spectMode) );
|
||||
prepDataAndSend(specModePayload);
|
||||
}
|
||||
|
||||
void rigCommander::getSpectrumRefLevel()
|
||||
{
|
||||
QByteArray payload;
|
||||
|
@ -468,6 +476,13 @@ void rigCommander::getSpectrumCenterMode()
|
|||
prepDataAndSend(specModePayload);
|
||||
}
|
||||
|
||||
void rigCommander::getSpectrumMode()
|
||||
{
|
||||
QByteArray specModePayload;
|
||||
specModePayload.setRawData("\x27\x14", 2);
|
||||
prepDataAndSend(specModePayload);
|
||||
}
|
||||
|
||||
void rigCommander::setFrequency(double freq)
|
||||
{
|
||||
QByteArray freqPayload = makeFreqPayload(freq);
|
||||
|
@ -1970,11 +1985,11 @@ void rigCommander::parseWFData()
|
|||
break;
|
||||
case 0x14:
|
||||
// fixed or center
|
||||
emit haveSpectrumFixedMode((bool)payloadIn[2]);
|
||||
qDebug(logRig()) << "received 0x14 command fix/center";
|
||||
printHex(payloadIn, false, true);
|
||||
//emit haveSpectrumFixedMode((bool)payloadIn[2]);
|
||||
emit haveSpectrumMode(static_cast<spectrumMode>((unsigned char)payloadIn[3]));
|
||||
// [1] 0x14
|
||||
// [2] 0x00 (center), 0x01 (fixed)
|
||||
// [2] 0x00
|
||||
// [3] 0x00 (center), 0x01 (fixed), 0x02, 0x03
|
||||
break;
|
||||
case 0x15:
|
||||
// read span in center mode
|
||||
|
@ -2236,22 +2251,28 @@ void rigCommander::parseSpectrum()
|
|||
if ((sequence == 1) && (sequence < rigCaps.spectSeqMax))
|
||||
{
|
||||
|
||||
unsigned char scopeMode = bcdHexToUChar(payloadIn[05]); // 0=center, 1=fixed
|
||||
spectrumMode scopeMode = (spectrumMode)bcdHexToUChar(payloadIn[05]); // 0=center, 1=fixed
|
||||
|
||||
if(scopeMode != oldScopeMode)
|
||||
{
|
||||
//TODO: Figure out if this is the first spectrum, and if so, always emit.
|
||||
emit haveSpectrumFixedMode(scopeMode==1);
|
||||
//TODO: support the other two modes (firmware 1.40)
|
||||
// Modes:
|
||||
// 0x00 Center
|
||||
// 0x01 Fixed
|
||||
// 0x02 Scroll-C
|
||||
// 0x03 Scroll-F
|
||||
emit haveSpectrumMode(scopeMode);
|
||||
emit haveSpectrumFixedMode(scopeMode==spectModeFixed);
|
||||
oldScopeMode = scopeMode;
|
||||
}
|
||||
|
||||
|
||||
// wave information
|
||||
spectrumLine.clear();
|
||||
// parseFrequency(endPosition); // overload does not emit! Return? Where? how...
|
||||
// For Fixed, and both scroll modes, the following produces correct information:
|
||||
spectrumStartFreq = parseFrequency(payloadIn, 9);
|
||||
spectrumEndFreq = parseFrequency(payloadIn, 14);
|
||||
if(scopeMode == 0)
|
||||
if(scopeMode == spectModeCenter)
|
||||
{
|
||||
// "center" mode, start is actuall center, end is bandwidth.
|
||||
spectrumStartFreq -= spectrumEndFreq;
|
||||
|
|
|
@ -36,6 +36,14 @@ enum meterKind {
|
|||
meterCurrent
|
||||
};
|
||||
|
||||
enum spectrumMode {
|
||||
spectModeCenter=0x00,
|
||||
spectModeFixed=0x01,
|
||||
spectModeScrollC=0x02,
|
||||
spectModeScrollF=0x03,
|
||||
spectModeUnknown=0xff
|
||||
};
|
||||
|
||||
class rigCommander : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -57,7 +65,9 @@ public slots:
|
|||
void disableSpectrumDisplay();
|
||||
void setSpectrumBounds(double startFreq, double endFreq, unsigned char edgeNumber);
|
||||
void setSpectrumCenteredMode(bool centerEnable); // centered or band-wise
|
||||
void setSpectrumMode(spectrumMode spectMode);
|
||||
void getSpectrumCenterMode();
|
||||
void getSpectrumMode();
|
||||
void setSpectrumRefLevel(int level);
|
||||
void getSpectrumRefLevel();
|
||||
void getSpectrumRefLevel(unsigned char mainSub);
|
||||
|
@ -161,6 +171,7 @@ signals:
|
|||
void haveSpectrumBounds();
|
||||
void haveScopeSpan(char span);
|
||||
void haveSpectrumFixedMode(bool fixedEnabled);
|
||||
void haveSpectrumMode(spectrumMode spectmode);
|
||||
void haveScopeEdge(char edge);
|
||||
void haveSpectrumRefLevel(int level);
|
||||
|
||||
|
@ -260,7 +271,7 @@ private:
|
|||
quint8 spectSeqMax;
|
||||
quint16 spectAmpMax;
|
||||
quint16 spectLenMax;
|
||||
unsigned char oldScopeMode;
|
||||
spectrumMode oldScopeMode;
|
||||
|
||||
bool usingNativeLAN; // indicates using OEM LAN connection (705,7610,9700,7850)
|
||||
bool lookingForRig;
|
||||
|
|
56
wfmain.cpp
56
wfmain.cpp
|
@ -171,6 +171,12 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
|
|||
loadSettings(); // Look for saved preferences
|
||||
setTuningSteps(); // TODO: Combine into preferences
|
||||
|
||||
ui->spectrumModeCombo->addItem("Center", (spectrumMode)spectModeCenter);
|
||||
ui->spectrumModeCombo->addItem("Fixed", (spectrumMode)spectModeFixed);
|
||||
ui->spectrumModeCombo->addItem("Scroll-C", (spectrumMode)spectModeScrollC);
|
||||
ui->spectrumModeCombo->addItem("Scroll-F", (spectrumMode)spectModeScrollF);
|
||||
|
||||
|
||||
// if setting for serial port is "auto" then...
|
||||
// if(prefs.serialPortRadio == QString("auto"))
|
||||
// {
|
||||
|
@ -285,6 +291,7 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
|
|||
qRegisterMetaType<duplexMode>();
|
||||
qRegisterMetaType<rigInput>();
|
||||
qRegisterMetaType<meterKind>();
|
||||
qRegisterMetaType<spectrumMode>();
|
||||
|
||||
connect(rig, SIGNAL(haveFrequency(double)), this, SLOT(receiveFreq(double)));
|
||||
connect(this, SIGNAL(getFrequency()), rig, SLOT(getFrequency()));
|
||||
|
@ -315,8 +322,11 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
|
|||
|
||||
connect(rig, SIGNAL(haveSpectrumData(QByteArray, double, double)), this, SLOT(receiveSpectrumData(QByteArray, double, double)));
|
||||
connect(rig, SIGNAL(haveSpectrumFixedMode(bool)), this, SLOT(receiveSpectrumFixedMode(bool)));
|
||||
connect(rig, SIGNAL(haveSpectrumMode(spectrumMode)), this, SLOT(receiveSpectrumMode(spectrumMode)));
|
||||
connect(this, SIGNAL(setScopeMode(spectrumMode)), rig, SLOT(setSpectrumMode(spectrumMode)));
|
||||
connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode()));
|
||||
|
||||
connect(this, SIGNAL(setFrequency(double)), rig, SLOT(setFrequency(double)));
|
||||
connect(this, SIGNAL(setScopeCenterMode(bool)), rig, SLOT(setSpectrumCenteredMode(bool)));
|
||||
connect(this, SIGNAL(setScopeEdge(char)), rig, SLOT(setScopeEdge(char)));
|
||||
connect(this, SIGNAL(setScopeSpan(char)), rig, SLOT(setScopeSpan(char)));
|
||||
connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode()));
|
||||
|
@ -1581,10 +1591,10 @@ void wfmain::runPeriodicCommands()
|
|||
emit getATUStatus();
|
||||
break;
|
||||
case cmdScopeCenterMode:
|
||||
emit setScopeCenterMode(true);
|
||||
emit setScopeMode(spectModeCenter);
|
||||
break;
|
||||
case cmdScopeFixedMode:
|
||||
emit setScopeCenterMode(false);
|
||||
emit setScopeMode(spectModeFixed);
|
||||
break;
|
||||
case cmdGetPTT:
|
||||
emit getPTT();
|
||||
|
@ -1675,6 +1685,9 @@ void wfmain::runDelayedCommand()
|
|||
case cmdDispDisable:
|
||||
emit scopeDisplayDisable();
|
||||
break;
|
||||
case cmdGetSpectrumMode:
|
||||
emit getScopeMode();
|
||||
break;
|
||||
case cmdSpecOn:
|
||||
emit spectOutputEnable();
|
||||
break;
|
||||
|
@ -1703,10 +1716,10 @@ void wfmain::runDelayedCommand()
|
|||
emit getATUStatus();
|
||||
break;
|
||||
case cmdScopeCenterMode:
|
||||
emit setScopeCenterMode(true);
|
||||
emit setScopeMode(spectModeCenter);
|
||||
break;
|
||||
case cmdScopeFixedMode:
|
||||
emit setScopeCenterMode(false);
|
||||
emit setScopeMode(spectModeFixed);
|
||||
break;
|
||||
case cmdGetPTT:
|
||||
emit getPTT();
|
||||
|
@ -2000,11 +2013,24 @@ void wfmain::receiveSpectrumData(QByteArray spectrum, double startFreq, double e
|
|||
|
||||
void wfmain::receiveSpectrumFixedMode(bool isFixed)
|
||||
{
|
||||
ui->scopeCenterModeChk->blockSignals(true);
|
||||
ui->scopeCenterModeChk->setChecked(!isFixed);
|
||||
ui->scopeCenterModeChk->blockSignals(false);
|
||||
qDebug() << __func__ << "Please remove this";
|
||||
(void)isFixed;
|
||||
}
|
||||
|
||||
void wfmain::receiveSpectrumMode(spectrumMode spectMode)
|
||||
{
|
||||
for(int i=0; i < ui->spectrumModeCombo->count(); i++)
|
||||
{
|
||||
if(static_cast<spectrumMode>(ui->spectrumModeCombo->itemData(i).toInt()) == spectMode)
|
||||
{
|
||||
ui->spectrumModeCombo->blockSignals(true);
|
||||
ui->spectrumModeCombo->setCurrentIndex(i);
|
||||
ui->spectrumModeCombo->blockSignals(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wfmain::handlePlotDoubleClick(QMouseEvent *me)
|
||||
{
|
||||
double x;
|
||||
|
@ -2314,9 +2340,9 @@ void wfmain::on_fCEbtn_clicked()
|
|||
freqTextSelected = false;
|
||||
}
|
||||
|
||||
void wfmain::on_scopeCenterModeChk_clicked(bool checked)
|
||||
void wfmain::on_spectrumModeCombo_currentIndexChanged(int index)
|
||||
{
|
||||
emit setScopeCenterMode(checked);
|
||||
emit setScopeMode(static_cast<spectrumMode>(ui->spectrumModeCombo->itemData(index).toInt()));
|
||||
}
|
||||
|
||||
void wfmain::on_fEnterBtn_clicked()
|
||||
|
@ -2907,10 +2933,10 @@ void wfmain::on_toFixedBtn_clicked()
|
|||
{
|
||||
emit setScopeFixedEdge(oldLowerFreq, oldUpperFreq, ui->scopeEdgeCombo->currentIndex()+1);
|
||||
emit setScopeEdge(ui->scopeEdgeCombo->currentIndex()+1);
|
||||
cmdOutQue.append(cmdScopeFixedMode);
|
||||
delayedCommand->start();
|
||||
issueDelayedCommand(cmdScopeFixedMode);
|
||||
}
|
||||
|
||||
|
||||
void wfmain::on_connectBtn_clicked()
|
||||
{
|
||||
this->rigStatus->setText(""); // Clear status
|
||||
|
@ -3410,5 +3436,9 @@ void wfmain::on_debugBtn_clicked()
|
|||
// emit getMeters(amTransmitting);
|
||||
|
||||
// emit getTSQL();
|
||||
ui->meterWidget->update();
|
||||
qDebug(logSystem()) << "Getting scope mode";
|
||||
emit getScopeMode();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
12
wfmain.h
12
wfmain.h
|
@ -96,7 +96,7 @@ signals:
|
|||
void spectOutputDisable();
|
||||
void scopeDisplayEnable();
|
||||
void scopeDisplayDisable();
|
||||
void setScopeCenterMode(bool centerEnable);
|
||||
void setScopeMode(spectrumMode spectMode);
|
||||
void setScopeSpan(char span);
|
||||
void setScopeEdge(char edge);
|
||||
void setScopeFixedEdge(double startFreq, double endFreq, unsigned char edgeNumber);
|
||||
|
@ -156,6 +156,7 @@ private slots:
|
|||
void receiveMode(unsigned char mode, unsigned char filter);
|
||||
void receiveSpectrumData(QByteArray spectrum, double startFreq, double endFreq);
|
||||
void receiveSpectrumFixedMode(bool isFixed);
|
||||
void receiveSpectrumMode(spectrumMode spectMode);
|
||||
void receivePTTstatus(bool pttOn);
|
||||
void receiveDataModeStatus(bool dataOn);
|
||||
void receiveBandStackReg(float freq, char mode, bool dataOn); // freq, mode, (filter,) datamode
|
||||
|
@ -235,9 +236,6 @@ private slots:
|
|||
|
||||
void on_fCEbtn_clicked();
|
||||
|
||||
|
||||
void on_scopeCenterModeChk_clicked(bool checked);
|
||||
|
||||
void on_fEnterBtn_clicked();
|
||||
|
||||
void on_scopeBWCombo_currentIndexChanged(int index);
|
||||
|
@ -377,6 +375,8 @@ private slots:
|
|||
|
||||
void on_tuneLockChk_clicked(bool checked);
|
||||
|
||||
void on_spectrumModeCombo_currentIndexChanged(int index);
|
||||
|
||||
private:
|
||||
Ui::wfmain *ui;
|
||||
QSettings settings;
|
||||
|
@ -475,7 +475,7 @@ private:
|
|||
double knobFreqMhz;
|
||||
enum cmds {cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdGetMode, cmdGetDataMode, cmdSetDataModeOn, cmdSetDataModeOff,
|
||||
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdGetAfGain,
|
||||
cmdGetSql, cmdGetATUStatus, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT,
|
||||
cmdGetSql, cmdGetATUStatus, cmdGetSpectrumMode, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT,
|
||||
cmdGetTxPower, cmdGetMicGain, cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
|
||||
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdGetVdMeter, cmdGetIdMeter,
|
||||
cmdGetSMeter, cmdGetPowerMeter, cmdGetALCMeter, cmdGetCompMeter};
|
||||
|
@ -616,6 +616,6 @@ Q_DECLARE_METATYPE(struct rigCapabilities)
|
|||
Q_DECLARE_METATYPE(enum rigInput)
|
||||
Q_DECLARE_METATYPE(enum duplexMode)
|
||||
Q_DECLARE_METATYPE(enum meterKind)
|
||||
|
||||
Q_DECLARE_METATYPE(enum spectrumMode)
|
||||
|
||||
#endif // WFMAIN_H
|
||||
|
|
|
@ -49,12 +49,15 @@
|
|||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="scopeCenterModeChk">
|
||||
<widget class="QLabel" name="label_26">
|
||||
<property name="text">
|
||||
<string>Center Mode</string>
|
||||
<string>Spectrum Mode: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="spectrumModeCombo"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
|
|
Ładowanie…
Reference in New Issue