From 908e92883800b979543779e1313fb49ca2a76545 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sun, 18 Nov 2018 00:01:20 -0800 Subject: [PATCH] Fixed AF/RF/SQL level bug --- rigcommander.cpp | 24 +++++++++++++++++++----- rigcommander.h | 2 ++ wfmain.cpp | 38 ++++++++++++++++++++++++++++++++++---- wfmain.h | 5 ++++- wfmain.ui | 10 +++++----- 5 files changed, 64 insertions(+), 15 deletions(-) diff --git a/rigcommander.cpp b/rigcommander.cpp index 00ab201..c1cca71 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -510,11 +510,17 @@ void rigCommander::parseCommand() void rigCommander::parseLevels() { - qDebug() << "Received a level status readout: "; + //qDebug() << "Received a level status readout: "; // printHex(payloadIn, false, true); - unsigned char level = (payloadIn[2] * 100) + payloadIn[03]; - qDebug() << "Level is: " << (int)level << " or " << 100.0*level/255.0 << "%"; + // wrong: unsigned char level = (payloadIn[2] * 100) + payloadIn[03]; + unsigned char hundreds = payloadIn[2]; + unsigned char tens = (payloadIn[3] & 0xf0) >> 4; + unsigned char units = (payloadIn[3] & 0x0f); + + unsigned char level = (100*hundreds) + (10*tens) + units; + + //qDebug() << "Level is: " << (int)level << " or " << 100.0*level/255.0 << "%"; // Typical RF gain response (rather low setting): // "INDEX: 00 01 02 03 04 " @@ -532,6 +538,7 @@ void rigCommander::parseLevels() break; case '\x03': // Squelch level + emit haveSql(level); break; case '\x0A': // TX RF level @@ -552,6 +559,13 @@ void rigCommander::getAfGain() prepDataAndSend(payload); } +void rigCommander::getSql() +{ + // Squelch + QByteArray payload("\x14\x03"); + prepDataAndSend(payload); +} + void rigCommander::setRfGain(unsigned char level) { sendLevelCmd(0x02, level); @@ -633,8 +647,8 @@ void rigCommander::parseRegisters1A() // 01: band stacking memory contents (last freq used is stored here per-band) // 03: filter width // 04: AGC rate - qDebug() << "Looking at register 1A :"; - printHex(payloadIn, false, true); + // qDebug() << "Looking at register 1A :"; + // printHex(payloadIn, false, true); // "INDEX: 00 01 02 03 04 " // "DATA: 1a 06 01 03 fd " (data mode enabled, filter width 3 selected) diff --git a/rigcommander.h b/rigcommander.h index f5e4823..947e102 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -43,6 +43,7 @@ public slots: void getDataMode(); void getRfGain(); void getAfGain(); + void getSql(); void setRfGain(unsigned char level); void setAfGain(unsigned char level); void startATU(); @@ -61,6 +62,7 @@ signals: void haveSpectrumBounds(); void haveRfGain(unsigned char level); void haveAfGain(unsigned char level); + void haveSql(unsigned char level); void haveTxPower(unsigned char level); void dataForComm(const QByteArray &outData); void getMoreDebug(); diff --git a/wfmain.cpp b/wfmain.cpp index 699b37a..a37d7d7 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -85,6 +85,8 @@ wfmain::wfmain(QWidget *parent) : connect(this, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char))); connect(rig, SIGNAL(haveRfGain(unsigned char)), this, SLOT(receiveRfGain(unsigned char))); connect(rig, SIGNAL(haveAfGain(unsigned char)), this, SLOT(receiveAfGain(unsigned char))); + connect(this, SIGNAL(getSql()), rig, SLOT(getSql())); + connect(rig, SIGNAL(haveSql(unsigned char)), this, SLOT(receiveSql(unsigned char))); connect(this, SIGNAL(startATU()), rig, SLOT(startATU())); connect(this, SIGNAL(setATU(bool)), rig, SLOT(setATU(bool))); @@ -138,10 +140,18 @@ wfmain::wfmain(QWidget *parent) : ui->commPortDrop->addItem(serialPortInfo.portName()); } + // Initial state of UI: + // TODO: Use QSettings and/or argv to set. + ui->fullScreenChk->setChecked(true); + ui->useDarkThemeChk->setChecked(true); + ui->drawPeakChk->setChecked(true); + on_useDarkThemeChk_clicked(true); + on_fullScreenChk_clicked(true); + on_drawPeakChk_clicked(true); + getInitialRigState(); oldFreqDialVal = ui->freqDial->value(); - //tracer->visible(); } wfmain::~wfmain() @@ -167,6 +177,7 @@ void wfmain::getInitialRigState() cmdOutQue.append(cmdGetRxGain); cmdOutQue.append(cmdGetAfGain); + cmdOutQue.append(cmdGetSql); cmdOut = cmdNone; delayedCommand->start(); @@ -317,6 +328,9 @@ void wfmain::runDelayedCommand() case cmdGetAfGain: emit getAfGain(); break; + case cmdGetSql: + emit getSql(); + break; default: break; } @@ -505,7 +519,15 @@ void wfmain::on_debugBtn_clicked() // Temporary place to try code // emit getDebug(); // emit getBandStackReg(0x11,1); // 20M, latest - emit getRfGain(); + // emit getRfGain(); + + for(int a=0; a<100; a++) + { + cmdOutQue.append(cmdGetRxGain); + cmdOutQue.append(cmdGetSql); + } + delayedCommand->start(); + } void wfmain::on_stopBtn_clicked() @@ -1007,16 +1029,24 @@ void wfmain::on_afGainSlider_valueChanged(int value) void wfmain::receiveRfGain(unsigned char level) { - qDebug() << "Setting RF Gain value to " << (int)level; + // qDebug() << "Receive RF level of" << (int)level << " = " << 100*level/255.0 << "%"; ui->rfGainSlider->setValue(level); } void wfmain::receiveAfGain(unsigned char level) { - qDebug() << "Setting AF Gain value to " << (int)level; + //qDebug() << "Receive AF level of" << (int)level << " = " << 100*level/255.0 << "%"; ui->afGainSlider->setValue(level); } +void wfmain::receiveSql(unsigned char level) +{ + qDebug() << "Receive SQL level of " << (int)level << " = " << 100*level/255.0 << "%"; + // ui->sqlSlider->setValue(level); // No SQL control so far +} + + + void wfmain::on_drawTracerChk_toggled(bool checked) { tracer->setVisible(checked); diff --git a/wfmain.h b/wfmain.h index 73881bb..44226ae 100644 --- a/wfmain.h +++ b/wfmain.h @@ -37,6 +37,7 @@ signals: void getBandStackReg(char band, char regCode); void getRfGain(); void getAfGain(); + void getSql(); void getDebug(); void setRfGain(unsigned char level); void setAfGain(unsigned char level); @@ -60,6 +61,7 @@ private slots: void receiveBandStackReg(float freq, char mode, bool dataOn); // freq, mode, (filter,) datamode void receiveRfGain(unsigned char level); void receiveAfGain(unsigned char level); + void receiveSql(unsigned char level); void handlePlotClick(QMouseEvent *); void handlePlotDoubleClick(QMouseEvent *); @@ -206,7 +208,8 @@ private: double freqMhz; double knobFreqMhz; enum cmds {cmdNone, cmdGetFreq, cmdGetMode, cmdGetDataMode, cmdSetDataModeOn, cmdSetDataModeOff, - cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdGetAfGain}; + cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdGetAfGain, + cmdGetSql}; cmds cmdOut; QVector cmdOutQue; int oldFreqDialVal; diff --git a/wfmain.ui b/wfmain.ui index 5539c56..770c7ce 100644 --- a/wfmain.ui +++ b/wfmain.ui @@ -6,7 +6,7 @@ 0 0 - 589 + 630 582 @@ -18,7 +18,7 @@ - 3 + 0 @@ -1286,7 +1286,7 @@ - + @@ -1329,8 +1329,8 @@ 0 0 - 589 - 20 + 630 + 26