Merge remote-tracking branch 'origin/rigs' into audio-enhance

merge-requests/7/head
Phil Taylor 2021-11-06 10:20:11 +00:00
commit 0f48959a75
16 zmienionych plików z 657 dodań i 61 usunięć

BIN
.swo

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -1,5 +1,22 @@
# CHANGELOG
- 20211022
Don't block until audio buffer has space
Bit of tidying
- 20211020
Tidy-up server shutdown
Trying to find cause of lockup when client disappears
- 20211006
Send TX/Freq changes multiple times with rigctld
bumped to 1.2d hopefully last testversion before 1.20
- 202109022
Remove duplicate setPriority()

Wyświetl plik

@ -10,3 +10,10 @@ The following highlights are in this 1.x-release:
rigctl basic split support
rigctl prevents switching off civ transceive
added 25 kHz step
as a temporary measure sending multiple TX/FREQ change commands to the rig
when we use rigctld.
people should use "fake it" in wsjtx as the split code is not reliable.
tidied up udp server function for better reliability

Wyświetl plik

@ -12,7 +12,7 @@ aboutbox::aboutbox(QWidget *parent) :
ui->logoBtn->setIcon(QIcon(":resources/wfview.png"));
ui->logoBtn->setStyleSheet("Text-align:left");
ui->topText->setText("wfview version 1.2c");
ui->topText->setText("wfview version 1.2d");
QString head = QString("<html><head></head><body>");
QString copyright = QString("Copyright 2017-2021 Elliott H. Liggett, W6EL. All rights reserved. wfview source code is <a href=\"https://gitlab.com/eliggett/wfview/-/blob/master/LICENSE\">licensed</a> under the GNU GPLv3.");

Wyświetl plik

