Now grabs scope state on startup. Found bug, did not fix, in the

frequency parsing code. Worked aroud it by using doubles for now.
merge-requests/2/head
Elliott Liggett 2021-04-11 00:42:25 -07:00
rodzic aac777eb07
commit ce3c4dfe54
4 zmienionych plików z 71 dodań i 8 usunięć

Wyświetl plik

@ -372,9 +372,15 @@ void rigCommander::setScopeEdge(char edge)
}
void rigCommander::getScopeSpan()
{
getScopeSpan(false);
}
void rigCommander::getScopeSpan(bool isSub)
{
QByteArray payload;
payload.setRawData("\x27\x15", 2);
payload.append(static_cast<unsigned char>(isSub));
prepDataAndSend(payload);
}
@ -1013,7 +1019,9 @@ void rigCommander::parseCommand()
// note: data already is trimmed of the beginning FE FE E0 94 stuff.
#ifdef QT_DEBUG
if( (payloadIn[00] != '\x27') && (payloadIn[00] != '\x15') )
bool isSpectrumData = payloadIn.startsWith(QByteArray().setRawData("\x27\x00", 2));
if( (!isSpectrumData) && (payloadIn[00] != '\x15') )
{
// We do not log spectrum and meter data,
// as they tend to clog up any useful logging.
@ -2257,7 +2265,8 @@ void rigCommander::parseDetailedRegisters1A05()
void rigCommander::parseWFData()
{
//float freqSpan = 0.0;
freqt freqSpan;
bool isSub;
switch(payloadIn[1])
{
case 0:
@ -2281,8 +2290,10 @@ void rigCommander::parseWFData()
// read span in center mode
// [1] 0x15
// [2] to [8] is span encoded as a frequency
//freqSpan = parseFrequency(payloadIn, 8);
//qDebug(logRig()) << "Received 0x15 center span data: for frequency " << freqSpan;
isSub = payloadIn.at(2)==0x01;
freqSpan = parseFrequency(payloadIn, 6);
emit haveScopeSpan(freqSpan, isSub);
qDebug(logRig()) << "Received 0x15 center span data: for frequency " << freqSpan.Hz;
//printHex(payloadIn, false, true);
break;
case 0x16:
@ -2807,6 +2818,10 @@ freqt rigCommander::parseFrequency(QByteArray data, unsigned char lastPosition)
//printHex(data, false, true);
// TODO: Check length of data array prior to reading +/- position
// TODO: 64-bit value is incorrect, multiplying by wrong numbers.
float freq = 0.0;
freqt freqs;

Wyświetl plik

@ -67,7 +67,9 @@ public slots:
void getSpectrumRefLevel();
void getSpectrumRefLevel(unsigned char mainSub);
void setScopeSpan(char span);
void getScopeSpan(bool isSub);
void getScopeSpan();
void setScopeEdge(char edge);
void getScopeEdge();
void getScopeMode();
@ -215,7 +217,7 @@ signals:
// Spectrum:
void haveSpectrumData(QByteArray spectrum, double startFreq, double endFreq); // pass along data to UI
void haveSpectrumBounds();
void haveScopeSpan(char span);
void haveScopeSpan(freqt span, bool isSub);
void haveSpectrumMode(spectrumMode spectmode);
void haveScopeEdge(char edge);
void haveSpectrumRefLevel(int level);

Wyświetl plik

@ -399,9 +399,10 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
connect(this, SIGNAL(setFrequency(freqt)), rig, SLOT(setFrequency(freqt)));
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()));
//connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode()));
connect(this, SIGNAL(getScopeEdge()), rig, SLOT(getScopeEdge()));
connect(this, SIGNAL(getScopeSpan()), rig, SLOT(getScopeSpan()));
connect(rig, SIGNAL(haveScopeSpan(freqt,bool)), this, SLOT(receiveSpectrumSpan(freqt,bool)));
connect(this, SIGNAL(setScopeFixedEdge(double,double,unsigned char)), rig, SLOT(setSpectrumBounds(double,double,unsigned char)));
connect(this, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char)));
@ -1498,6 +1499,9 @@ void wfmain:: getInitialRigState()
cmdOutQue.append(cmdGetPreamp);
}
cmdOutQue.append(cmdGetSpectrumMode);
cmdOutQue.append(cmdGetSpectrumSpan);
cmdOutQue.append(cmdNone);
cmdOutQue.append(cmdStartRegularPolling);
@ -1853,6 +1857,9 @@ void wfmain::runDelayedCommand()
case cmdGetSpectrumMode:
emit getScopeMode();
break;
case cmdGetSpectrumSpan:
emit getScopeSpan();
break;
case cmdSpecOn:
emit spectOutputEnable();
break;
@ -3694,6 +3701,44 @@ void wfmain::receiveAttenuator(unsigned char att)
ui->attSelCombo->setCurrentIndex(attindex);
}
void wfmain::receiveSpectrumSpan(freqt freqspan, bool isSub)
{
if(!isSub)
{
switch((int)(freqspan.MHzDouble * 1000000.0))
{
case(2500):
ui->scopeBWCombo->setCurrentIndex(0);
break;
case(5000):
ui->scopeBWCombo->setCurrentIndex(1);
break;
case(10000):
ui->scopeBWCombo->setCurrentIndex(2);
break;
case(25000):
ui->scopeBWCombo->setCurrentIndex(3);
break;
case(50000):
ui->scopeBWCombo->setCurrentIndex(4);
break;
case(100000):
ui->scopeBWCombo->setCurrentIndex(5);
break;
case(250000):
ui->scopeBWCombo->setCurrentIndex(6);
break;
case(500000):
ui->scopeBWCombo->setCurrentIndex(7);
break;
default:
qDebug(logSystem()) << __func__ << "Could not match: " << freqspan.MHzDouble << " to anything like: " << (int)(freqspan.MHzDouble*1E6);
break;
}
}
}
// --- DEBUG FUNCTION ---
void wfmain::on_debugBtn_clicked()
{
@ -3709,5 +3754,5 @@ void wfmain::on_debugBtn_clicked()
// emit getTSQL();
qDebug(logSystem()) << "Getting scope mode";
emit getScopeMode();
emit getScopeMode(); // center or fixed
}

Wyświetl plik

@ -171,6 +171,7 @@ private slots:
void receiveMode(unsigned char mode, unsigned char filter);
void receiveSpectrumData(QByteArray spectrum, double startFreq, double endFreq);
void receiveSpectrumMode(spectrumMode spectMode);
void receiveSpectrumSpan(freqt freqspan, bool isSub);
void receivePTTstatus(bool pttOn);
void receiveDataModeStatus(bool dataOn);
void receiveBandStackReg(float freq, char mode, bool dataOn); // freq, mode, (filter,) datamode
@ -501,7 +502,7 @@ private:
enum cmds {cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdGetMode, cmdGetDataMode, cmdSetDataModeOn, cmdSetDataModeOff,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdGetAfGain,
cmdGetSql, cmdGetATUStatus, cmdGetSpectrumMode, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT,
cmdGetSql, cmdGetATUStatus, cmdGetSpectrumMode, cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT,
cmdGetTxPower, cmdGetMicGain, cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdGetVdMeter, cmdGetIdMeter,
cmdGetSMeter, cmdGetPowerMeter, cmdGetALCMeter, cmdGetCompMeter,