kopia lustrzana https://gitlab.com/eliggett/wfview
Added AF and RF (RX) gain and ATU basics
rodzic
54881ddd51
commit
36b10d4100
|
@ -77,11 +77,12 @@ void commHandler::sendDataOut(const QByteArray &writeData)
|
|||
{
|
||||
|
||||
mutex.lock();
|
||||
quint64 bytesWritten;
|
||||
// quint64 bytesWritten;
|
||||
|
||||
// sned out data
|
||||
//port.send() or whatever
|
||||
bytesWritten = port->write(writeData);
|
||||
// bytesWritten = port->write(writeData);
|
||||
port->write(writeData);
|
||||
|
||||
//qDebug() << "bytesWritten: " << bytesWritten << " length of byte array: " << writeData.length() << " size of byte array: " << writeData.size();
|
||||
|
||||
|
|
|
@ -513,7 +513,7 @@ void rigCommander::parseLevels()
|
|||
qDebug() << "Received a level status readout: ";
|
||||
// printHex(payloadIn, false, true);
|
||||
|
||||
char level = (payloadIn[2] * 100) + payloadIn[03];
|
||||
unsigned char level = (payloadIn[2] * 100) + payloadIn[03];
|
||||
qDebug() << "Level is: " << (int)level << " or " << 100.0*level/255.0 << "%";
|
||||
|
||||
// Typical RF gain response (rather low setting):
|
||||
|
@ -524,15 +524,18 @@ void rigCommander::parseLevels()
|
|||
{
|
||||
case '\x01':
|
||||
// AF level
|
||||
emit haveAfGain(level);
|
||||
break;
|
||||
case '\x02':
|
||||
// RX RF Gain
|
||||
emit haveRfGain(level);
|
||||
break;
|
||||
case '\x03':
|
||||
// Squelch level
|
||||
break;
|
||||
case '\x0A':
|
||||
// TX RF level
|
||||
emit haveTxPower(level);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -543,6 +546,40 @@ void rigCommander::getRfGain()
|
|||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
void rigCommander::getAfGain()
|
||||
{
|
||||
QByteArray payload("\x14\x01");
|
||||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
void rigCommander::setRfGain(unsigned char level)
|
||||
{
|
||||
sendLevelCmd(0x02, level);
|
||||
}
|
||||
|
||||
void rigCommander::setAfGain(unsigned char level)
|
||||
{
|
||||
sendLevelCmd(0x01, level);
|
||||
}
|
||||
|
||||
void rigCommander::sendLevelCmd(unsigned char levAddr, unsigned char level)
|
||||
{
|
||||
QByteArray payload("\x14");
|
||||
payload.append(levAddr);
|
||||
// careful here. The value in the units and tens can't exceed 99.
|
||||
// ie, can't do this: 01 f2
|
||||
payload.append((int)level/100); // make sure it works with a zero
|
||||
// convert the tens:
|
||||
int tens = (level - 100*((int)level/100))/10;
|
||||
// convert the units:
|
||||
int units = level - 100*((int)level/100);
|
||||
units = units - 10*((int)(units/10));
|
||||
// combine and send:
|
||||
payload.append((tens << 4) | (units) ); // make sure it works with a zero
|
||||
|
||||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
void rigCommander::parseRegisters1C()
|
||||
{
|
||||
// PTT lives here
|
||||
|
@ -841,6 +878,12 @@ void rigCommander::parseMode()
|
|||
}
|
||||
|
||||
|
||||
void rigCommander::startATU()
|
||||
{
|
||||
QByteArray payload("\x1C\x01\x02");
|
||||
prepDataAndSend(payload);
|
||||
}
|
||||
|
||||
QByteArray rigCommander::stripData(const QByteArray &data, unsigned char cutPosition)
|
||||
{
|
||||
QByteArray rtndata;
|
||||
|
|
|
@ -42,6 +42,10 @@ public slots:
|
|||
void setDataMode(bool dataOn);
|
||||
void getDataMode();
|
||||
void getRfGain();
|
||||
void getAfGain();
|
||||
void setRfGain(unsigned char level);
|
||||
void setAfGain(unsigned char level);
|
||||
void startATU();
|
||||
void setCIVAddr(unsigned char civAddr);
|
||||
void handleNewData(const QByteArray &data);
|
||||
void getDebug();
|
||||
|
@ -53,6 +57,9 @@ signals:
|
|||
void haveDataMode(bool dataModeEnabled);
|
||||
void haveBandStackReg(float freq, char mode, bool dataOn);
|
||||
void haveSpectrumBounds();
|
||||
void haveRfGain(unsigned char level);
|
||||
void haveAfGain(unsigned char level);
|
||||
void haveTxPower(unsigned char level);
|
||||
void dataForComm(const QByteArray &outData);
|
||||
void getMoreDebug();
|
||||
void finished();
|
||||
|
@ -75,6 +82,7 @@ private:
|
|||
void parseRegisters1C();
|
||||
void parsePTT();
|
||||
void parseLevels(); // register 0x14
|
||||
void sendLevelCmd(unsigned char levAddr, unsigned char level);
|
||||
void sendDataOut();
|
||||
void prepDataAndSend(QByteArray data);
|
||||
void debugMe();
|
||||
|
|
53
wfmain.cpp
53
wfmain.cpp
|
@ -80,6 +80,12 @@ wfmain::wfmain(QWidget *parent) :
|
|||
connect(this, SIGNAL(setScopeSpan(char)), rig, SLOT(setScopeSpan(char)));
|
||||
connect(this, SIGNAL(setMode(char)), rig, SLOT(setMode(char)));
|
||||
connect(this, SIGNAL(getRfGain()), rig, SLOT(getRfGain()));
|
||||
connect(this, SIGNAL(getAfGain()), rig, SLOT(getAfGain()));
|
||||
connect(this, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
|
||||
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(startATU()), rig, SLOT(startATU()));
|
||||
|
||||
// Plot user interaction
|
||||
connect(plot, SIGNAL(mouseDoubleClick(QMouseEvent*)), this, SLOT(handlePlotDoubleClick(QMouseEvent*)));
|
||||
|
@ -133,7 +139,7 @@ wfmain::wfmain(QWidget *parent) :
|
|||
getInitialRigState();
|
||||
oldFreqDialVal = ui->freqDial->value();
|
||||
|
||||
|
||||
//tracer->visible();
|
||||
}
|
||||
|
||||
wfmain::~wfmain()
|
||||
|
@ -157,6 +163,9 @@ void wfmain::getInitialRigState()
|
|||
cmdOutQue.append(cmdGetFreq);
|
||||
cmdOutQue.append(cmdGetMode);
|
||||
|
||||
cmdOutQue.append(cmdGetRxGain);
|
||||
cmdOutQue.append(cmdGetAfGain);
|
||||
|
||||
cmdOut = cmdNone;
|
||||
delayedCommand->start();
|
||||
}
|
||||
|
@ -300,6 +309,12 @@ void wfmain::runDelayedCommand()
|
|||
case cmdSpecOff:
|
||||
emit spectOutputDisable();
|
||||
break;
|
||||
case cmdGetRxGain:
|
||||
emit getRfGain();
|
||||
break;
|
||||
case cmdGetAfGain:
|
||||
emit getAfGain();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -940,7 +955,7 @@ void wfmain::on_aboutBtn_clicked()
|
|||
QString copyright = QString("Copyright 2017, 2018 Elliott H. Liggett. All rights reserved.");
|
||||
QString ssCredit = QString("Stylesheet qdarkstyle used under MIT license, stored in application directory.");
|
||||
QString contact = QString("email the author: kilocharlie8@gmail.com or W6EL on the air!");
|
||||
QString buildInfo = QString("Build XXXX on YYYY-MM-DD at HH:MM by user UUUU");
|
||||
QString buildInfo = QString("Build " + QString(GITSHORT) + " on " + QString(__DATE__) + " at " + __TIME__ + " by " + UNAME + "@" + HOST);
|
||||
|
||||
QString aboutText = copyright + "\n" + ssCredit + "\n";
|
||||
aboutText.append(contact + "\n" + buildInfo);
|
||||
|
@ -977,3 +992,37 @@ void wfmain::on_fRclBtn_clicked()
|
|||
// add delayed command for mode and data mode
|
||||
|
||||
}
|
||||
|
||||
void wfmain::on_rfGainSlider_valueChanged(int value)
|
||||
{
|
||||
emit setRfGain((unsigned char) value);
|
||||
}
|
||||
|
||||
void wfmain::on_afGainSlider_valueChanged(int value)
|
||||
{
|
||||
emit setAfGain((unsigned char) value);
|
||||
}
|
||||
|
||||
void wfmain::receiveRfGain(unsigned char level)
|
||||
{
|
||||
qDebug() << "Setting RF Gain value to " << (int)level;
|
||||
ui->rfGainSlider->setValue(level);
|
||||
}
|
||||
|
||||
void wfmain::receiveAfGain(unsigned char level)
|
||||
{
|
||||
qDebug() << "Setting AF Gain value to " << (int)level;
|
||||
ui->afGainSlider->setValue(level);
|
||||
}
|
||||
|
||||
void wfmain::on_drawTracerChk_toggled(bool checked)
|
||||
{
|
||||
tracer->setVisible(checked);
|
||||
}
|
||||
|
||||
void wfmain::on_tuneNowBtn_clicked()
|
||||
{
|
||||
emit startATU();
|
||||
showStatusBarText("Starting ATU cycle...");
|
||||
|
||||
}
|
||||
|
|
21
wfmain.h
21
wfmain.h
|
@ -36,7 +36,11 @@ signals:
|
|||
void setPTT(bool pttOn);
|
||||
void getBandStackReg(char band, char regCode);
|
||||
void getRfGain();
|
||||
void getAfGain();
|
||||
void getDebug();
|
||||
void setRfGain(unsigned char level);
|
||||
void setAfGain(unsigned char level);
|
||||
void startATU();
|
||||
void spectOutputEnable();
|
||||
void spectOutputDisable();
|
||||
void scopeDisplayEnable();
|
||||
|
@ -53,6 +57,9 @@ private slots:
|
|||
void receivePTTstatus(bool pttOn);
|
||||
void receiveDataModeStatus(bool dataOn);
|
||||
void receiveBandStackReg(float freq, char mode, bool dataOn); // freq, mode, (filter,) datamode
|
||||
void receiveRfGain(unsigned char level);
|
||||
void receiveAfGain(unsigned char level);
|
||||
|
||||
void handlePlotClick(QMouseEvent *);
|
||||
void handlePlotDoubleClick(QMouseEvent *);
|
||||
void handleWFClick(QMouseEvent *);
|
||||
|
@ -141,6 +148,18 @@ private slots:
|
|||
|
||||
void on_aboutQtBtn_clicked();
|
||||
|
||||
void on_fStoBtn_clicked();
|
||||
|
||||
void on_fRclBtn_clicked();
|
||||
|
||||
void on_rfGainSlider_valueChanged(int value);
|
||||
|
||||
void on_afGainSlider_valueChanged(int value);
|
||||
|
||||
void on_drawTracerChk_toggled(bool checked);
|
||||
|
||||
void on_tuneNowBtn_clicked();
|
||||
|
||||
private:
|
||||
Ui::wfmain *ui;
|
||||
QCustomPlot *plot; // line plot
|
||||
|
@ -184,7 +203,7 @@ private:
|
|||
double freqMhz;
|
||||
double knobFreqMhz;
|
||||
enum cmds {cmdNone, cmdGetFreq, cmdGetMode, cmdGetDataMode, cmdSetDataModeOn, cmdSetDataModeOff,
|
||||
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable};
|
||||
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdGetAfGain};
|
||||
cmds cmdOut;
|
||||
QVector <cmds> cmdOutQue;
|
||||
int oldFreqDialVal;
|
||||
|
|
144
wfmain.ui
144
wfmain.ui
|
@ -18,7 +18,7 @@
|
|||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="mainTab">
|
||||
<attribute name="title">
|
||||
|
@ -199,6 +199,44 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="rfGainSlider">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>RX RF Gain</string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="afGainSlider">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>RX AF Gain</string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
|
@ -653,7 +691,7 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="pushButton_11">
|
||||
<widget class="QPushButton" name="fRclBtn">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
|
@ -1004,6 +1042,16 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="drawTracerChk">
|
||||
<property name="text">
|
||||
<string>Tracer</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="fullScreenChk">
|
||||
<property name="text">
|
||||
|
@ -1099,6 +1147,9 @@
|
|||
<property name="text">
|
||||
<string>When tuning, set lower digits to zero</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -1150,6 +1201,47 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="txPowerSlider">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>60</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>TX Power</string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="micGainSlider">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Mic Gain</string>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
|
@ -1165,6 +1257,54 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_16">
|
||||
<property name="topMargin">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="tuneEnableChk">
|
||||
<property name="text">
|
||||
<string>Enable ATU</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="tuneNowBtn">
|
||||
<property name="text">
|
||||
<string>Tune Now</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>ATU Status:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="tuneStatusLabel">
|
||||
<property name="text">
|
||||
<string> </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="tuneSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
|
|
|
@ -20,6 +20,11 @@ QMAKE_CXXFLAGS += -march=native
|
|||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
DEFINES += QCUSTOMPLOT_COMPILE_LIBRARY
|
||||
|
||||
DEFINES += HOST=\\\"`hostname`\\\" UNAME=\\\"`whoami`\\\"
|
||||
|
||||
DEFINES += GITSHORT="\\\"$(shell git -C $$PWD rev-parse --short HEAD)\\\""
|
||||
|
||||
|
||||
RESOURCES += qdarkstyle/style.qrc
|
||||
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue