Experimental support for split mode in rigctld

merge-requests/5/merge
Phil Taylor 2021-08-29 11:51:53 +01:00
rodzic 57e68571af
commit bf16dfe19a
6 zmienionych plików z 69 dodań i 37 usunięć

Wyświetl plik

@ -557,18 +557,24 @@ void rigCommander::getSpectrumMode()
prepDataAndSend(specModePayload); prepDataAndSend(specModePayload);
} }
void rigCommander::setFrequency(freqt freq) void rigCommander::setFrequency(unsigned char vfo, freqt freq)
{ {
//QByteArray freqPayload = makeFreqPayload(freq);
QByteArray freqPayload = makeFreqPayload(freq); QByteArray freqPayload = makeFreqPayload(freq);
QByteArray cmdPayload; QByteArray cmdPayload;
cmdPayload.append(freqPayload); 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); //printHex(cmdPayload, false, true);
prepDataAndSend(cmdPayload); prepDataAndSend(cmdPayload);
rigState.vfoAFreq = freq;
} }
QByteArray rigCommander::makeFreqPayload(freqt freq) QByteArray rigCommander::makeFreqPayload(freqt freq)

Wyświetl plik

@ -171,7 +171,7 @@ public slots:
void getScopeMode(); void getScopeMode();
// Frequency, Mode, BSR: // Frequency, Mode, BSR:
void setFrequency(freqt freq); void setFrequency(unsigned char vfo, freqt freq);
void getFrequency(); void getFrequency();
void setMode(unsigned char mode, unsigned char modeFilter); void setMode(unsigned char mode, unsigned char modeFilter);
void setMode(mode_info); void setMode(mode_info);

Wyświetl plik

