Merge branch 'master' into pbt-fixes

half-duplex
Phil Taylor 2023-01-25 11:42:13 +00:00
commit 5483732766
4 zmienionych plików z 87 dodań i 30 usunięć

Wyświetl plik

@ -1,3 +1,16 @@
commit d53c9b028e1e962b80334bbeaac794d4572d9939
Author: Elliott Liggett <kilocharlie8@gmail.com>
Date: Tue Jan 24 10:37:26 2023 -0800
Added a rapidPollCmdQueue for things we need to poll rapidly on not-s-
meter-intervals. Moved command types to wfviewtypes.h.
commit 2df82d4f922fcebd256816d41839977840d08e5b
Author: Roeland Jansen <roeland.jansen69@gmail.com>
Date: Tue Jan 24 17:22:34 2023 +0100
bumped to v1.58
commit 152f71c6cf2aeb811da7ff795cd3cfd05c8cfd20
Merge: 2ada127 4137fce
Author: Phil Taylor <phil@m0vse.uk>

Wyświetl plik

@ -3997,6 +3997,11 @@ void wfmain::sendRadioCommandLoop()
cmds sCmd = slowPollCmdQueue[(slowCmdNum++)%nCmds];
doCmd(sCmd);
}
} else if ((!rapidPollCmdQueue.empty()) && rapidPollCmdQueueEnabled)
{
int nrCmds = (int)rapidPollCmdQueue.size();
cmds rCmd = rapidPollCmdQueue[(rapidCmdNum++)%nrCmds];
doCmd(rCmd);
}
} else {
// odd-number ticks:
@ -4487,12 +4492,20 @@ void wfmain::initPeriodicCommands()
}
insertSlowPeriodicCommand(cmdGetDuplexMode, 128);
rapidPollCmdQueueEnabled = false;
rapidPollCmdQueue.clear();
if (rigCaps.hasSpectrum) {
// Get passband
insertPeriodicCommand(cmdGetPassband, 128);
insertPeriodicCommand(cmdGetTPBFInner, 128);
insertPeriodicCommand(cmdGetTPBFOuter, 128);
insertPeriodicRapidCmd(cmdGetPassband);
insertPeriodicRapidCmd(cmdGetTPBFInner);
insertPeriodicRapidCmd(cmdGetTPBFOuter);
}
rapidPollCmdQueueEnabled = true;
}
void wfmain::insertPeriodicRapidCmd(cmds cmd)
{
rapidPollCmdQueue.push_back(cmd);
}
void wfmain::insertPeriodicCommand(cmds cmd, unsigned char priority=100)
@ -4508,6 +4521,12 @@ void wfmain::insertPeriodicCommand(cmds cmd, unsigned char priority=100)
}
}
void wfmain::insertPeriodicRapidCmdUnique(cmds cmd)
{
removePeriodicRapidCmd(cmd);
rapidPollCmdQueue.push_back(cmd);
}
void wfmain::insertPeriodicCommandUnique(cmds cmd)
{
// Use this function to insert a non-duplicate command
@ -4518,6 +4537,20 @@ void wfmain::insertPeriodicCommandUnique(cmds cmd)
periodicCmdQueue.push_front(cmd);
}
void wfmain::removePeriodicRapidCmd(cmds cmd)
{
while(true)
{
auto it = std::find(this->rapidPollCmdQueue.begin(), this->rapidPollCmdQueue.end(), cmd);
if(it != rapidPollCmdQueue.end())
{
rapidPollCmdQueue.erase(it);
} else {
break;
}
}
}
void wfmain::removePeriodicCommand(cmds cmd)
{
while(true)
@ -7226,7 +7259,7 @@ void wfmain::on_wfInterpolateChk_clicked(bool checked)
prefs.wfInterpolate = checked;
}
wfmain::cmds wfmain::meterKindToMeterCommand(meterKind m)
cmds wfmain::meterKindToMeterCommand(meterKind m)
{
cmds c;
switch(m)

Wyświetl plik

@ -829,7 +829,8 @@ private:
QTimer * delayedCommand;
QTimer * pttTimer;
uint16_t loopTickCounter;
uint16_t slowCmdNum;
uint16_t slowCmdNum=0;
uint16_t rapidCmdNum=0;
void setupPlots();
void makeRig();
@ -896,35 +897,15 @@ private:
unsigned char setModeVal=0;
unsigned char setFilterVal=0;
enum cmds {
cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdSetFreq, cmdGetMode, cmdSetMode,
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner,
cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus, cmdGetPassband, cmdSetPassband,
cmdGetCwPitch, cmdGetPskTone, cmdGetRttyMark, cmdSetCwPitch, cmdSetPskTone, cmdSetRttyMark,
cmdSetATU, cmdStartATU, cmdGetSpectrumMode,
cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,cmdPTTToggle,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel,
cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
cmdSetTime, cmdSetDate, cmdSetUTCOffset};
struct commandtype {
cmds cmd;
std::shared_ptr<void> data;
};
std::deque <commandtype> delayedCmdQue; // rapid que for commands to the radio
std::deque <commandtype> delayedCmdQue; // rapid commands from user interaction
std::deque <cmds> periodicCmdQueue; // rapid que for metering
std::deque <cmds> slowPollCmdQueue; // slow, regular checking for UI sync
std::deque <cmds> rapidPollCmdQueue; // rapid regular polling for non-meter actions
void doCmd(cmds cmd);
void doCmd(commandtype cmddata);
bool rapidPollCmdQueueEnabled = false;
void issueCmd(cmds cmd, freqt f);
void issueCmd(cmds cmd, mode_info m);
void issueCmd(cmds cmd, timekind t);
@ -1030,11 +1011,16 @@ private:
void changeModLabelAndSlider(rigInput source);
// Fast command queue:
void initPeriodicCommands();
// Fast command queue for S-Meter:
void insertPeriodicCommand(cmds cmd, unsigned char priority);
void insertPeriodicCommandUnique(cmds cmd);
void removePeriodicCommand(cmds cmd);
// Fast command queue for other functions:
void insertPeriodicRapidCmd(cmds cmd);
void insertPeriodicRapidCmdUnique(cmds cmd);
void removePeriodicRapidCmd(cmds cmd);
void insertSlowPeriodicCommand(cmds cmd, unsigned char priority);
void calculateTimingParameters();

Wyświetl plik

@ -5,6 +5,7 @@
#include <QString>
#include <QtGlobal>
#include <stdint.h>
#include <memory>
enum underlay_t { underlayNone, underlayPeakHold, underlayPeakBuffer, underlayAverageBuffer };
@ -82,6 +83,30 @@ struct timekind {
bool isMinus;
};
enum cmds {
cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdSetFreq, cmdGetMode, cmdSetMode,
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner,
cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus, cmdGetPassband, cmdSetPassband,
cmdGetCwPitch, cmdGetPskTone, cmdGetRttyMark, cmdSetCwPitch, cmdSetPskTone, cmdSetRttyMark,
cmdSetATU, cmdStartATU, cmdGetSpectrumMode,
cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,cmdPTTToggle,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel,
cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW,
cmdSetTime, cmdSetDate, cmdSetUTCOffset
};
struct commandtype {
cmds cmd;
std::shared_ptr<void> data;
};
struct errorType {
errorType() : alert(false) {};
errorType(bool alert, QString message) : alert(alert), message(message) {};