kopia lustrzana https://gitlab.com/eliggett/wfview
Fix band buttons
rodzic
c18323fe22
commit
6a9301d921
|
@ -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());
|
||||
|
|
|
@ -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
|
||||
|
|
25
wfmain.cpp
25
wfmain.cpp
|
@ -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;
|
||||
|
|
Ładowanie…
Reference in New Issue