@ -57,7 +57,7 @@ rigCtlD::~rigCtlD()
void rigCtlD::receiveFrequency(freqt freq) void rigCtlD::receiveFrequency(freqt freq)
{ {
emit setFrequency(freq); emit setFrequency(0, freq);
} }
void rigCtlD::receiveStateInfo(rigStateStruct* state) void rigCtlD::receiveStateInfo(rigStateStruct* state)
@ -301,7 +301,7 @@ void rigCtlClient::socketReadyRead()
if (ok) { if (ok) {
freq.Hz = static_cast<int>(newFreq); freq.Hz = static_cast<int>(newFreq);
qDebug(logRigCtlD()) << QString("Set frequency: %1 (%2)").arg(freq.Hz).arg(command[1]); 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") else if (command[0] == "1" || command[0] == "dump_caps")
@ -465,21 +465,46 @@ void rigCtlClient::socketReadyRead()
} }
response.append(resp); 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; setCommand = true;
freqt freq;
bool ok = false;
double newFreq = 0.0f;
newFreq = command[1].toDouble(&ok);
if (ok) {
freq.Hz = static_cast<int>(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) { if (longReply) {
response.append(QString("Mode: %1").arg(getMode(rigState->mode, rigState->datamode))); response.append(QString("TX Mode: %1").arg(getMode(rigState->mode, rigState->datamode)));
response.append(QString("Passband: %1").arg(getFilter(rigState->mode, rigState->filter))); response.append(QString("TX Passband: %1").arg(getFilter(rigState->mode, rigState->filter)));
} }
else { else {
response.append(QString("%1").arg(getMode(rigState->mode, rigState->datamode))); response.append(QString("%1").arg(getMode(rigState->mode, rigState->datamode)));
response.append(QString("%1").arg(getFilter(rigState->mode, rigState->filter))); 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") else if (command[0] == "M" || command[0] == "set_mode")
{ {
// Set mode // Set mode
@ -973,8 +998,8 @@ void rigCtlClient::socketReadyRead()
} }
else if (command.length() > 1 && (command[0] == 0x87 || command[0] == "set_powerstat")) else if (command.length() > 1 && (command[0] == 0x87 || command[0] == "set_powerstat"))
{ {
setCommand = true; setCommand = true;
if (command[1] == "0") if (command[1] == "0")
{ {
emit parent->sendPowerOff(); emit parent->sendPowerOff();
} }

Wyświetl plik

@ -336,7 +336,7 @@ signals:
void onStarted(); void onStarted();
void onStopped(); void onStopped();
void sendData(QString data); void sendData(QString data);
void setFrequency(freqt freq); void setFrequency(unsigned char vfo, freqt freq);
void setPTT(bool state); void setPTT(bool state);
void setMode(unsigned char mode, unsigned char modeFilter); void setMode(unsigned char mode, unsigned char modeFilter);
void setDataMode(bool dataOn, unsigned char modeFilter); void setDataMode(bool dataOn, unsigned char modeFilter);

Wyświetl plik

@ -273,7 +273,7 @@ void wfmain::rigConnections()
connect(this, SIGNAL(setScopeMode(spectrumMode)), rig, SLOT(setSpectrumMode(spectrumMode))); connect(this, SIGNAL(setScopeMode(spectrumMode)), rig, SLOT(setSpectrumMode(spectrumMode)));
connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode())); 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(setScopeEdge(char)), rig, SLOT(setScopeEdge(char)));
connect(this, SIGNAL(setScopeSpan(char)), rig, SLOT(setScopeSpan(char))); connect(this, SIGNAL(setScopeSpan(char)), rig, SLOT(setScopeSpan(char)));
//connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode())); //connect(this, SIGNAL(getScopeMode()), rig, SLOT(getScopeMode()));
@ -400,7 +400,7 @@ void wfmain::makeRig()
if (rigCtl != Q_NULLPTR) { if (rigCtl != Q_NULLPTR) {
connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*))); connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*)));
connect(this, SIGNAL(requestRigState()), rig, SLOT(sendState())); 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(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(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char)));
connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool))); connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));
@ -2011,7 +2011,7 @@ void wfmain::shortcutMinus()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2025,7 +2025,7 @@ void wfmain::shortcutPlus()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2039,7 +2039,7 @@ void wfmain::shortcutShiftMinus()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2053,7 +2053,7 @@ void wfmain::shortcutShiftPlus()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2067,7 +2067,7 @@ void wfmain::shortcutControlMinus()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2081,7 +2081,7 @@ void wfmain::shortcutControlPlus()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2095,7 +2095,7 @@ void wfmain::shortcutPageUp()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2109,7 +2109,7 @@ void wfmain::shortcutPageDown()
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
setUIFreq(); setUIFreq();
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
} }
@ -2350,7 +2350,7 @@ void wfmain::doCmd(commandtype cmddata)
{ {
lastFreqCmdTime_ms = QDateTime::currentMSecsSinceEpoch(); lastFreqCmdTime_ms = QDateTime::currentMSecsSinceEpoch();
freqt f = (*std::static_pointer_cast<freqt>(data)); freqt f = (*std::static_pointer_cast<freqt>(data));
emit setFrequency(f); emit setFrequency(0,f);
break; break;
} }
case cmdSetMode: case cmdSetMode:
@ -3041,6 +3041,7 @@ void wfmain::initPeriodicCommands()
if (rigCaps.hasRXAntenna) { if (rigCaps.hasRXAntenna) {
insertSlowPeriodicCommand(cmdGetAntenna, 128); insertSlowPeriodicCommand(cmdGetAntenna, 128);
} }
insertSlowPeriodicCommand(cmdGetDuplexMode, 128);
} }
void wfmain::insertPeriodicCommand(cmds cmd, unsigned char priority) void wfmain::insertPeriodicCommand(cmds cmd, unsigned char priority)
@ -3261,7 +3262,7 @@ void wfmain::handlePlotDoubleClick(QMouseEvent *me)
freqGo.Hz = roundFrequency(freqGo.Hz, tsWfScrollHz); freqGo.Hz = roundFrequency(freqGo.Hz, tsWfScrollHz);
freqGo.MHzDouble = (float)freqGo.Hz / 1E6; freqGo.MHzDouble = (float)freqGo.Hz / 1E6;
//emit setFrequency(freq); //emit setFrequency(0,freq);
issueCmd(cmdSetFreq, freqGo); issueCmd(cmdSetFreq, freqGo);
freq = freqGo; freq = freqGo;
setUIFreq(); setUIFreq();
@ -3286,7 +3287,7 @@ void wfmain::handleWFDoubleClick(QMouseEvent *me)
freqGo.Hz = roundFrequency(freqGo.Hz, tsWfScrollHz); freqGo.Hz = roundFrequency(freqGo.Hz, tsWfScrollHz);
freqGo.MHzDouble = (float)freqGo.Hz / 1E6; freqGo.MHzDouble = (float)freqGo.Hz / 1E6;
//emit setFrequency(freq); //emit setFrequency(0,freq);
issueCmd(cmdSetFreq, freqGo); issueCmd(cmdSetFreq, freqGo);
freq = freqGo; freq = freqGo;
setUIFreq(); setUIFreq();
@ -3341,7 +3342,7 @@ void wfmain::handleWFScroll(QWheelEvent *we)
f.MHzDouble = f.Hz / (double)1E6; f.MHzDouble = f.Hz / (double)1E6;
freq = f; freq = f;
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmdUniquePriority(cmdSetFreq, f); issueCmdUniquePriority(cmdSetFreq, f);
ui->freqLabel->setText(QString("%1").arg(f.MHzDouble, 0, 'f')); ui->freqLabel->setText(QString("%1").arg(f.MHzDouble, 0, 'f'));
//issueDelayedCommandUnique(cmdGetFreq); //issueDelayedCommandUnique(cmdGetFreq);
@ -3758,7 +3759,7 @@ void wfmain::on_freqDial_valueChanged(int value)
ui->freqLabel->setText(QString("%1").arg(f.MHzDouble, 0, 'f')); ui->freqLabel->setText(QString("%1").arg(f.MHzDouble, 0, 'f'));
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmdUniquePriority(cmdSetFreq, f); issueCmdUniquePriority(cmdSetFreq, f);
} else { } else {
ui->freqDial->blockSignals(true); 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 // 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; 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); issueCmd(cmdSetFreq, freqGo);
setModeVal = (unsigned char) mode; setModeVal = (unsigned char) mode;
setFilterVal = (unsigned char) filter; setFilterVal = (unsigned char) filter;
@ -3843,7 +3844,7 @@ void wfmain::on_band4mbtn_clicked()
f.Hz = (70.200) * 1E6; f.Hz = (70.200) * 1E6;
} }
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
//emit setFrequency(f); //emit setFrequency(0,f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
ui->tabWidget->setCurrentIndex(0); ui->tabWidget->setCurrentIndex(0);
} }
@ -3910,7 +3911,7 @@ void wfmain::on_band60mbtn_clicked()
freqt f; freqt f;
f.Hz = (5.3305) * 1E6; f.Hz = (5.3305) * 1E6;
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
//emit setFrequency(f); //emit setFrequency(0,f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
ui->tabWidget->setCurrentIndex(0); ui->tabWidget->setCurrentIndex(0);
} }
@ -3931,7 +3932,7 @@ void wfmain::on_band630mbtn_clicked()
{ {
freqt f; freqt f;
f.Hz = 475 * 1E3; f.Hz = 475 * 1E3;
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
ui->tabWidget->setCurrentIndex(0); ui->tabWidget->setCurrentIndex(0);
@ -3941,7 +3942,7 @@ void wfmain::on_band2200mbtn_clicked()
{ {
freqt f; freqt f;
f.Hz = 136 * 1E3; f.Hz = 136 * 1E3;
//emit setFrequency(f); //emit setFrequency(0,f);
issueCmd(cmdSetFreq, f); issueCmd(cmdSetFreq, f);
issueDelayedCommandUnique(cmdGetFreq); issueDelayedCommandUnique(cmdGetFreq);
ui->tabWidget->setCurrentIndex(0); ui->tabWidget->setCurrentIndex(0);
@ -5296,7 +5297,7 @@ void wfmain::on_enableRigctldChk_clicked(bool checked)
if (rig != Q_NULLPTR) { if (rig != Q_NULLPTR) {
// We are already connected to a rig. // We are already connected to a rig.
connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*))); 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(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(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char)));
connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool))); connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));

Wyświetl plik

@ -58,7 +58,7 @@ signals:
// Frequency, mode, band: // Frequency, mode, band:
void getFrequency(); void getFrequency();
void setFrequency(freqt freq); void setFrequency(unsigned char vfo, freqt freq);
void getMode(); void getMode();
void setMode(unsigned char modeIndex, unsigned char modeFilter); void setMode(unsigned char modeIndex, unsigned char modeFilter);
void setMode(mode_info); void setMode(mode_info);