From 390f9500dc9c16dde7cf043c4bea4e77a9aa36dd Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Tue, 17 Aug 2021 09:35:40 -0700 Subject: [PATCH 01/12] Added more support for the IC-9100 --- rigcommander.cpp | 27 +++++++++++++++++++++++++++ rigidentities.cpp | 3 +++ rigidentities.h | 1 + 3 files changed, 31 insertions(+) diff --git a/rigcommander.cpp b/rigcommander.cpp index 6c82219..173071d 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -3304,6 +3304,33 @@ void rigCommander::determineRigCaps() rigCaps.bsr[bandGen] = 0x11; rigCaps.modes = commonModes; 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.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; diff --git a/rigidentities.cpp b/rigidentities.cpp index 7b113f7..13988b4 100644 --- a/rigidentities.cpp +++ b/rigidentities.cpp @@ -67,6 +67,9 @@ model_kind determineRadioModel(unsigned char rigID) case model756proiii: rig = model756proiii; break; + case model9100: + rig = model9100; + break; default: rig = modelUnknown; break; diff --git a/rigidentities.h b/rigidentities.h index bae0609..17f0b3f 100644 --- a/rigidentities.h +++ b/rigidentities.h @@ -33,6 +33,7 @@ enum model_kind { model756proii = 0x64, model756proiii = 0x6E, model910h = 0x60, + model9100 = 0x7C, modelUnknown = 0xFF }; From f44dd4bda2a00d2cbba5499dcebafab16a4bc08b Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Tue, 17 Aug 2021 14:00:37 -0700 Subject: [PATCH 02/12] Added IC-736 --- rigcommander.cpp | 20 ++++++++++++++++++++ rigidentities.h | 1 + 2 files changed, 21 insertions(+) diff --git a/rigcommander.cpp b/rigcommander.cpp index 173071d..fad3854 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -3247,6 +3247,26 @@ void rigCommander::determineRigCaps() createMode(modeRTTY, 0x04, "RTTY"), createMode(modeRTTY_R, 0x08, "RTTY-R") }; 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.hasDataModes = false; + 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(modeCW, 0x03, "CW"), createMode(modeCW_R, 0x07, "CW-R"), + }; + break; case model756pro: rigCaps.modelName = QString("IC-756 Pro"); rigCaps.rigctlModel = 3027; diff --git a/rigidentities.h b/rigidentities.h index 17f0b3f..dbc147e 100644 --- a/rigidentities.h +++ b/rigidentities.h @@ -29,6 +29,7 @@ enum model_kind { model705 = 0xA4, model706 = 0x58, model718 = 0x5E, + model736 = 0x40, model756pro = 0x5C, model756proii = 0x64, model756proiii = 0x6E, From c4a9465fb3c959535f2d7078e5871ed2314794e5 Mon Sep 17 00:00:00 2001 From: Roeland Jansen Date: Fri, 8 Oct 2021 10:25:32 +0200 Subject: [PATCH 03/12] pushed 1.2d; fixing some reliability issues w/ wsjtx/rigctld --- .swo | Bin 12288 -> 0 bytes CHANGELOG | 5 +++++ WHATSNEW | 5 +++++ aboutbox.cpp | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) delete mode 100644 .swo diff --git a/.swo b/.swo deleted file mode 100644 index 171d63159bf83bd4b2d8c49f10bc2611913187ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI%Jqp4w6u|N5=A_sQM1_teZI>=RfP-UQC29wuw80j2^I{%GZ({t&DB@7;@DHSq zq~Yc9gA5^SwVW?x5-4HY=<#_qZzIIM$_rg?-PFfem(|heU{@Y=vHQOKV;+7WfIyo9 zgDj51=TVc8u9vG*Rk*s-!H2LS{S zKmY**5I_I{1Q0*~0R(;!(DuFlG8E!!`{VuJ-T!ZH?uT3~MF0T=5I_I{1Q0*~0R#|0 f0D(UVq;V({rKC!tMEXsBYJ6?XO0Vm@Y*KLtN}e1c diff --git a/CHANGELOG b/CHANGELOG index 01363f3..6d2a943 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ # CHANGELOG +- 20211006 + + Send TX/Freq changes multiple times with rigctld + + bumped to 1.2d hopefully last testversion before 1.20 - 202109022 Remove duplicate setPriority() diff --git a/WHATSNEW b/WHATSNEW index bfc7df3..55b37ba 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -10,3 +10,8 @@ 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. diff --git a/aboutbox.cpp b/aboutbox.cpp index 5c45f42..a9222b0 100644 --- a/aboutbox.cpp +++ b/aboutbox.cpp @@ -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(""); QString copyright = QString("Copyright 2017-2021 Elliott H. Liggett, W6EL. All rights reserved. wfview source code is licensed under the GNU GPLv3."); From 511f2b5e98233acd8e56bb52cfaf7b25bd3e28ae Mon Sep 17 00:00:00 2001 From: Roeland Jansen Date: Wed, 20 Oct 2021 14:54:44 +0200 Subject: [PATCH 04/12] changes in udp crashes in server side code --- CHANGELOG | 7 +++++++ WHATSNEW | 2 ++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 6d2a943..a6086c2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,12 @@ # CHANGELOG + +- 20211020 + + Tidy-up server shutdown + + Trying to find cause of lockup when client disappears + - 20211006 Send TX/Freq changes multiple times with rigctld diff --git a/WHATSNEW b/WHATSNEW index 55b37ba..33042e3 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -15,3 +15,5 @@ The following highlights are in this 1.x-release: 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 From 37205a11da2feacd80fc0ecd9bf40d1a6697b561 Mon Sep 17 00:00:00 2001 From: Roeland Jansen Date: Sun, 24 Oct 2021 18:09:11 +0200 Subject: [PATCH 05/12] changelog --- CHANGELOG | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index a6086c2..dea2e59 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ # CHANGELOG +- 20211022 + + Don't block until audio buffer has space + + Bit of tidying - 20211020 From 12d202cbcd65497b1213b4604142d9c07f9eb846 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Thu, 4 Nov 2021 20:17:50 -0700 Subject: [PATCH 06/12] Added code to force IC-736 to rigID --- rigcommander.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rigcommander.cpp b/rigcommander.cpp index fad3854..dba30f1 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -231,6 +231,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; } From 522557c6e8b7ac98524b0e18f0fe47f476ac33d2 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Thu, 4 Nov 2021 20:45:02 -0700 Subject: [PATCH 07/12] Added IC-736 FM mode --- rigcommander.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rigcommander.cpp b/rigcommander.cpp index 3788012..193407f 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -3305,7 +3305,7 @@ void rigCommander::determineRigCaps() rigCaps.preamps.push_back('\x01'); rigCaps.bands = standardHF; rigCaps.modes = { createMode(modeLSB, 0x00, "LSB"), createMode(modeUSB, 0x01, "USB"), - createMode(modeAM, 0x02, "AM"), + createMode(modeAM, 0x02, "AM"), createMode(modeFM, 0x05, "FM"), createMode(modeCW, 0x03, "CW"), createMode(modeCW_R, 0x07, "CW-R"), }; break; From cecaee397deead4942cf79f9e82dd561106b3e99 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Fri, 5 Nov 2021 10:09:31 -0700 Subject: [PATCH 08/12] Added support for IF Shift and Twin Pass-Band Filters. Currently accessable only via the debug button. --- rigcommander.cpp | 71 ++++++++++++++++++++++++++++++ rigcommander.h | 9 ++++ rigidentities.h | 2 + transceiveradjustments.cpp | 57 ++++++++++++++++++++++++ transceiveradjustments.h | 23 ++++++++++ transceiveradjustments.ui | 76 +++++++++++++++++++++++++++++--- wfmain.cpp | 90 +++++++++++++++++++++++++++++++++++++- wfmain.h | 32 +++++++++++--- wfmain.ui | 8 ++-- 9 files changed, 353 insertions(+), 15 deletions(-) diff --git a/rigcommander.cpp b/rigcommander.cpp index 193407f..c6e72e0 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -1362,6 +1362,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; @@ -1469,6 +1480,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"); @@ -1892,6 +1924,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"); @@ -2827,6 +2877,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; @@ -2897,6 +2950,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'); @@ -2925,6 +2979,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'); @@ -2962,6 +3017,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; @@ -3010,6 +3066,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'); @@ -3036,6 +3093,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',\ @@ -3070,6 +3128,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'}); @@ -3104,6 +3163,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'); @@ -3136,6 +3196,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; @@ -3159,6 +3220,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'); @@ -3182,6 +3244,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'); @@ -3210,6 +3273,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; @@ -3229,6 +3293,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'); @@ -3276,6 +3341,7 @@ void rigCommander::determineRigCaps() rigCaps.hasFDcomms = false; rigCaps.hasATU = false; rigCaps.hasPTTCommand = false; + rigCaps.hasIFShift = true; rigCaps.hasDataModes = false; rigCaps.attenuators.push_back('\x20'); rigCaps.preamps.push_back('\x01'); @@ -3301,6 +3367,7 @@ void rigCommander::determineRigCaps() rigCaps.hasATU = false; rigCaps.hasPTTCommand = false; rigCaps.hasDataModes = false; + rigCaps.hasIFShift = true; // untested rigCaps.attenuators.push_back('\x20'); rigCaps.preamps.push_back('\x01'); rigCaps.bands = standardHF; @@ -3319,6 +3386,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'}); @@ -3339,6 +3407,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'}); @@ -3359,6 +3428,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'}); @@ -3381,6 +3451,7 @@ void rigCommander::determineRigCaps() 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' }); diff --git a/rigcommander.h b/rigcommander.h index 1486028..1abc38f 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -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); @@ -356,6 +362,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); diff --git a/rigidentities.h b/rigidentities.h index fd155e8..a87d9ec 100644 --- a/rigidentities.h +++ b/rigidentities.h @@ -122,6 +122,8 @@ struct rigCapabilities { bool hasPreamp; bool hasAntennaSel; bool hasDataModes; + bool hasIFShift; + bool hasTBPF; bool hasRXAntenna; diff --git a/transceiveradjustments.cpp b/transceiveradjustments.cpp index 5779f5f..319b305 100644 --- a/transceiveradjustments.cpp +++ b/transceiveradjustments.cpp @@ -12,5 +12,62 @@ transceiverAdjustments::transceiverAdjustments(QWidget *parent) : transceiverAdjustments::~transceiverAdjustments() { + rigCaps.inputs.clear(); + rigCaps.preamps.clear(); + rigCaps.attenuators.clear(); + rigCaps.antennas.clear(); + delete ui; } + +void transceiverAdjustments::on_IFShiftSlider_valueChanged(int value) +{ + emit setIFShift(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; + 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); +} diff --git a/transceiveradjustments.h b/transceiveradjustments.h index 2eee158..2411d4d 100644 --- a/transceiveradjustments.h +++ b/transceiveradjustments.h @@ -2,6 +2,8 @@ #define TRANSCEIVERADJUSTMENTS_H #include +#include "rigidentities.h" + namespace Ui { class transceiverAdjustments; @@ -15,8 +17,29 @@ 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; }; #endif // TRANSCEIVERADJUSTMENTS_H diff --git a/transceiveradjustments.ui b/transceiveradjustments.ui index 9e8bb32..415b7bb 100644 --- a/transceiveradjustments.ui +++ b/transceiveradjustments.ui @@ -6,8 +6,8 @@ 0 0 - 680 - 339 + 832 + 337 @@ -194,16 +194,16 @@ - + - + Qt::Vertical - + IF Shift @@ -211,6 +211,72 @@ + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 255 + + + Qt::Vertical + + + + + + + PBF Inner + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 255 + + + Qt::Vertical + + + + + + + PBF Outer + + + + + diff --git a/wfmain.cpp b/wfmain.cpp index 95d8353..c338533 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -291,6 +291,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())); @@ -301,6 +304,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))); @@ -313,6 +319,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))); @@ -802,6 +811,20 @@ void wfmain::setupMainUI() [=](const int &newValue) { statusFromSliderRaw("Waterfall Length", newValue);} ); + connect(this->trxadj, &transceiverAdjustments::setIFShift, + [=](const unsigned char &newValue) { issueCmd(cmdSetIFShift, newValue);} + ); + + connect(this->trxadj, &transceiverAdjustments::setTPBFInner, + [=](const unsigned char &newValue) { issueCmd(cmdSetTPBFInner, newValue);} + ); + + connect(this->trxadj, &transceiverAdjustments::setTPBFOuter, + [=](const unsigned char &newValue) { issueCmd(cmdSetTPBFOuter, newValue);} + ); + + + } void wfmain::updateSizes(int tabIndex) @@ -2203,6 +2226,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); @@ -2404,6 +2435,24 @@ void wfmain::doCmd(commandtype cmddata) emit setSql(sqlLevel); break; } + case cmdSetIFShift: + { + unsigned char IFShiftLevel = (*std::static_pointer_cast(data)); + emit setIFShift(IFShiftLevel); + break; + } + case cmdSetTPBFInner: + { + unsigned char innterLevel = (*std::static_pointer_cast(data)); + emit setTPBFInner(innterLevel); + break; + } + case cmdSetTPBFOuter: + { + unsigned char outerLevel = (*std::static_pointer_cast(data)); + emit setTPBFOuter(outerLevel); + break; + } case cmdSetPTT: { bool pttrequest = (*std::static_pointer_cast(data)); @@ -2546,6 +2595,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; @@ -2871,6 +2929,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: @@ -2992,6 +3051,7 @@ void wfmain::receiveRigID(rigCapabilities rigCaps) setBandButtons(); + ui->tuneEnableChk->setEnabled(rigCaps.hasATU); ui->tuneNowBtn->setEnabled(rigCaps.hasATU); @@ -4054,6 +4114,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); @@ -4315,6 +4390,19 @@ 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); +} +void wfmain::changeTPBFInner(unsigned char level) +{ + issueCmd(cmdSetTPBFInner, level); +} +void wfmain::changeTPBFOuter(unsigned char level) +{ + issueCmd(cmdSetTPBFOuter, level); +} void wfmain::on_modeFilterCombo_activated(int index) { @@ -5343,7 +5431,7 @@ void wfmain::on_rigctldPortTxt_editingFinished() 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); diff --git a/wfmain.h b/wfmain.h index b921b9c..ac66e8e 100644 --- a/wfmain.h +++ b/wfmain.h @@ -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); @@ -600,13 +617,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}; diff --git a/wfmain.ui b/wfmain.ui index f392fd8..0194a6a 100644 --- a/wfmain.ui +++ b/wfmain.ui @@ -6,7 +6,7 @@ 0 0 - 934 + 941 582 @@ -18,7 +18,7 @@ - 3 + 0 @@ -2814,8 +2814,8 @@ 0 0 - 934 - 21 + 941 + 22 From a9fb81d8f681006458af656492b584981aeb4ed1 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Fri, 5 Nov 2021 11:52:20 -0700 Subject: [PATCH 09/12] Added an IF Shift-like control for radios with Twin PBF. --- transceiveradjustments.cpp | 21 ++++++++++++++++++--- transceiveradjustments.h | 3 +++ transceiveradjustments.ui | 3 +++ wfmain.cpp | 7 ++++--- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/transceiveradjustments.cpp b/transceiveradjustments.cpp index 319b305..a5e8501 100644 --- a/transceiveradjustments.cpp +++ b/transceiveradjustments.cpp @@ -22,7 +22,20 @@ transceiverAdjustments::~transceiverAdjustments() void transceiverAdjustments::on_IFShiftSlider_valueChanged(int value) { - emit setIFShift(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) @@ -38,8 +51,10 @@ void transceiverAdjustments::on_TPBFOuterSlider_valueChanged(int value) void transceiverAdjustments::setRig(rigCapabilities rig) { this->rigCaps = rig; - ui->IFShiftSlider->setVisible(rigCaps.hasIFShift); - ui->IFShiftLabel->setVisible(rigCaps.hasIFShift); + 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); diff --git a/transceiveradjustments.h b/transceiveradjustments.h index 2411d4d..bec6a34 100644 --- a/transceiveradjustments.h +++ b/transceiveradjustments.h @@ -1,6 +1,8 @@ #ifndef TRANSCEIVERADJUSTMENTS_H #define TRANSCEIVERADJUSTMENTS_H +#include + #include #include "rigidentities.h" @@ -40,6 +42,7 @@ private: Ui::transceiverAdjustments *ui; rigCapabilities rigCaps; bool haveRigCaps = false; + int previousIFShift = 128; }; #endif // TRANSCEIVERADJUSTMENTS_H diff --git a/transceiveradjustments.ui b/transceiveradjustments.ui index 415b7bb..791c7ef 100644 --- a/transceiveradjustments.ui +++ b/transceiveradjustments.ui @@ -197,6 +197,9 @@ + + 255 + Qt::Vertical diff --git a/wfmain.cpp b/wfmain.cpp index c338533..6afc3fa 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -4393,15 +4393,16 @@ void wfmain::on_sqlSlider_valueChanged(int value) // These three are from the transceiver adjustment window: void wfmain::changeIFShift(unsigned char level) { - issueCmd(cmdSetIFShift, level); + //issueCmd(cmdSetIFShift, level); + issueCmdUniquePriority(cmdSetIFShift, level); } void wfmain::changeTPBFInner(unsigned char level) { - issueCmd(cmdSetTPBFInner, level); + issueCmdUniquePriority(cmdSetTPBFInner, level); } void wfmain::changeTPBFOuter(unsigned char level) { - issueCmd(cmdSetTPBFOuter, level); + issueCmdUniquePriority(cmdSetTPBFOuter, level); } void wfmain::on_modeFilterCombo_activated(int index) From 76c5488983f876a2d139455074951fd2f6f367d2 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Fri, 5 Nov 2021 17:12:19 -0700 Subject: [PATCH 10/12] Changed IF/TPBF commands to be "unique priority" inserts. Added "more" button for extended transceiver controls. --- wfmain.cpp | 11 ++++++++--- wfmain.h | 2 ++ wfmain.ui | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/wfmain.cpp b/wfmain.cpp index 6afc3fa..94bc45a 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -812,15 +812,15 @@ void wfmain::setupMainUI() ); connect(this->trxadj, &transceiverAdjustments::setIFShift, - [=](const unsigned char &newValue) { issueCmd(cmdSetIFShift, newValue);} + [=](const unsigned char &newValue) { issueCmdUniquePriority(cmdSetIFShift, newValue);} ); connect(this->trxadj, &transceiverAdjustments::setTPBFInner, - [=](const unsigned char &newValue) { issueCmd(cmdSetTPBFInner, newValue);} + [=](const unsigned char &newValue) { issueCmdUniquePriority(cmdSetTPBFInner, newValue);} ); connect(this->trxadj, &transceiverAdjustments::setTPBFOuter, - [=](const unsigned char &newValue) { issueCmd(cmdSetTPBFOuter, newValue);} + [=](const unsigned char &newValue) { issueCmdUniquePriority(cmdSetTPBFOuter, newValue);} ); @@ -5428,6 +5428,11 @@ void wfmain::on_rigctldPortTxt_editingFinished() } } +void wfmain::on_moreControlsBtn_clicked() +{ + trxadj->show(); +} + // --- DEBUG FUNCTION --- void wfmain::on_debugBtn_clicked() { diff --git a/wfmain.h b/wfmain.h index ac66e8e..356ae9a 100644 --- a/wfmain.h +++ b/wfmain.h @@ -495,6 +495,8 @@ private slots: void on_rigctldPortTxt_editingFinished(); + void on_moreControlsBtn_clicked(); + private: Ui::wfmain *ui; void closeEvent(QCloseEvent *event); diff --git a/wfmain.ui b/wfmain.ui index 0194a6a..e129aac 100644 --- a/wfmain.ui +++ b/wfmain.ui @@ -465,6 +465,16 @@ + + + + Show additional controls + + + Show More + + + @@ -852,6 +862,9 @@ 50 + + Transmit and Receive button + Transmit @@ -885,6 +898,9 @@ + + Show the repeater tone and offset window + Repeater From cd7ea9724281f32a24e6b080138f52b6b895e9ae Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Fri, 5 Nov 2021 17:38:07 -0700 Subject: [PATCH 11/12] Added geometry constraints to the transceiver adjustments window, and disable controls which do not function except for debug builds. --- transceiveradjustments.cpp | 19 ++++- transceiveradjustments.ui | 148 +++++++++++++++++++++++++++---------- 2 files changed, 128 insertions(+), 39 deletions(-) diff --git a/transceiveradjustments.cpp b/transceiveradjustments.cpp index a5e8501..c87c612 100644 --- a/transceiveradjustments.cpp +++ b/transceiveradjustments.cpp @@ -6,7 +6,24 @@ 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 } diff --git a/transceiveradjustments.ui b/transceiveradjustments.ui index 791c7ef..62debf0 100644 --- a/transceiveradjustments.ui +++ b/transceiveradjustments.ui @@ -29,13 +29,13 @@ 10 - + Transmitter - + 0 @@ -49,14 +49,20 @@ 0 - + + + + 0 + 230 + + Qt::Vertical - + Comp @@ -65,16 +71,22 @@ - + - + + + + 0 + 230 + + Qt::Vertical - + 0 @@ -89,16 +101,22 @@ - + - + + + + 0 + 230 + + Qt::Vertical - + 0 @@ -106,23 +124,29 @@ - Trebble + Treble - + - + + + + 0 + 230 + + Qt::Vertical - + 0 @@ -140,22 +164,28 @@ - + Receiver - + - + + + + 0 + 230 + + Qt::Vertical - + 0 @@ -170,16 +200,22 @@ - + - + + + + 0 + 230 + + Qt::Vertical - + 0 @@ -187,7 +223,7 @@ - Trebble + Treble @@ -197,6 +233,12 @@ + + + 0 + 230 + + 255 @@ -230,6 +272,12 @@ + + + 0 + 230 + + 255 @@ -263,6 +311,12 @@ + + + 0 + 230 + + 255 @@ -281,16 +335,22 @@ - + - + + + + 0 + 230 + + Qt::Vertical - + NR @@ -299,16 +359,22 @@ - + - + + + + 0 + 230 + + Qt::Vertical - + NB @@ -317,16 +383,22 @@ - + - + + + + 0 + 230 + + Qt::Vertical - + Notch @@ -335,40 +407,40 @@ - + Bandwidth - + Low - + - + High - + - + Filter - + From 77509aead67356d8e09c11786ed8fbd75aa775cc Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Fri, 5 Nov 2021 23:21:36 -0700 Subject: [PATCH 12/12] Added RTS PTT support commHandler and rigCommander. RTS is only sent from rigCommander at this time, the pty is not parsed. --- commhandler.cpp | 20 ++++++++++++++++++++ commhandler.h | 8 ++++++++ rigcommander.cpp | 27 +++++++++++++++++++++------ rigcommander.h | 1 + rigidentities.h | 1 + 5 files changed, 51 insertions(+), 6 deletions(-) diff --git a/commhandler.cpp b/commhandler.cpp index 7a48d87..165c90e 100644 --- a/commhandler.cpp +++ b/commhandler.cpp @@ -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; diff --git a/commhandler.h b/commhandler.h index e7e5580..c76e23f 100644 --- a/commhandler.h +++ b/commhandler.h @@ -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); diff --git a/rigcommander.cpp b/rigcommander.cpp index c6e72e0..b57e285 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -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))); @@ -992,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) @@ -1011,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; } } @@ -2908,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; @@ -3321,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; @@ -3341,6 +3354,7 @@ 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'); @@ -3366,6 +3380,7 @@ void rigCommander::determineRigCaps() rigCaps.hasFDcomms = false; rigCaps.hasATU = false; rigCaps.hasPTTCommand = false; + rigCaps.useRTSforPTT = true; rigCaps.hasDataModes = false; rigCaps.hasIFShift = true; // untested rigCaps.attenuators.push_back('\x20'); diff --git a/rigcommander.h b/rigcommander.h index 1abc38f..bf02aad 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -322,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); diff --git a/rigidentities.h b/rigidentities.h index a87d9ec..cae1b75 100644 --- a/rigidentities.h +++ b/rigidentities.h @@ -118,6 +118,7 @@ struct rigCapabilities { bool hasTransmit; bool hasPTTCommand; + bool useRTSforPTT; bool hasAttenuator; bool hasPreamp; bool hasAntennaSel;