@ -45,6 +45,7 @@ commHandler::commHandler(QString portName, quint32 baudRate)
baudrate = baudRate;
stopbits = 1;
this->portName = portName;
this->PTTviaRTS = false;
setupComm(); // basic parameters
openPort();
@ -162,6 +163,25 @@ void commHandler::receiveDataIn()
}
}
void commHandler::setRTS(bool rtsOn)
{
bool success = port->setRequestToSend(rtsOn);
if(!success)
{
qInfo(logSerial()) << "Error, could not set RTS on port " << portName;
}
}
bool commHandler::rtsStatus()
{
return port->isRequestToSend();
}
void commHandler::setUseRTSforPTT(bool PTTviaRTS)
{
this->PTTviaRTS = PTTviaRTS;
}
void commHandler::openPort()
{
bool success;

Wyświetl plik

@ -18,9 +18,14 @@ public:
commHandler();
commHandler(QString portName, quint32 baudRate);
bool serialError;
bool rtsStatus();
~commHandler();
public slots:
void setUseRTSforPTT(bool useRTS);
void setRTS(bool rtsOn);
private slots:
void receiveDataIn(); // from physical port
void receiveDataFromUserToRig(const QByteArray &data);
@ -38,6 +43,7 @@ private:
void openPort();
void closePort();
void sendDataOut(const QByteArray &writeData); // out to radio
void debugMe();
void hexPrint();
@ -63,6 +69,8 @@ private:
bool havePt;
QString ptDevSlave;
bool PTTviaRTS = false;
bool isConnected; // port opened
mutable QMutex mutex;
void printHex(const QByteArray &pdata, bool printVert, bool printHoriz);

Wyświetl plik

@ -63,6 +63,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu
connect(ptty, SIGNAL(haveDataFromPort(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
// data from the program to the comm port:
connect(this, SIGNAL(dataForComm(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
connect(this, SIGNAL(toggleRTS(bool)), comm, SLOT(setRTS(bool)));
// data from the rig to the ptty:
connect(comm, SIGNAL(haveDataFromPort(QByteArray)), ptty, SLOT(receiveDataFromRigToPtty(QByteArray)));
@ -236,6 +237,9 @@ void rigCommander::findRigs()
data.append(payloadSuffix);
emit dataForComm(data);
// HACK for testing radios that do not respond to rig ID queries:
//this->model = model736;
//this->determineRigCaps();
return;
}
@ -989,9 +993,14 @@ void rigCommander::getSatelliteMode()
void rigCommander::getPTT()
{
QByteArray payload;
payload.setRawData("\x1C\x00", 2);
prepDataAndSend(payload);
if(rigCaps.useRTSforPTT)
{
emit havePTTStatus(comm->rtsStatus());
} else {
QByteArray payload;
payload.setRawData("\x1C\x00", 2);
prepDataAndSend(payload);
}
}
void rigCommander::getBandStackReg(char band, char regCode)
@ -1008,9 +1017,14 @@ void rigCommander::setPTT(bool pttOn)
if(pttAllowed)
{
QByteArray payload("\x1C\x00", 2);
payload.append((char)pttOn);
prepDataAndSend(payload);
if(rigCaps.useRTSforPTT)
{
emit toggleRTS(pttOn);
} else {
QByteArray payload("\x1C\x00", 2);
payload.append((char)pttOn);
prepDataAndSend(payload);
}
rigState.ptt = pttOn;
}
}
@ -1359,6 +1373,17 @@ void rigCommander::parseLevels()
emit haveSql(level);
rigState.squelch = level;
break;
case '\x07':
// Twin BPF Inner, or, IF-Shift level
if(rigCaps.hasTBPF)
emit haveTPBFInner(level);
else
emit haveIFShift(level);
break;
case '\x08':
// Twin BPF Outer
emit haveTPBFOuter(level);
break;
case '\x09':
// CW Pitch - ignore for now
break;
@ -1466,6 +1491,27 @@ void rigCommander::parseLevels()
}
void rigCommander::setIFShift(unsigned char level)
{
QByteArray payload("\x14\x07");
payload.append(bcdEncodeInt(level));
prepDataAndSend(payload);
}
void rigCommander::setTPBFInner(unsigned char level)
{
QByteArray payload("\x14\x07");
payload.append(bcdEncodeInt(level));
prepDataAndSend(payload);
}
void rigCommander::setTPBFOuter(unsigned char level)
{
QByteArray payload("\x14\x08");
payload.append(bcdEncodeInt(level));
prepDataAndSend(payload);
}
void rigCommander::setTxPower(unsigned char power)
{
QByteArray payload("\x14\x0A");
@ -1889,6 +1935,24 @@ void rigCommander::getAfGain()
prepDataAndSend(payload);
}
void rigCommander::getIFShift()
{
QByteArray payload("\x14\x07");
prepDataAndSend(payload);
}
void rigCommander::getTPBFInner()
{
QByteArray payload("\x14\x07");
prepDataAndSend(payload);
}
void rigCommander::getTPBFOuter()
{
QByteArray payload("\x14\x08");
prepDataAndSend(payload);
}
void rigCommander::getSql()
{
QByteArray payload("\x14\x03");
@ -2824,6 +2888,9 @@ void rigCommander::determineRigCaps()
rigCaps.hasCTCSS = false;
rigCaps.hasDTCS = false;
rigCaps.hasTBPF = false;
rigCaps.hasIFShift = false;
rigCaps.spectSeqMax = 0;
rigCaps.spectAmpMax = 0;
rigCaps.spectLenMax = 0;
@ -2852,6 +2919,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasTransmit = true;
rigCaps.hasPTTCommand = true;
rigCaps.useRTSforPTT = false;
// Common, reasonable defaults for most supported HF rigs:
rigCaps.bsr[band160m] = 0x01;
@ -2894,6 +2962,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasWiFi = false;
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.push_back('\x20');
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
@ -2922,6 +2991,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.hasDV = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.push_back('\x10');
rigCaps.attenuators.push_back('\x20');
rigCaps.attenuators.push_back('\x30');
@ -2959,6 +3029,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasDV = true;
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.push_back('\x10');
rigCaps.preamps.push_back('\x01');
rigCaps.bands = standardVU;
@ -3007,6 +3078,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasATU = true;
rigCaps.hasCTCSS = false;
rigCaps.hasDTCS = false;
rigCaps.hasTBPF = true;
rigCaps.attenuators.insert(rigCaps.attenuators.end(), {0x00, 0x06, 0x12, 0x18});
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
@ -3033,6 +3105,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasEthernet = true;
rigCaps.hasWiFi = false;
rigCaps.hasCTCSS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.insert(rigCaps.attenuators.end(),
{'\x03', '\x06', '\x09', '\x12',\
'\x15', '\x18', '\x21', '\x24',\
@ -3067,6 +3140,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasWiFi = false;
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.insert(rigCaps.attenuators.end(),
{'\x03', '\x06', '\x09',
'\x12', '\x15', '\x18', '\x21'});
@ -3101,6 +3175,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x10' , '\x20'});
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
@ -3133,6 +3208,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.push_back('\x12');
rigCaps.preamps.push_back('\x01');
rigCaps.bands = standardHF;
@ -3156,6 +3232,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.push_back('\x20');
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
@ -3179,6 +3256,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.push_back('\x12');
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
@ -3207,6 +3285,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.push_back('\x20');
rigCaps.preamps.push_back('\x01');
rigCaps.bands = standardHF;
@ -3226,6 +3305,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasEthernet = true;
rigCaps.hasWiFi = false;
rigCaps.hasCTCSS = true;
rigCaps.hasTBPF = true;
rigCaps.attenuators.insert(rigCaps.attenuators.end(),
{'\x06', '\x12', '\x18'});
rigCaps.preamps.push_back('\x01');
@ -3253,6 +3333,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasFDcomms = false;
rigCaps.hasATU = true;
rigCaps.hasPTTCommand = false;
rigCaps.useRTSforPTT = true;
rigCaps.hasDataModes = false;
rigCaps.attenuators.push_back('\x20');
rigCaps.bands = standardHF;
@ -3273,6 +3354,8 @@ void rigCommander::determineRigCaps()
rigCaps.hasFDcomms = false;
rigCaps.hasATU = false;
rigCaps.hasPTTCommand = false;
rigCaps.useRTSforPTT = true;
rigCaps.hasIFShift = true;
rigCaps.hasDataModes = false;
rigCaps.attenuators.push_back('\x20');
rigCaps.preamps.push_back('\x01');
@ -3286,6 +3369,28 @@ void rigCommander::determineRigCaps()
};
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
break;
case model736:
rigCaps.modelName = QString("IC-736");
rigCaps.rigctlModel = 3020;
rigCaps.hasSpectrum = false;
rigCaps.inputs.clear();
rigCaps.hasLan = false;
rigCaps.hasEthernet = false;
rigCaps.hasWiFi = false;
rigCaps.hasFDcomms = false;
rigCaps.hasATU = false;
rigCaps.hasPTTCommand = false;
rigCaps.useRTSforPTT = true;
rigCaps.hasDataModes = false;
rigCaps.hasIFShift = true; // untested
rigCaps.attenuators.push_back('\x20');
rigCaps.preamps.push_back('\x01');
rigCaps.bands = standardHF;
rigCaps.modes = { createMode(modeLSB, 0x00, "LSB"), createMode(modeUSB, 0x01, "USB"),
createMode(modeAM, 0x02, "AM"), createMode(modeFM, 0x05, "FM"),
createMode(modeCW, 0x03, "CW"), createMode(modeCW_R, 0x07, "CW-R"),
};
break;
case model756pro:
rigCaps.modelName = QString("IC-756 Pro");
rigCaps.rigctlModel = 3027;
@ -3296,6 +3401,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasWiFi = false;
rigCaps.hasFDcomms = false;
rigCaps.hasATU = true;
rigCaps.hasTBPF = true;
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x06' , '\x12', '\x18'});
@ -3316,6 +3422,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasWiFi = false;
rigCaps.hasFDcomms = false;
rigCaps.hasATU = true;
rigCaps.hasTBPF = true;
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x06' , '\x12', '\x18'});
@ -3336,6 +3443,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasWiFi = false;
rigCaps.hasFDcomms = false;
rigCaps.hasATU = true;
rigCaps.hasTBPF = true;
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x06' , '\x12', '\x18'});
@ -3346,6 +3454,34 @@ void rigCommander::determineRigCaps()
rigCaps.modes = commonModes;
rigCaps.transceiveCommand = QByteArrayLiteral("\x1a\x05\x00\x00");
break;
case model9100:
rigCaps.modelName = QString("IC-9100");
rigCaps.rigctlModel = 3068;
rigCaps.hasSpectrum = false;
rigCaps.inputs.append(inputUSB); // TODO, add commands for this radio's inputs
rigCaps.inputs.append(inputACC);
rigCaps.hasLan = false;
rigCaps.hasEthernet = false;
rigCaps.hasWiFi = false;
rigCaps.hasFDcomms = false;
rigCaps.hasATU = true;
rigCaps.hasDV = true;
rigCaps.hasTBPF = true;
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
rigCaps.attenuators.insert(rigCaps.attenuators.end(),{ '\x20' });
rigCaps.antennas = {0x00, 0x01};
rigCaps.bands = standardHF;
rigCaps.bands.insert(rigCaps.bands.end(), standardVU.begin(), standardVU.end());
rigCaps.bands.push_back(band23cm);
rigCaps.bands.push_back(bandGen);
rigCaps.bsr[band2m] = 0x11;
rigCaps.bsr[band70cm] = 0x12;
rigCaps.bsr[band23cm] = 0x13;
rigCaps.bsr[bandGen] = 0x14;
rigCaps.modes = commonModes;
rigCaps.modes.insert(rigCaps.modes.end(), {createMode(modeDV, 0x17, "DV")});
break;
default:
rigCaps.modelName = QString("IC-0x%1").arg(rigCaps.modelID, 2, 16);
rigCaps.hasSpectrum = false;

Wyświetl plik

@ -215,6 +215,9 @@ public slots:
void getRfGain();
void getAfGain();
void getSql();
void getIFShift();
void getTPBFInner();
void getTPBFOuter();
void getTxLevel();
void getMicGain();
void getCompLevel();
@ -232,6 +235,9 @@ public slots:
void setSquelch(unsigned char level);
void setRfGain(unsigned char level);
void setAfGain(unsigned char level);
void setIFShift(unsigned char level);
void setTPBFInner(unsigned char level);
void setTPBFOuter(unsigned char level);
void setTxPower(unsigned char power);
void setMicGain(unsigned char gain);
void setUSBGain(unsigned char gain);
@ -316,6 +322,7 @@ signals:
void haveSerialPortError(const QString port, const QString errorText);
void haveStatusUpdate(const QString text);
void dataForComm(const QByteArray &outData);
void toggleRTS(bool rtsOn);
// UDP:
void haveChangeLatency(quint16 value);
@ -356,6 +363,9 @@ signals:
void haveRfGain(unsigned char level);
void haveAfGain(unsigned char level);
void haveSql(unsigned char level);
void haveTPBFInner(unsigned char level);
void haveTPBFOuter(unsigned char level);
void haveIFShift(unsigned char level);
void haveTxPower(unsigned char level);
void haveMicGain(unsigned char level);
void haveCompLevel(unsigned char level);

Wyświetl plik

@ -67,6 +67,9 @@ model_kind determineRadioModel(unsigned char rigID)
case model756proiii:
rig = model756proiii;
break;
case model9100:
rig = model9100;
break;
default:
rig = modelUnknown;
break;

Wyświetl plik

@ -29,10 +29,12 @@ enum model_kind {
model705 = 0xA4,
model706 = 0x58,
model718 = 0x5E,
model736 = 0x40,
model756pro = 0x5C,
model756proii = 0x64,
model756proiii = 0x6E,
model910h = 0x60,
model9100 = 0x7C,
modelUnknown = 0xFF
};
@ -116,10 +118,13 @@ struct rigCapabilities {
bool hasTransmit;
bool hasPTTCommand;
bool useRTSforPTT;
bool hasAttenuator;
bool hasPreamp;
bool hasAntennaSel;
bool hasDataModes;
bool hasIFShift;
bool hasTBPF;
bool hasRXAntenna;

Wyświetl plik

@ -6,11 +6,100 @@ transceiverAdjustments::transceiverAdjustments(QWidget *parent) :
ui(new Ui::transceiverAdjustments)
{
ui->setupUi(this);
// request level updates
#ifndef QT_DEBUG
ui->transmitterControlsGroupBox->setVisible(false); // no controls available so far
ui->bassRxLabel->setVisible(false);
ui->bassRxSlider->setVisible(false);
ui->trebleRxLabel->setVisible(false);
ui->trebleRxSlider->setVisible(false);
ui->NRRxCheckBox->setVisible(false);
ui->NRRxSlider->setVisible(false);
ui->notchRxChkBox->setVisible(false);
ui->notchRxSlider->setVisible(false);
ui->NBRxChkBox->setVisible(false);
ui->NBRxSlider->setVisible(false);
ui->bandwidthGroupBox->setVisible(false);
this->window()->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
this->window()->resize(QSizePolicy::Minimum, QSizePolicy::Minimum);
#endif
}
transceiverAdjustments::~transceiverAdjustments()
{
rigCaps.inputs.clear();
rigCaps.preamps.clear();
rigCaps.attenuators.clear();
rigCaps.antennas.clear();
delete ui;
}
void transceiverAdjustments::on_IFShiftSlider_valueChanged(int value)
{
if(rigCaps.hasIFShift)
{
emit setIFShift(value);
} else {
unsigned char inner = ui->TPBFInnerSlider->value();
unsigned char outer = ui->TPBFOuterSlider->value();
int shift = value - previousIFShift;
inner = MAX( 0, MIN(255,int (inner + shift)) );
outer = MAX( 0, MIN(255,int (outer + shift)) );
ui->TPBFInnerSlider->setValue(inner);
ui->TPBFOuterSlider->setValue(outer);
previousIFShift = value;
}
}
void transceiverAdjustments::on_TPBFInnerSlider_valueChanged(int value)
{
emit setTPBFInner(value);
}
void transceiverAdjustments::on_TPBFOuterSlider_valueChanged(int value)
{
emit setTPBFOuter(value);
}
void transceiverAdjustments::setRig(rigCapabilities rig)
{
this->rigCaps = rig;
if(!rigCaps.hasIFShift)
updateIFShift(128);
//ui->IFShiftSlider->setVisible(rigCaps.hasIFShift);
//ui->IFShiftLabel->setVisible(rigCaps.hasIFShift);
ui->TPBFInnerSlider->setVisible(rigCaps.hasTBPF);
ui->TPBFInnerLabel->setVisible(rigCaps.hasTBPF);
ui->TPBFOuterSlider->setVisible(rigCaps.hasTBPF);
ui->TPBFInnerLabel->setVisible(rigCaps.hasTBPF);
haveRigCaps = true;
}
// These are accessed by wfmain when we receive new values from rigCommander:
void transceiverAdjustments::updateIFShift(unsigned char level)
{
ui->IFShiftSlider->blockSignals(true);
ui->IFShiftSlider->setValue(level);
ui->IFShiftSlider->blockSignals(false);
}
void transceiverAdjustments::updateTPBFInner(unsigned char level)
{
ui->TPBFInnerSlider->blockSignals(true);
ui->TPBFInnerSlider->setValue(level);
ui->TPBFInnerSlider->blockSignals(false);
}
void transceiverAdjustments::updateTPBFOuter(unsigned char level)
{
ui->TPBFOuterSlider->blockSignals(true);
ui->TPBFOuterSlider->setValue(level);
ui->TPBFOuterSlider->blockSignals(false);
}

Wyświetl plik

@ -1,7 +1,11 @@
#ifndef TRANSCEIVERADJUSTMENTS_H
#define TRANSCEIVERADJUSTMENTS_H
#include <sys/param.h>
#include <QWidget>
#include "rigidentities.h"
namespace Ui {
class transceiverAdjustments;
@ -15,8 +19,30 @@ public:
explicit transceiverAdjustments(QWidget *parent = 0);
~transceiverAdjustments();
signals:
void setIFShift(unsigned char level);
void setTPBFInner(unsigned char level);
void setTPBFOuter(unsigned char level);
public slots:
void setRig(rigCapabilities rig);
void updateIFShift(unsigned char level);
void updateTPBFInner(unsigned char level);
void updateTPBFOuter(unsigned char level);
private slots:
void on_IFShiftSlider_valueChanged(int value);
void on_TPBFInnerSlider_valueChanged(int value);
void on_TPBFOuterSlider_valueChanged(int value);
private:
Ui::transceiverAdjustments *ui;
rigCapabilities rigCaps;
bool haveRigCaps = false;
int previousIFShift = 128;
};
#endif // TRANSCEIVERADJUSTMENTS_H

Wyświetl plik

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>680</width>
<height>339</height>
<width>832</width>
<height>337</height>
</rect>
</property>
<property name="windowTitle">
@ -29,13 +29,13 @@
<number>10</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox">
<widget class="QGroupBox" name="transmitterControlsGroupBox">
<property name="title">
<string>Transmitter</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QVBoxLayout" name="compVertLayout">
<property name="leftMargin">
<number>0</number>
</property>
@ -49,14 +49,20 @@
<number>0</number>
</property>
<item>
<widget class="QSlider" name="verticalSlider">
<widget class="QSlider" name="compSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox">
<widget class="QCheckBox" name="compChkBox">
<property name="text">
<string>Comp</string>
</property>
@ -65,16 +71,22 @@
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<layout class="QVBoxLayout" name="bassTxVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_4">
<widget class="QSlider" name="bassTxSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<widget class="QLabel" name="bassTxLabel">
<property name="minimumSize">
<size>
<width>0</width>
@ -89,16 +101,22 @@
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<layout class="QVBoxLayout" name="trebleTxVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_3">
<widget class="QSlider" name="trebleTxSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<widget class="QLabel" name="trebleTxLabel">
<property name="minimumSize">
<size>
<width>0</width>
@ -106,23 +124,29 @@
</size>
</property>
<property name="text">
<string>Trebble</string>
<string>Treble</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_10">
<layout class="QVBoxLayout" name="tbdVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_9">
<widget class="QSlider" name="tbdSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_6">
<widget class="QLabel" name="tbdLabel">
<property name="minimumSize">
<size>
<width>0</width>
@ -140,22 +164,28 @@
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<widget class="QGroupBox" name="receiverControlsGroupBox">
<property name="title">
<string>Receiver</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<layout class="QVBoxLayout" name="bassRxVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_5">
<widget class="QSlider" name="bassRxSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<widget class="QLabel" name="bassRxLabel">
<property name="minimumSize">
<size>
<width>0</width>
@ -170,16 +200,22 @@
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<layout class="QVBoxLayout" name="trebleRxVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_2">
<widget class="QSlider" name="trebleRxSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="trebleRxLabel">
<property name="minimumSize">
<size>
<width>0</width>
@ -187,23 +223,32 @@
</size>
</property>
<property name="text">
<string>Trebble</string>
<string>Treble</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_9">
<layout class="QVBoxLayout" name="IFShiftVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_8">
<widget class="QSlider" name="IFShiftSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="maximum">
<number>255</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<widget class="QLabel" name="IFShiftLabel">
<property name="text">
<string>IF Shift</string>
</property>
@ -212,16 +257,100 @@
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_7">
<layout class="QVBoxLayout" name="PBFInnerVertLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QSlider" name="verticalSlider_6">
<widget class="QSlider" name="TPBFInnerSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="maximum">
<number>255</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_2">
<widget class="QLabel" name="TPBFInnerLabel">
<property name="text">
<string>PBF Inner</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="TPBFOuterVertLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QSlider" name="TPBFOuterSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="maximum">
<number>255</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="TPBFOuterLabel">
<property name="text">
<string>PBF Outer</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="NRRxVertLayout">
<item>
<widget class="QSlider" name="NRRxSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="NRRxCheckBox">
<property name="text">
<string>NR</string>
</property>
@ -230,16 +359,22 @@
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<layout class="QVBoxLayout" name="NBRxVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_7">
<widget class="QSlider" name="NBRxSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_3">
<widget class="QCheckBox" name="NBRxChkBox">
<property name="text">
<string>NB</string>
</property>
@ -248,16 +383,22 @@
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_11">
<layout class="QVBoxLayout" name="notchRxVertLayout">
<item>
<widget class="QSlider" name="verticalSlider_10">
<widget class="QSlider" name="notchRxSlider">
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_4">
<widget class="QCheckBox" name="notchRxChkBox">
<property name="text">
<string>Notch</string>
</property>
@ -266,40 +407,40 @@
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<widget class="QGroupBox" name="bandwidthGroupBox">
<property name="title">
<string>Bandwidth</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
<widget class="QLabel" name="label_7">
<widget class="QLabel" name="lowBandwidthLabel">
<property name="text">
<string>Low</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_2"/>
<widget class="QComboBox" name="lowBandwidthCombo"/>
</item>
<item>
<widget class="QLabel" name="label_8">
<widget class="QLabel" name="highBandwidthLabel">
<property name="text">
<string>High</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox"/>
<widget class="QComboBox" name="highBandwidthCombo"/>
</item>
<item>
<widget class="QLabel" name="label_9">
<widget class="QLabel" name="filterBandwidthLabel">
<property name="text">
<string>Filter</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_3"/>
<widget class="QComboBox" name="filterBandwidthCombo"/>
</item>
<item>
<spacer name="verticalSpacer">

Wyświetl plik

@ -296,6 +296,9 @@ void wfmain::rigConnections()
connect(this, SIGNAL(getRfGain()), rig, SLOT(getRfGain()));
connect(this, SIGNAL(getAfGain()), rig, SLOT(getAfGain()));
connect(this, SIGNAL(getSql()), rig, SLOT(getSql()));
connect(this, SIGNAL(getIfShift()), rig, SLOT(getIFShift()));
connect(this, SIGNAL(getTPBFInner()), rig, SLOT(getTPBFInner()));
connect(this, SIGNAL(getTPBFOuter()), rig, SLOT(getTPBFOuter()));
connect(this, SIGNAL(getTxPower()), rig, SLOT(getTxLevel()));
connect(this, SIGNAL(getMicGain()), rig, SLOT(getMicGain()));
connect(this, SIGNAL(getSpectrumRefLevel()), rig, SLOT(getSpectrumRefLevel()));
@ -306,6 +309,9 @@ void wfmain::rigConnections()
connect(this, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(this, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));
connect(this, SIGNAL(setSql(unsigned char)), rig, SLOT(setSquelch(unsigned char)));
connect(this, SIGNAL(setIFShift(unsigned char)), rig, SLOT(setIFShift(unsigned char)));
connect(this, SIGNAL(setTPBFInner(unsigned char)), rig, SLOT(setTPBFInner(unsigned char)));
connect(this, SIGNAL(setTPBFOuter(unsigned char)), rig, SLOT(setTPBFOuter(unsigned char)));
connect(this, SIGNAL(setTxPower(unsigned char)), rig, SLOT(setTxPower(unsigned char)));
connect(this, SIGNAL(setMicGain(unsigned char)), rig, SLOT(setMicGain(unsigned char)));
connect(this, SIGNAL(setMonitorLevel(unsigned char)), rig, SLOT(setMonitorLevel(unsigned char)));
@ -318,6 +324,9 @@ void wfmain::rigConnections()
connect(rig, SIGNAL(haveRfGain(unsigned char)), this, SLOT(receiveRfGain(unsigned char)));
connect(rig, SIGNAL(haveAfGain(unsigned char)), this, SLOT(receiveAfGain(unsigned char)));
connect(rig, SIGNAL(haveSql(unsigned char)), this, SLOT(receiveSql(unsigned char)));
connect(rig, SIGNAL(haveIFShift(unsigned char)), trxadj, SLOT(updateIFShift(unsigned char)));
connect(rig, SIGNAL(haveTPBFInner(unsigned char)), trxadj, SLOT(updateTPBFInner(unsigned char)));
connect(rig, SIGNAL(haveTPBFOuter(unsigned char)), trxadj, SLOT(updateTPBFOuter(unsigned char)));
connect(rig, SIGNAL(haveTxPower(unsigned char)), this, SLOT(receiveTxPower(unsigned char)));
connect(rig, SIGNAL(haveMicGain(unsigned char)), this, SLOT(receiveMicGain(unsigned char)));
connect(rig, SIGNAL(haveSpectrumRefLevel(int)), this, SLOT(receiveSpectrumRefLevel(int)));
@ -807,6 +816,20 @@ void wfmain::setupMainUI()
[=](const int &newValue) { statusFromSliderRaw("Waterfall Length", newValue);}
);
connect(this->trxadj, &transceiverAdjustments::setIFShift,
[=](const unsigned char &newValue) { issueCmdUniquePriority(cmdSetIFShift, newValue);}
);
connect(this->trxadj, &transceiverAdjustments::setTPBFInner,
[=](const unsigned char &newValue) { issueCmdUniquePriority(cmdSetTPBFInner, newValue);}
);
connect(this->trxadj, &transceiverAdjustments::setTPBFOuter,
[=](const unsigned char &newValue) { issueCmdUniquePriority(cmdSetTPBFOuter, newValue);}
);
}
void wfmain::updateSizes(int tabIndex)
@ -2239,6 +2262,14 @@ void wfmain:: getInitialRigState()
issueDelayedCommand(cmdGetRitEnabled);
issueDelayedCommand(cmdGetRitValue);
if(rigCaps.hasIFShift)
issueDelayedCommand(cmdGetIFShift);
if(rigCaps.hasTBPF)
{
issueDelayedCommand(cmdGetTPBFInner);
issueDelayedCommand(cmdGetTPBFOuter);
}
if(rigCaps.hasSpectrum)
{
issueDelayedCommand(cmdGetSpectrumMode);
@ -2440,6 +2471,24 @@ void wfmain::doCmd(commandtype cmddata)
emit setSql(sqlLevel);
break;
}
case cmdSetIFShift:
{
unsigned char IFShiftLevel = (*std::static_pointer_cast<unsigned char>(data));
emit setIFShift(IFShiftLevel);
break;
}
case cmdSetTPBFInner:
{
unsigned char innterLevel = (*std::static_pointer_cast<unsigned char>(data));
emit setTPBFInner(innterLevel);
break;
}
case cmdSetTPBFOuter:
{
unsigned char outerLevel = (*std::static_pointer_cast<unsigned char>(data));
emit setTPBFOuter(outerLevel);
break;
}
case cmdSetPTT:
{
bool pttrequest = (*std::static_pointer_cast<bool>(data));
@ -2582,6 +2631,15 @@ void wfmain::doCmd(cmds cmd)
case cmdGetSql:
emit getSql();
break;
case cmdGetIFShift:
emit getIfShift();
break;
case cmdGetTPBFInner:
emit getTPBFInner();
break;
case cmdGetTPBFOuter:
emit getTPBFOuter();
break;
case cmdGetTxPower:
emit getTxPower();
break;
@ -2907,6 +2965,7 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
// Added so that server receives rig capabilities.
emit sendRigCaps(rigCaps);
rpt->setRig(rigCaps);
trxadj->setRig(rigCaps);
// Set the mode combo box up:
@ -3028,6 +3087,7 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
setBandButtons();
ui->tuneEnableChk->setEnabled(rigCaps.hasATU);
ui->tuneNowBtn->setEnabled(rigCaps.hasATU);
@ -4090,6 +4150,21 @@ void wfmain::receiveSql(unsigned char level)
ui->sqlSlider->setValue(level);
}
void wfmain::receiveIFShift(unsigned char level)
{
trxadj->updateIFShift(level);
}
void wfmain::receiveTBPFInner(unsigned char level)
{
trxadj->updateTPBFInner(level);
}
void wfmain::receiveTBPFOuter(unsigned char level)
{
trxadj->updateTPBFOuter(level);
}
void wfmain::on_tuneNowBtn_clicked()
{
issueDelayedCommand(cmdStartATU);
@ -4353,6 +4428,20 @@ void wfmain::on_sqlSlider_valueChanged(int value)
issueCmd(cmdSetSql, (unsigned char)value);
//emit setSql((unsigned char)value);
}
// These three are from the transceiver adjustment window:
void wfmain::changeIFShift(unsigned char level)
{
//issueCmd(cmdSetIFShift, level);
issueCmdUniquePriority(cmdSetIFShift, level);
}
void wfmain::changeTPBFInner(unsigned char level)
{
issueCmdUniquePriority(cmdSetTPBFInner, level);
}
void wfmain::changeTPBFOuter(unsigned char level)
{
issueCmdUniquePriority(cmdSetTPBFOuter, level);
}
void wfmain::on_modeFilterCombo_activated(int index)
{
@ -5377,11 +5466,16 @@ void wfmain::on_rigctldPortTxt_editingFinished()
}
}
void wfmain::on_moreControlsBtn_clicked()
{
trxadj->show();
}
// --- DEBUG FUNCTION ---
void wfmain::on_debugBtn_clicked()
{
qInfo(logSystem()) << "Debug button pressed.";
//trxadj->show();
trxadj->show();
//setRadioTimeDatePrep();
//wf->setInteraction(QCP::iRangeZoom, true);
//wf->setInteraction(QCP::iRangeDrag, true);

Wyświetl plik

@ -85,6 +85,9 @@ signals:
void getRfGain();
void getAfGain();
void getSql();
void getIfShift();
void getTPBFInner();
void getTPBFOuter();
void getTxPower();
void getMicGain();
void getSpectrumRefLevel();
@ -94,6 +97,13 @@ signals:
void setRfGain(unsigned char level);
void setAfGain(unsigned char level);
void setSql(unsigned char level);
void setIFShift(unsigned char level);
void setTPBFInner(unsigned char level);
void setTPBFOuter(unsigned char level);
void setIFShiftWindow(unsigned char level);
void setTPBFInnerWindow(unsigned char level);
void setTPBFOuterWindow(unsigned char level);
void setMicGain(unsigned char);
void setCompLevel(unsigned char);
void setTxPower(unsigned char);
@ -213,6 +223,13 @@ private slots:
void receiveRfGain(unsigned char level);
void receiveAfGain(unsigned char level);
void receiveSql(unsigned char level);
void receiveIFShift(unsigned char level);
void receiveTBPFInner(unsigned char level);
void receiveTBPFOuter(unsigned char level);
// 'change' from data in transceiver controls window:
void changeIFShift(unsigned char level);
void changeTPBFInner(unsigned char level);
void changeTPBFOuter(unsigned char level);
void receiveTxPower(unsigned char power);
void receiveMicGain(unsigned char gain);
void receiveCompLevel(unsigned char compLevel);
@ -478,6 +495,8 @@ private slots:
void on_rigctldPortTxt_editingFinished();
void on_moreControlsBtn_clicked();
private:
Ui::wfmain *ui;
void closeEvent(QCloseEvent *event);
@ -600,13 +619,18 @@ private:
unsigned char setModeVal=0;
unsigned char setFilterVal=0;
enum cmds {cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdSetFreq, cmdGetMode, cmdSetMode, cmdGetDataMode, cmdSetModeFilter,
cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
enum cmds {cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdSetFreq, cmdGetMode, cmdSetMode,
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
cmdGetSql, cmdSetSql, cmdGetATUStatus, cmdSetATU, cmdStartATU, cmdGetSpectrumMode, cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel, cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner,
cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus,
cmdSetATU, cmdStartATU, cmdGetSpectrumMode,
cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel,
cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter, cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdSetTime, cmdSetDate, cmdSetUTCOffset};

Wyświetl plik

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>934</width>
<width>941</width>
<height>582</height>
</rect>
</property>
@ -18,7 +18,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>3</number>
<number>0</number>
</property>
<widget class="QWidget" name="mainTab">
<attribute name="title">
@ -465,6 +465,16 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="moreControlsBtn">
<property name="toolTip">
<string>Show additional controls</string>
</property>
<property name="text">
<string>Show More</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -852,6 +862,9 @@
<height>50</height>
</size>
</property>
<property name="toolTip">
<string>Transmit and Receive button</string>
</property>
<property name="text">
<string>Transmit</string>
</property>
@ -885,6 +898,9 @@
</item>
<item>
<widget class="QPushButton" name="rptSetupBtn">
<property name="toolTip">
<string>Show the repeater tone and offset window</string>
</property>
<property name="text">
<string>Repeater</string>
</property>
@ -2814,8 +2830,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>934</width>
<height>21</height>
<width>941</width>
<height>22</height>
</rect>
</property>
</widget>