kopia lustrzana https://gitlab.com/eliggett/wfview
Fix band buttons
rodzic
c18323fe22
commit
6a9301d921
|
@ -2198,8 +2198,20 @@ void rigCommander::parseCommand()
|
||||||
break;
|
break;
|
||||||
// 0x1a
|
// 0x1a
|
||||||
case funcBandStackReg:
|
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;
|
break;
|
||||||
|
}
|
||||||
case funcFilterWidth:
|
case funcFilterWidth:
|
||||||
{
|
{
|
||||||
quint16 calc;
|
quint16 calc;
|
||||||
|
@ -7101,6 +7113,12 @@ void rigCommander::receiveCommand(queueItemType type, funcs func, QVariant value
|
||||||
toneInfo t = value.value<toneInfo>();
|
toneInfo t = value.value<toneInfo>();
|
||||||
payload.append(encodeTone(t.tone, t.tinv, t.rinv));
|
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
|
else
|
||||||
{
|
{
|
||||||
qInfo(logRig()) << "Got unknown value type" << QString(value.typeName());
|
qInfo(logRig()) << "Got unknown value type" << QString(value.typeName());
|
||||||
|
|
|
@ -159,7 +159,22 @@ struct genericType {
|
||||||
QString name;
|
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 {
|
struct rigCapabilities {
|
||||||
quint8 model;
|
quint8 model;
|
||||||
|
@ -249,6 +264,7 @@ Q_DECLARE_METATYPE(filterType)
|
||||||
Q_DECLARE_METATYPE(inputTypes)
|
Q_DECLARE_METATYPE(inputTypes)
|
||||||
Q_DECLARE_METATYPE(genericType)
|
Q_DECLARE_METATYPE(genericType)
|
||||||
Q_DECLARE_METATYPE(bandType)
|
Q_DECLARE_METATYPE(bandType)
|
||||||
|
Q_DECLARE_METATYPE(bandStackType)
|
||||||
Q_DECLARE_METATYPE(centerSpanData)
|
Q_DECLARE_METATYPE(centerSpanData)
|
||||||
|
|
||||||
#endif // RIGIDENTITIES_H
|
#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<cacheItem>();
|
||||||
qRegisterMetaType<spectrumBounds>();
|
qRegisterMetaType<spectrumBounds>();
|
||||||
qRegisterMetaType<centerSpanData>();
|
qRegisterMetaType<centerSpanData>();
|
||||||
|
qRegisterMetaType<bandStackType>();
|
||||||
|
|
||||||
haveRigCaps = false;
|
haveRigCaps = false;
|
||||||
|
|
||||||
|
@ -5493,7 +5494,7 @@ void wfmain::bandStackBtnClick()
|
||||||
{
|
{
|
||||||
bandStkRegCode = ui->bandStkPopdown->currentIndex() + 1;
|
bandStkRegCode = ui->bandStkPopdown->currentIndex() + 1;
|
||||||
waitingForBandStackRtn = true; // so that when the return is parsed we jump to this frequency/mode info
|
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)
|
void wfmain::setBand(int band)
|
||||||
|
@ -9132,7 +9133,29 @@ void wfmain::receiveValue(cacheItem val){
|
||||||
break;
|
break;
|
||||||
// 0x1a
|
// 0x1a
|
||||||
case funcBandStackReg:
|
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;
|
break;
|
||||||
|
}
|
||||||
case funcFilterWidth:
|
case funcFilterWidth:
|
||||||
receivePassband(val.value.value<ushort>());
|
receivePassband(val.value.value<ushort>());
|
||||||
break;
|
break;
|
||||||
|
|
Ładowanie…
Reference in New Issue