kopia lustrzana https://gitlab.com/eliggett/wfview
First look at a passband indicator
rodzic
70101487a3
commit
d8e244f33a
|
@ -872,6 +872,35 @@ void rigCommander::getDuplexMode()
|
||||||
prepDataAndSend(payload);
|
prepDataAndSend(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rigCommander::getPassband()
|
||||||
|
{
|
||||||
|
QByteArray payload;
|
||||||
|
payload.setRawData("\x1A\x03", 2);
|
||||||
|
|
||||||
|
/*
|
||||||
|
int cmd;
|
||||||
|
if (mode == modeLSB || mode == modeUSB || mode == modeLSB_D || mode == modeUSB_D)
|
||||||
|
cmd = 1;
|
||||||
|
else if (mode == modeAM)
|
||||||
|
cmd = 4;
|
||||||
|
else if (mode == modeFM)
|
||||||
|
cmd = 7;
|
||||||
|
else if (mode == modeCW || mode == modeCW_R)
|
||||||
|
cmd = 10;
|
||||||
|
else if (mode == modeRTTY || mode == modeRTTY_R)
|
||||||
|
cmd = 11;
|
||||||
|
else if (mode == modePSK || mode == modePSK_R)
|
||||||
|
cmd = 12;
|
||||||
|
else
|
||||||
|
cmd = 1;
|
||||||
|
|
||||||
|
payload.append(bcdEncodeInt(cmd));
|
||||||
|
*/
|
||||||
|
|
||||||
|
qDebug() << "Requesting Passband" << payload;
|
||||||
|
prepDataAndSend(payload);
|
||||||
|
}
|
||||||
|
|
||||||
void rigCommander::getTransmitFrequency()
|
void rigCommander::getTransmitFrequency()
|
||||||
{
|
{
|
||||||
QByteArray payload;
|
QByteArray payload;
|
||||||
|
@ -2511,6 +2540,9 @@ void rigCommander::parseRegisters1A()
|
||||||
// band stacking register
|
// band stacking register
|
||||||
parseBandStackReg();
|
parseBandStackReg();
|
||||||
break;
|
break;
|
||||||
|
case '\x03':
|
||||||
|
emit havePassband(bcdHexToUChar((quint8)payloadIn[2]));
|
||||||
|
break;
|
||||||
case '\x04':
|
case '\x04':
|
||||||
state.set(AGC, (quint8)payloadIn[2], false);
|
state.set(AGC, (quint8)payloadIn[2], false);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -157,6 +157,8 @@ public slots:
|
||||||
void setManualNotch(bool enabled);
|
void setManualNotch(bool enabled);
|
||||||
void getManualNotch();
|
void getManualNotch();
|
||||||
|
|
||||||
|
void getPassband();
|
||||||
|
|
||||||
// Repeater:
|
// Repeater:
|
||||||
void setDuplexMode(duplexMode dm);
|
void setDuplexMode(duplexMode dm);
|
||||||
void getDuplexMode();
|
void getDuplexMode();
|
||||||
|
@ -321,6 +323,7 @@ signals:
|
||||||
void haveBandStackReg(freqt f, char mode, char filter, bool dataOn);
|
void haveBandStackReg(freqt f, char mode, char filter, bool dataOn);
|
||||||
void haveRitEnabled(bool ritEnabled);
|
void haveRitEnabled(bool ritEnabled);
|
||||||
void haveRitFrequency(int ritHz);
|
void haveRitFrequency(int ritHz);
|
||||||
|
void havePassband(quint8 pass);
|
||||||
|
|
||||||
// Repeater:
|
// Repeater:
|
||||||
void haveDuplexMode(duplexMode);
|
void haveDuplexMode(duplexMode);
|
||||||
|
|
56
wfmain.cpp
56
wfmain.cpp
|
@ -61,6 +61,7 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
|
||||||
qRegisterMetaType<spectrumMode>();
|
qRegisterMetaType<spectrumMode>();
|
||||||
qRegisterMetaType<freqt>();
|
qRegisterMetaType<freqt>();
|
||||||
qRegisterMetaType<mode_info>();
|
qRegisterMetaType<mode_info>();
|
||||||
|
qRegisterMetaType<mode_kind>();
|
||||||
qRegisterMetaType<audioPacket>();
|
qRegisterMetaType<audioPacket>();
|
||||||
qRegisterMetaType <audioSetup>();
|
qRegisterMetaType <audioSetup>();
|
||||||
qRegisterMetaType <SERVERCONFIG>();
|
qRegisterMetaType <SERVERCONFIG>();
|
||||||
|
@ -283,6 +284,7 @@ void wfmain::rigConnections()
|
||||||
connect(this, SIGNAL(scopeDisplayEnable()), rig, SLOT(enableSpectrumDisplay()));
|
connect(this, SIGNAL(scopeDisplayEnable()), rig, SLOT(enableSpectrumDisplay()));
|
||||||
connect(rig, SIGNAL(haveMode(unsigned char, unsigned char)), this, SLOT(receiveMode(unsigned char, unsigned char)));
|
connect(rig, SIGNAL(haveMode(unsigned char, unsigned char)), this, SLOT(receiveMode(unsigned char, unsigned char)));
|
||||||
connect(rig, SIGNAL(haveDataMode(bool)), this, SLOT(receiveDataModeStatus(bool)));
|
connect(rig, SIGNAL(haveDataMode(bool)), this, SLOT(receiveDataModeStatus(bool)));
|
||||||
|
connect(rig, SIGNAL(havePassband(quint8)), this, SLOT(receivePassband(quint8)));
|
||||||
|
|
||||||
connect(rpt, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
|
connect(rpt, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
|
||||||
connect(rpt, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
|
connect(rpt, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
|
||||||
|
@ -302,6 +304,7 @@ void wfmain::rigConnections()
|
||||||
|
|
||||||
|
|
||||||
connect(this, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
|
connect(this, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode()));
|
||||||
|
connect(this, SIGNAL(getPassband()), rig, SLOT(getPassband()));
|
||||||
connect(this, SIGNAL(getTone()), rig, SLOT(getTone()));
|
connect(this, SIGNAL(getTone()), rig, SLOT(getTone()));
|
||||||
connect(this, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
|
connect(this, SIGNAL(getTSQL()), rig, SLOT(getTSQL()));
|
||||||
connect(this, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode()));
|
connect(this, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode()));
|
||||||
|
@ -676,10 +679,16 @@ void wfmain::setupPlots()
|
||||||
|
|
||||||
wf = ui->waterfall;
|
wf = ui->waterfall;
|
||||||
|
|
||||||
|
passbandIndicator = new QCPItemRect(plot);
|
||||||
|
passbandIndicator->setAntialiased(true);
|
||||||
|
passbandIndicator->setPen(QPen(Qt::red));
|
||||||
|
passbandIndicator->setBrush(QBrush(Qt::red));
|
||||||
|
|
||||||
freqIndicatorLine = new QCPItemLine(plot);
|
freqIndicatorLine = new QCPItemLine(plot);
|
||||||
freqIndicatorLine->setAntialiased(true);
|
freqIndicatorLine->setAntialiased(true);
|
||||||
freqIndicatorLine->setPen(QPen(Qt::blue));
|
freqIndicatorLine->setPen(QPen(Qt::blue));
|
||||||
|
|
||||||
|
|
||||||
ui->plot->addGraph(); // primary
|
ui->plot->addGraph(); // primary
|
||||||
ui->plot->addGraph(0, 0); // secondary, peaks, same axis as first.
|
ui->plot->addGraph(0, 0); // secondary, peaks, same axis as first.
|
||||||
ui->plot->addLayer( "Top Layer", ui->plot->layer("main"));
|
ui->plot->addLayer( "Top Layer", ui->plot->layer("main"));
|
||||||
|
@ -704,8 +713,11 @@ void wfmain::setupPlots()
|
||||||
plot->graph(1)->setPen(QPen(color.lighter(200)));
|
plot->graph(1)->setPen(QPen(color.lighter(200)));
|
||||||
plot->graph(1)->setBrush(QBrush(color));
|
plot->graph(1)->setBrush(QBrush(color));
|
||||||
|
|
||||||
freqIndicatorLine->start->setCoords(0.5,0);
|
freqIndicatorLine->start->setCoords(0.5, 0);
|
||||||
freqIndicatorLine->end->setCoords(0.5,160);
|
freqIndicatorLine->end->setCoords(0.5, 160);
|
||||||
|
|
||||||
|
passbandIndicator->topLeft->setCoords(0.5, 0);
|
||||||
|
passbandIndicator->bottomRight->setCoords(0.5, 160);
|
||||||
|
|
||||||
// Plot user interaction
|
// Plot user interaction
|
||||||
connect(plot, SIGNAL(mouseDoubleClick(QMouseEvent*)), this, SLOT(handlePlotDoubleClick(QMouseEvent*)));
|
connect(plot, SIGNAL(mouseDoubleClick(QMouseEvent*)), this, SLOT(handlePlotDoubleClick(QMouseEvent*)));
|
||||||
|
@ -2982,6 +2994,9 @@ void wfmain::doCmd(cmds cmd)
|
||||||
case cmdGetDuplexMode:
|
case cmdGetDuplexMode:
|
||||||
emit getDuplexMode();
|
emit getDuplexMode();
|
||||||
break;
|
break;
|
||||||
|
case cmdGetPassband:
|
||||||
|
emit getPassband();
|
||||||
|
break;
|
||||||
case cmdGetTone:
|
case cmdGetTone:
|
||||||
emit getTone();
|
emit getTone();
|
||||||
break;
|
break;
|
||||||
|
@ -3576,6 +3591,9 @@ void wfmain::initPeriodicCommands()
|
||||||
insertSlowPeriodicCommand(cmdGetAntenna, 128);
|
insertSlowPeriodicCommand(cmdGetAntenna, 128);
|
||||||
}
|
}
|
||||||
insertSlowPeriodicCommand(cmdGetDuplexMode, 128);
|
insertSlowPeriodicCommand(cmdGetDuplexMode, 128);
|
||||||
|
|
||||||
|
// Get passband
|
||||||
|
insertPeriodicCommand(cmdGetPassband, 128);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wfmain::insertPeriodicCommand(cmds cmd, unsigned char priority)
|
void wfmain::insertPeriodicCommand(cmds cmd, unsigned char priority)
|
||||||
|
@ -3750,6 +3768,20 @@ void wfmain::receiveSpectrumData(QByteArray spectrum, double startFreq, double e
|
||||||
{
|
{
|
||||||
freqIndicatorLine->start->setCoords(freq.MHzDouble,0);
|
freqIndicatorLine->start->setCoords(freq.MHzDouble,0);
|
||||||
freqIndicatorLine->end->setCoords(freq.MHzDouble,rigCaps.spectAmpMax);
|
freqIndicatorLine->end->setCoords(freq.MHzDouble,rigCaps.spectAmpMax);
|
||||||
|
|
||||||
|
if (currentModeIndex == modeCW || currentModeIndex == modeRTTY || currentModeIndex == modeAM) {
|
||||||
|
passbandIndicator->topLeft->setCoords(freq.MHzDouble - (passBand/2), 0);
|
||||||
|
passbandIndicator->bottomRight->setCoords(freq.MHzDouble + (passBand/2), rigCaps.spectAmpMax);
|
||||||
|
}
|
||||||
|
else if (currentModeIndex == modeLSB) {
|
||||||
|
passbandIndicator->topLeft->setCoords(freq.MHzDouble - passBand - 0.0001, 0);
|
||||||
|
passbandIndicator->bottomRight->setCoords(freq.MHzDouble - 0.0001, rigCaps.spectAmpMax);
|
||||||
|
}
|
||||||
|
else if (currentModeIndex == modeUSB) {
|
||||||
|
passbandIndicator->topLeft->setCoords(freq.MHzDouble + 0.0001, 0);
|
||||||
|
passbandIndicator->bottomRight->setCoords(freq.MHzDouble + 0.0001 + passBand, rigCaps.spectAmpMax);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(underlayMode == underlayPeakHold)
|
if(underlayMode == underlayPeakHold)
|
||||||
|
@ -5259,6 +5291,24 @@ void wfmain::receiveLANGain(unsigned char level)
|
||||||
processModLevel(inputLAN, level);
|
processModLevel(inputLAN, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wfmain::receivePassband(quint8 pass)
|
||||||
|
{
|
||||||
|
int calc;
|
||||||
|
if (currentModeIndex == modeAM) {
|
||||||
|
calc = 200 + (pass * 200);
|
||||||
|
}
|
||||||
|
else if (pass <= 10)
|
||||||
|
{
|
||||||
|
calc = 50 + (pass * 50);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
calc = 600 + ((pass - 10) * 100);
|
||||||
|
}
|
||||||
|
passBand = (double)(calc / 1000000.0);
|
||||||
|
|
||||||
|
qInfo() << "Got Passband" << passBand << "(" << pass << ")";
|
||||||
|
}
|
||||||
|
|
||||||
void wfmain::receiveMeter(meterKind inMeter, unsigned char level)
|
void wfmain::receiveMeter(meterKind inMeter, unsigned char level)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -6562,6 +6612,8 @@ void wfmain::useColorPreset(colorPrefsType *cp)
|
||||||
plot->yAxis->setTickPen(cp->axisColor);
|
plot->yAxis->setTickPen(cp->axisColor);
|
||||||
|
|
||||||
freqIndicatorLine->setPen(QPen(cp->tuningLine));
|
freqIndicatorLine->setPen(QPen(cp->tuningLine));
|
||||||
|
//passbandIndicator->setPen(QPen(cp->tuningLine));
|
||||||
|
//passbandIndicator->setBrush(QBrush(cp->tuningLine));
|
||||||
|
|
||||||
plot->graph(0)->setPen(QPen(cp->spectrumLine));
|
plot->graph(0)->setPen(QPen(cp->spectrumLine));
|
||||||
plot->graph(0)->setBrush(QBrush(cp->spectrumFill));
|
plot->graph(0)->setBrush(QBrush(cp->spectrumFill));
|
||||||
|
|
12
wfmain.h
12
wfmain.h
|
@ -75,7 +75,7 @@ signals:
|
||||||
void setRigID(unsigned char rigID);
|
void setRigID(unsigned char rigID);
|
||||||
void setRTSforPTT(bool enabled);
|
void setRTSforPTT(bool enabled);
|
||||||
|
|
||||||
// Power
|
|
||||||
void sendPowerOn();
|
void sendPowerOn();
|
||||||
void sendPowerOff();
|
void sendPowerOff();
|
||||||
|
|
||||||
|
@ -98,6 +98,7 @@ signals:
|
||||||
|
|
||||||
// Repeater:
|
// Repeater:
|
||||||
void getDuplexMode();
|
void getDuplexMode();
|
||||||
|
void getPassband();
|
||||||
void getTone();
|
void getTone();
|
||||||
void getTSQL();
|
void getTSQL();
|
||||||
void getDTCS();
|
void getDTCS();
|
||||||
|
@ -239,7 +240,7 @@ private slots:
|
||||||
void receiveRITValue(int ritValHz);
|
void receiveRITValue(int ritValHz);
|
||||||
void receiveModInput(rigInput input, bool dataOn);
|
void receiveModInput(rigInput input, bool dataOn);
|
||||||
//void receiveDuplexMode(duplexMode dm);
|
//void receiveDuplexMode(duplexMode dm);
|
||||||
|
void receivePassband(quint8 pass);
|
||||||
|
|
||||||
|
|
||||||
// Levels:
|
// Levels:
|
||||||
|
@ -665,6 +666,7 @@ private:
|
||||||
QCustomPlot *plot; // line plot
|
QCustomPlot *plot; // line plot
|
||||||
QCustomPlot *wf; // waterfall image
|
QCustomPlot *wf; // waterfall image
|
||||||
QCPItemLine * freqIndicatorLine;
|
QCPItemLine * freqIndicatorLine;
|
||||||
|
QCPItemRect* passbandIndicator;
|
||||||
void setAppTheme(bool isCustom);
|
void setAppTheme(bool isCustom);
|
||||||
void prepareWf();
|
void prepareWf();
|
||||||
void prepareWf(unsigned int wfLength);
|
void prepareWf(unsigned int wfLength);
|
||||||
|
@ -779,6 +781,7 @@ private:
|
||||||
double wfCeiling = 160;
|
double wfCeiling = 160;
|
||||||
double oldPlotFloor = -1;
|
double oldPlotFloor = -1;
|
||||||
double oldPlotCeiling = 999;
|
double oldPlotCeiling = 999;
|
||||||
|
double passBand = 0.0;
|
||||||
|
|
||||||
QVector <QByteArray> wfimage;
|
QVector <QByteArray> wfimage;
|
||||||
unsigned int wfLengthMax;
|
unsigned int wfLengthMax;
|
||||||
|
@ -800,7 +803,7 @@ private:
|
||||||
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
|
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
|
||||||
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
|
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
|
||||||
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner,
|
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner,
|
||||||
cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus,
|
cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus, cmdGetPassband,
|
||||||
cmdSetATU, cmdStartATU, cmdGetSpectrumMode,
|
cmdSetATU, cmdStartATU, cmdGetSpectrumMode,
|
||||||
cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,
|
cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,
|
||||||
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel,
|
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel,
|
||||||
|
@ -999,7 +1002,7 @@ private:
|
||||||
udpServer* udp = Q_NULLPTR;
|
udpServer* udp = Q_NULLPTR;
|
||||||
rigCtlD* rigCtl = Q_NULLPTR;
|
rigCtlD* rigCtl = Q_NULLPTR;
|
||||||
QThread* serverThread = Q_NULLPTR;
|
QThread* serverThread = Q_NULLPTR;
|
||||||
|
|
||||||
void bandStackBtnClick();
|
void bandStackBtnClick();
|
||||||
bool waitingForBandStackRtn;
|
bool waitingForBandStackRtn;
|
||||||
char bandStkBand;
|
char bandStkBand;
|
||||||
|
@ -1043,6 +1046,7 @@ Q_DECLARE_METATYPE(struct networkAudioLevels)
|
||||||
Q_DECLARE_METATYPE(enum rigInput)
|
Q_DECLARE_METATYPE(enum rigInput)
|
||||||
Q_DECLARE_METATYPE(enum meterKind)
|
Q_DECLARE_METATYPE(enum meterKind)
|
||||||
Q_DECLARE_METATYPE(enum spectrumMode)
|
Q_DECLARE_METATYPE(enum spectrumMode)
|
||||||
|
Q_DECLARE_METATYPE(enum mode_kind)
|
||||||
Q_DECLARE_METATYPE(QList<radio_cap_packet>)
|
Q_DECLARE_METATYPE(QList<radio_cap_packet>)
|
||||||
Q_DECLARE_METATYPE(rigstate*)
|
Q_DECLARE_METATYPE(rigstate*)
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue