Fix band buttons

rigcreator
Phil Taylor 2023-05-26 18:38:40 +01:00
rodzic c18323fe22
commit 6a9301d921
3 zmienionych plików z 60 dodań i 3 usunięć

Wyświetl plik

@ -2198,8 +2198,20 @@ void rigCommander::parseCommand()
break;
// 0x1a
case funcBandStackReg:
parseBandStackReg();
{
bandStackType bsr;
bsr.band = payloadIn[2];
bsr.regCode = payloadIn[3];
bsr.freq = parseFrequency(payloadIn, 7);
// The Band Stacking command returns the regCode in the position that VFO is expected.
// As BSR is always on the active VFO, just set that.
bsr.freq.VFO = selVFO_t::activeVFO;
bsr.data = (payloadIn[11] & 0x10) >> 4; // not sure...
bsr.mode = payloadIn[9];
bsr.filter = payloadIn[10];
value.setValue(bsr);
break;
}
case funcFilterWidth:
{
quint16 calc;
@ -7101,6 +7113,12 @@ void rigCommander::receiveCommand(queueItemType type, funcs func, QVariant value
toneInfo t = value.value<toneInfo>();
payload.append(encodeTone(t.tone, t.tinv, t.rinv));
}
else if (!strcmp(value.typeName(),"bandStackType"))
{
bandStackType bsr = value.value<bandStackType>();
payload.append(bsr.band);
payload.append(bsr.regCode); // [01...03]. 01 = latest, 03 = oldest
}
else
{
qInfo(logRig()) << "Got unknown value type" << QString(value.typeName());

Wyświetl plik

@ -159,7 +159,22 @@ struct genericType {
QString name;
};
model_kind determineRadioModel(unsigned char rigID);
struct bandStackType {
bandStackType() {}
bandStackType(uchar band, uchar regCode): band(band),regCode(regCode), freq(), data(0), mode(0), filter(0) {}
bandStackType(uchar band, uchar regCode, freqt freq, uchar data, uchar mode, uchar filter):
band(band), regCode(regCode), freq(freq), data(data), mode(mode), filter(filter) {};
uchar band;
uchar regCode;
freqt freq;
uchar data;
uchar mode;
uchar filter;
};
//model_kind determineRadioModel(unsigned char rigID);
struct rigCapabilities {
quint8 model;
@ -249,6 +264,7 @@ Q_DECLARE_METATYPE(filterType)
Q_DECLARE_METATYPE(inputTypes)
Q_DECLARE_METATYPE(genericType)
Q_DECLARE_METATYPE(bandType)
Q_DECLARE_METATYPE(bandStackType)
Q_DECLARE_METATYPE(centerSpanData)
#endif // RIGIDENTITIES_H

Wyświetl plik

@ -96,6 +96,7 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
qRegisterMetaType<cacheItem>();
qRegisterMetaType<spectrumBounds>();
qRegisterMetaType<centerSpanData>();
qRegisterMetaType<bandStackType>();
haveRigCaps = false;
@ -5493,7 +5494,7 @@ void wfmain::bandStackBtnClick()
{
bandStkRegCode = ui->bandStkPopdown->currentIndex() + 1;
waitingForBandStackRtn = true; // so that when the return is parsed we jump to this frequency/mode info
emit getBandStackReg(bandStkBand, bandStkRegCode);
queue->add(priorityImmediate,queueItem(funcBandStackReg,QVariant::fromValue<bandStackType>(bandStackType(bandStkBand, bandStkRegCode)),false));
}
void wfmain::setBand(int band)
@ -9132,7 +9133,29 @@ void wfmain::receiveValue(cacheItem val){
break;
// 0x1a
case funcBandStackReg:
{
bandStackType bsr = val.value.value<bandStackType>();
qInfo(logSystem()) << __func__ << "BSR received into main: Freq: " << bsr.freq.Hz << ", mode: " << bsr.mode << ", filter: " << bsr.filter << ", data mode: " << bsr.data;
queue->add(priorityImmediate,queueItem((rigCaps.commands.contains(funcSelectedFreq)?funcSelectedFreq:funcFreqSet),QVariant::fromValue<freqt>(bsr.freq),false));
freq = bsr.freq;
ui->tabWidget->setCurrentIndex(0);
foreach (auto md, rigCaps.modes)
{
if (md.reg == bsr.mode) {
md.filter=bsr.filter;
md.data=bsr.data;
queue->add(priorityImmediate,queueItem((rigCaps.commands.contains(funcSelectedMode)?funcSelectedMode:funcModeSet),QVariant::fromValue<modeInfo>(md),false));
queue->add(priorityImmediate,queueItem((rigCaps.commands.contains(funcSelectedMode)?funcNone:funcDataModeWithFilter),QVariant::fromValue<modeInfo>(md),false));
receiveMode(md); // update UI
break;
}
}
break;
}
case funcFilterWidth:
receivePassband(val.value.value<ushort>());
break;