First look at a passband indicator

knobtest
Phil Taylor 2022-09-26 01:44:49 +01:00
rodzic 70101487a3
commit d8e244f33a
4 zmienionych plików z 97 dodań i 6 usunięć

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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