diff --git a/repeatersetup.cpp b/repeatersetup.cpp index fc9928e..2439f15 100644 --- a/repeatersetup.cpp +++ b/repeatersetup.cpp @@ -29,6 +29,7 @@ repeaterSetup::~repeaterSetup() rig.inputs.clear(); rig.preamps.clear(); rig.attenuators.clear(); + rig.antennas.clear(); delete ui; } diff --git a/rigcommander.cpp b/rigcommander.cpp index e3f8e3d..286bf73 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -2327,8 +2327,11 @@ void rigCommander::determineRigCaps() rigCaps.hasAttenuator = true; // Verify that all recent rigs have attenuators rigCaps.attenuators.push_back('\x00'); + rigCaps.hasPreamp = true; rigCaps.preamps.push_back('\x00'); + rigCaps.hasAntennaSel = false; + rigCaps.hasTransmit = true; switch(model){ @@ -2367,6 +2370,8 @@ void rigCommander::determineRigCaps() rigCaps.attenuators.push_back('\x30'); rigCaps.preamps.push_back('\x01'); rigCaps.preamps.push_back('\x02'); + rigCaps.hasAntennaSel = true; + rigCaps.antennas = {0x00, 0x01, 0x02}; break; case model9700: rigCaps.modelName = QString("IC-9700"); @@ -2407,6 +2412,8 @@ void rigCommander::determineRigCaps() '\x39', '\x42', '\x45'}); rigCaps.preamps.push_back('\x01'); rigCaps.preamps.push_back('\x02'); + rigCaps.hasAntennaSel = true; + rigCaps.antennas = {0x00, 0x01}; break; case model7850: rigCaps.modelName = QString("IC-785x"); @@ -2428,6 +2435,8 @@ void rigCommander::determineRigCaps() '\x12', '\x15', '\x18', '\x21'}); rigCaps.preamps.push_back('\x01'); rigCaps.preamps.push_back('\x02'); + rigCaps.hasAntennaSel = true; + rigCaps.antennas = {0x00, 0x01, 0x02, 0x03}; break; case model705: rigCaps.modelName = QString("IC-705"); @@ -2484,6 +2493,8 @@ void rigCommander::determineRigCaps() rigCaps.hasLan = false; rigCaps.hasEthernet = false; rigCaps.hasWiFi = false; + rigCaps.hasPreamp = false; + rigCaps.hasAntennaSel = false; rigCaps.attenuators.push_back('\x10'); rigCaps.attenuators.push_back('\x12'); rigCaps.attenuators.push_back('\x20'); diff --git a/rigidentities.h b/rigidentities.h index 17c37ab..bdc8750 100644 --- a/rigidentities.h +++ b/rigidentities.h @@ -66,11 +66,13 @@ struct rigCapabilities { bool hasDTCS; bool hasTransmit; - bool hasAttenuator; + bool hasPreamp; + bool hasAntennaSel; //QVector attenuators; std::vector attenuators; std::vector preamps; + std::vector antennas; }; diff --git a/wfmain.cpp b/wfmain.cpp index af8207f..1929292 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -483,6 +483,7 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent connect(rig, SIGNAL(haveRigID(rigCapabilities)), this, SLOT(receiveRigID(rigCapabilities))); connect(this, SIGNAL(setAttenuator(unsigned char)), rig, SLOT(setAttenuator(unsigned char))); connect(this, SIGNAL(setPreamp(unsigned char)), rig, SLOT(setPreamp(unsigned char))); + connect(this, SIGNAL(setAntenna(unsigned char)), rig, SLOT(setAntenna(unsigned char))); // Speech (emitted from rig speaker) @@ -2054,18 +2055,43 @@ void wfmain::receiveRigID(rigCapabilities rigCaps) } ui->attSelCombo->clear(); - for(unsigned int i=0; i < rigCaps.attenuators.size(); i++) + if(rigCaps.hasAttenuator) { - inName = (i==0)?QString("0dB"):QString("-%1 dB").arg(rigCaps.attenuators.at(i), 0, 16); - ui->attSelCombo->addItem(inName, rigCaps.attenuators.at(i)); + ui->attSelCombo->setDisabled(false); + for(unsigned int i=0; i < rigCaps.attenuators.size(); i++) + { + inName = (i==0)?QString("0dB"):QString("-%1 dB").arg(rigCaps.attenuators.at(i), 0, 16); + ui->attSelCombo->addItem(inName, rigCaps.attenuators.at(i)); + } + } else { + ui->attSelCombo->setDisabled(true); } - for(unsigned int i=0; i < rigCaps.preamps.size(); i++) + ui->preampSelCombo->clear(); + if(rigCaps.hasPreamp) { - inName = (i==0)?QString("Disabled"):QString("Pre #%1").arg(rigCaps.preamps.at(i), 0, 16); - ui->preampSelCombo->addItem(inName, rigCaps.preamps.at(i)); + ui->preampSelCombo->setDisabled(false); + for(unsigned int i=0; i < rigCaps.preamps.size(); i++) + { + inName = (i==0)?QString("Disabled"):QString("Pre #%1").arg(rigCaps.preamps.at(i), 0, 16); + ui->preampSelCombo->addItem(inName, rigCaps.preamps.at(i)); + } + } else { + ui->preampSelCombo->setDisabled(true); } + ui->antennaSelCombo->clear(); + if(rigCaps.hasAntennaSel) + { + ui->antennaSelCombo->setDisabled(false); + for(unsigned int i=0; i < rigCaps.antennas.size(); i++) + { + inName = QString("%1").arg(rigCaps.antennas.at(i), 0, 16); + ui->antennaSelCombo->addItem(inName, rigCaps.antennas.at(i)); + } + } else { + ui->antennaSelCombo->setDisabled(true); + } @@ -3672,6 +3698,12 @@ void wfmain::on_preampSelCombo_activated(int index) emit setPreamp(pre); } +void wfmain::on_antennaSelCombo_activated(int index) +{ + unsigned char ant = (unsigned char)ui->antennaSelCombo->itemData(index).toInt(); + emit setAntenna(ant); +} + // --- DEBUG FUNCTION --- void wfmain::on_debugBtn_clicked() { diff --git a/wfmain.h b/wfmain.h index 38e7f0a..ee6dbf5 100644 --- a/wfmain.h +++ b/wfmain.h @@ -391,6 +391,8 @@ private slots: void on_preampSelCombo_activated(int index); + void on_antennaSelCombo_activated(int index); + private: Ui::wfmain *ui; QSettings settings;