diff --git a/rigcommander.cpp b/rigcommander.cpp index 9122449..03537dc 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -557,18 +557,24 @@ void rigCommander::getSpectrumMode() prepDataAndSend(specModePayload); } -void rigCommander::setFrequency(freqt freq) +void rigCommander::setFrequency(unsigned char vfo, freqt freq) { - //QByteArray freqPayload = makeFreqPayload(freq); QByteArray freqPayload = makeFreqPayload(freq); QByteArray cmdPayload; cmdPayload.append(freqPayload); - cmdPayload.prepend('\x00'); - + if (vfo == 0) { + rigState.vfoAFreq = freq; + cmdPayload.prepend('\x00'); + } + else + { + rigState.vfoBFreq = freq; + cmdPayload.prepend(vfo); + cmdPayload.prepend('\x25'); + } //printHex(cmdPayload, false, true); prepDataAndSend(cmdPayload); - rigState.vfoAFreq = freq; } QByteArray rigCommander::makeFreqPayload(freqt freq) diff --git a/rigcommander.h b/rigcommander.h index 1de8bc3..1486028 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -171,7 +171,7 @@ public slots: void getScopeMode(); // Frequency, Mode, BSR: - void setFrequency(freqt freq); + void setFrequency(unsigned char vfo, freqt freq); void getFrequency(); void setMode(unsigned char mode, unsigned char modeFilter); void setMode(mode_info); diff --git a/rigctld.cpp b/rigctld.cpp index 4879728..27dd6c3 100644 --- a/rigctld.cpp +++ b/rigctld.cpp @@ -57,7 +57,7 @@ rigCtlD::~rigCtlD() void rigCtlD::receiveFrequency(freqt freq) { - emit setFrequency(freq); + emit setFrequency(0, freq); } void rigCtlD::receiveStateInfo(rigStateStruct* state) @@ -301,7 +301,7 @@ void rigCtlClient::socketReadyRead() if (ok) { freq.Hz = static_cast(newFreq); qDebug(logRigCtlD()) << QString("Set frequency: %1 (%2)").arg(freq.Hz).arg(command[1]); - emit parent->setFrequency(freq); + emit parent->setFrequency(0, freq); } } else if (command[0] == "1" || command[0] == "dump_caps") @@ -465,21 +465,46 @@ void rigCtlClient::socketReadyRead() } response.append(resp); } - else if (command[0] == "I" || command[0] == "set_split_freq") + else if (command.length() > 1 && command[0] == "I" || command[0] == "set_split_freq") { setCommand = true; + freqt freq; + bool ok = false; + double newFreq = 0.0f; + newFreq = command[1].toDouble(&ok); + if (ok) { + freq.Hz = static_cast(newFreq); + qDebug(logRigCtlD()) << QString("set_split_freq: %1 (%2)").arg(freq.Hz).arg(command[1]); + emit parent->setFrequency(1, freq); + } } - else if (command[0] == "m" || command[0] == "get_mode") + else if (command.length() > 2 && (command[0] == "X" || command[0] == "set_split_mode")) { + setCommand = true; + } + else if (command.length() > 0 && (command[0] == "x" || command[0] == "get_split_mode")) + { if (longReply) { - response.append(QString("Mode: %1").arg(getMode(rigState->mode, rigState->datamode))); - response.append(QString("Passband: %1").arg(getFilter(rigState->mode, rigState->filter))); + response.append(QString("TX Mode: %1").arg(getMode(rigState->mode, rigState->datamode))); + response.append(QString("TX Passband: %1").arg(getFilter(rigState->mode, rigState->filter))); } else { response.append(QString("%1").arg(getMode(rigState->mode, rigState->datamode))); response.append(QString("%1").arg(getFilter(rigState->mode, rigState->filter))); } } + + else if (command[0] == "m" || command[0] == "get_mode") + { + if (longReply) { + response.append(QString("Mode: %1").arg(getMode(rigState->mode, rigState->datamode))); + response.append(QString("Passband: %1").arg(getFilter(rigState->mode, rigState->filter))); + } + else { + response.append(QString("%1").arg(getMode(rigState->mode, rigState->datamode))); + response.append(QString("%1").arg(getFilter(rigState->mode, rigState->filter))); + } + } else if (command[0] == "M" || command[0] == "set_mode") { // Set mode @@ -973,8 +998,8 @@ void rigCtlClient::socketReadyRead() } else if (command.length() > 1 && (command[0] == 0x87 || command[0] == "set_powerstat")) { - setCommand = true; - if (command[1] == "0") + setCommand = true; + if (command[1] == "0") { emit parent->sendPowerOff(); } diff --git a/rigctld.h b/rigctld.h index 51f3698..0b71fa9 100644 --- a/rigctld.h +++ b/rigctld.h @@ -336,7 +336,7 @@ signals: void onStarted(); void onStopped(); void sendData(QString data); - void setFrequency(freqt freq); + void setFrequency(unsigned char vfo, freqt freq); void setPTT(bool state); void setMode(unsigned char mode, unsigned char modeFilter); void setDataMode(bool dataOn, unsigned char modeFilter); diff --git a/wfmain.cpp b/wfmain.cpp index e8455af..8e93e07 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -273,7 +273,7 @@ void wfmain::rigConnections() connect(this, SIGNAL(setScopeMode(spectrumMode)), rig, SLOT(setSpectrumMode(spectrumMode))); connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode())); - connect(this, SIGNAL(setFrequency(freqt)), rig, SLOT(setFrequency(freqt))); + connect(this, SIGNAL(setFrequency(unsigned char, freqt)), rig, SLOT(setFrequency(unsigned char, freqt))); connect(this, SIGNAL(setScopeEdge(char)), rig, SLOT(setScopeEdge(char))); connect(this, SIGNAL(setScopeSpan(char)), rig, SLOT(setScopeSpan(char))); //connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode())); @@ -400,7 +400,7 @@ void wfmain::makeRig() if (rigCtl != Q_NULLPTR) { connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*))); connect(this, SIGNAL(requestRigState()), rig, SLOT(sendState())); - connect(rigCtl, SIGNAL(setFrequency(freqt)), rig, SLOT(setFrequency(freqt))); + connect(rigCtl, SIGNAL(setFrequency(unsigned char, freqt)), rig, SLOT(setFrequency(unsigned char, freqt))); connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char))); connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char))); connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool))); @@ -2011,7 +2011,7 @@ void wfmain::shortcutMinus() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2025,7 +2025,7 @@ void wfmain::shortcutPlus() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2039,7 +2039,7 @@ void wfmain::shortcutShiftMinus() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2053,7 +2053,7 @@ void wfmain::shortcutShiftPlus() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2067,7 +2067,7 @@ void wfmain::shortcutControlMinus() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2081,7 +2081,7 @@ void wfmain::shortcutControlPlus() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2095,7 +2095,7 @@ void wfmain::shortcutPageUp() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2109,7 +2109,7 @@ void wfmain::shortcutPageDown() f.MHzDouble = f.Hz / (double)1E6; setUIFreq(); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); } @@ -2350,7 +2350,7 @@ void wfmain::doCmd(commandtype cmddata) { lastFreqCmdTime_ms = QDateTime::currentMSecsSinceEpoch(); freqt f = (*std::static_pointer_cast(data)); - emit setFrequency(f); + emit setFrequency(0,f); break; } case cmdSetMode: @@ -3041,6 +3041,7 @@ void wfmain::initPeriodicCommands() if (rigCaps.hasRXAntenna) { insertSlowPeriodicCommand(cmdGetAntenna, 128); } + insertSlowPeriodicCommand(cmdGetDuplexMode, 128); } void wfmain::insertPeriodicCommand(cmds cmd, unsigned char priority) @@ -3261,7 +3262,7 @@ void wfmain::handlePlotDoubleClick(QMouseEvent *me) freqGo.Hz = roundFrequency(freqGo.Hz, tsWfScrollHz); freqGo.MHzDouble = (float)freqGo.Hz / 1E6; - //emit setFrequency(freq); + //emit setFrequency(0,freq); issueCmd(cmdSetFreq, freqGo); freq = freqGo; setUIFreq(); @@ -3286,7 +3287,7 @@ void wfmain::handleWFDoubleClick(QMouseEvent *me) freqGo.Hz = roundFrequency(freqGo.Hz, tsWfScrollHz); freqGo.MHzDouble = (float)freqGo.Hz / 1E6; - //emit setFrequency(freq); + //emit setFrequency(0,freq); issueCmd(cmdSetFreq, freqGo); freq = freqGo; setUIFreq(); @@ -3341,7 +3342,7 @@ void wfmain::handleWFScroll(QWheelEvent *we) f.MHzDouble = f.Hz / (double)1E6; freq = f; - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmdUniquePriority(cmdSetFreq, f); ui->freqLabel->setText(QString("%1").arg(f.MHzDouble, 0, 'f')); //issueDelayedCommandUnique(cmdGetFreq); @@ -3758,7 +3759,7 @@ void wfmain::on_freqDial_valueChanged(int value) ui->freqLabel->setText(QString("%1").arg(f.MHzDouble, 0, 'f')); - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmdUniquePriority(cmdSetFreq, f); } else { ui->freqDial->blockSignals(true); @@ -3773,7 +3774,7 @@ void wfmain::receiveBandStackReg(freqt freqGo, char mode, char filter, bool data // read the band stack and apply by sending out commands qInfo(logSystem()) << __func__ << "BSR received into main: Freq: " << freqGo.Hz << ", mode: " << (unsigned int)mode << ", filter: " << (unsigned int)filter << ", data mode: " << dataOn; - //emit setFrequency(freq); + //emit setFrequency(0,freq); issueCmd(cmdSetFreq, freqGo); setModeVal = (unsigned char) mode; setFilterVal = (unsigned char) filter; @@ -3843,7 +3844,7 @@ void wfmain::on_band4mbtn_clicked() f.Hz = (70.200) * 1E6; } issueCmd(cmdSetFreq, f); - //emit setFrequency(f); + //emit setFrequency(0,f); issueDelayedCommandUnique(cmdGetFreq); ui->tabWidget->setCurrentIndex(0); } @@ -3910,7 +3911,7 @@ void wfmain::on_band60mbtn_clicked() freqt f; f.Hz = (5.3305) * 1E6; issueCmd(cmdSetFreq, f); - //emit setFrequency(f); + //emit setFrequency(0,f); issueDelayedCommandUnique(cmdGetFreq); ui->tabWidget->setCurrentIndex(0); } @@ -3931,7 +3932,7 @@ void wfmain::on_band630mbtn_clicked() { freqt f; f.Hz = 475 * 1E3; - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); ui->tabWidget->setCurrentIndex(0); @@ -3941,7 +3942,7 @@ void wfmain::on_band2200mbtn_clicked() { freqt f; f.Hz = 136 * 1E3; - //emit setFrequency(f); + //emit setFrequency(0,f); issueCmd(cmdSetFreq, f); issueDelayedCommandUnique(cmdGetFreq); ui->tabWidget->setCurrentIndex(0); @@ -5296,7 +5297,7 @@ void wfmain::on_enableRigctldChk_clicked(bool checked) if (rig != Q_NULLPTR) { // We are already connected to a rig. connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*))); - connect(rigCtl, SIGNAL(setFrequency(freqt)), rig, SLOT(setFrequency(freqt))); + connect(rigCtl, SIGNAL(setFrequency(unsigned char, freqt)), rig, SLOT(setFrequency(unsigned char, freqt))); connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char))); connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char))); connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool))); diff --git a/wfmain.h b/wfmain.h index 390b161..b921b9c 100644 --- a/wfmain.h +++ b/wfmain.h @@ -58,7 +58,7 @@ signals: // Frequency, mode, band: void getFrequency(); - void setFrequency(freqt freq); + void setFrequency(unsigned char vfo, freqt freq); void getMode(); void setMode(unsigned char modeIndex, unsigned char modeFilter); void setMode(mode_info);