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
Elliott Liggett 2021-02-28 21:41:27 -08:00
rodzic c74d5d448d
commit 5a673e256c
5 zmienionych plików z 98 dodań i 33 usunięć

Wyświetl plik

@ -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;

Wyświetl plik

@ -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;

Wyświetl plik

@ -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();
}

Wyświetl plik

@ -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

Wyświetl plik

@ -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">