Added AF and RF (RX) gain and ATU basics

merge-requests/1/merge
Elliott Liggett 2018-11-16 22:19:44 -08:00
rodzic 54881ddd51
commit 36b10d4100
7 zmienionych plików z 273 dodań i 8 usunięć

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -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
Wyświetl plik

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

Wyświetl plik

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