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);
}
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)

Wyświetl plik

@ -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);

Wyświetl plik

@ -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<int>(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<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) {
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();
}

Wyświetl plik

@ -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);

Wyświetl plik

@ -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<freqt>(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)));

Wyświetl plik

@ -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);