From 166905ee76f1bed50df2caf4c47b129e5f07308e Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Sun, 29 Jan 2023 13:09:04 +0000 Subject: [PATCH] Remove passband/PBT commands for FM --- wfmain.cpp | 42 +++++++++++++++++++++++++++++------------- wfmain.h | 1 + 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/wfmain.cpp b/wfmain.cpp index 1b869e2..1d9dbf3 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -4633,13 +4633,6 @@ void wfmain::initPeriodicCommands() rapidPollCmdQueueEnabled = false; rapidPollCmdQueue.clear(); - if (rigCaps.hasSpectrum) { - // Get passband - - insertSlowPeriodicCommand(cmdGetPassband, 128); - insertSlowPeriodicCommand(cmdGetTPBFInner, 128); - insertSlowPeriodicCommand(cmdGetTPBFOuter, 128); - } rapidPollCmdQueueEnabled = true; } @@ -4680,7 +4673,9 @@ void wfmain::insertPeriodicCommandUnique(cmds cmd) void wfmain::removePeriodicRapidCmd(cmds cmd) { - rapidPollCmdQueue.erase(std::remove_if(rapidPollCmdQueue.begin(), rapidPollCmdQueue.end(), [cmd](const cmds& c) { return (c == cmd); }), rapidPollCmdQueue.end()); + qDebug() << "Removing" << cmd << "From periodic queue, len" << slowPollCmdQueue.size(); + periodicCmdQueue.erase(std::remove_if(periodicCmdQueue.begin(), periodicCmdQueue.end(), [cmd](const cmds& c) { return (c == cmd); }), periodicCmdQueue.end()); + qDebug() << "Removed" << cmd << "From periodic queue, len" << slowPollCmdQueue.size(); /* while(true) @@ -4699,7 +4694,9 @@ void wfmain::removePeriodicRapidCmd(cmds cmd) void wfmain::removePeriodicCommand(cmds cmd) { + qDebug() << "Removing" << cmd << "From periodic queue, len" << slowPollCmdQueue.size(); periodicCmdQueue.erase(std::remove_if(periodicCmdQueue.begin(), periodicCmdQueue.end(), [cmd](const cmds& c) { return (c == cmd); }), periodicCmdQueue.end()); + qDebug() << "Removed" << cmd << "From periodic queue, len" << slowPollCmdQueue.size(); /* while (true) { @@ -4720,12 +4717,21 @@ void wfmain::insertSlowPeriodicCommand(cmds cmd, unsigned char priority=100) // TODO: meaningful priority // These commands are run every 20 "ticks" of the primary radio command loop // Basically 20 times less often than the standard periodic command + qDebug() << "Inserting" << cmd << "To slow queue, priority" << priority << "len" << slowPollCmdQueue.size(); if(priority < 10) { slowPollCmdQueue.push_front(cmd); } else { slowPollCmdQueue.push_back(cmd); } + qDebug() << "Inserted" << cmd << "To slow queue, priority" << priority << "len" << slowPollCmdQueue.size(); +} + +void wfmain::removeSlowPeriodicCommand(cmds cmd) +{ + qDebug() << "Removing" << cmd << "From slow queue, len" << slowPollCmdQueue.size(); + slowPollCmdQueue.erase(std::remove_if(slowPollCmdQueue.begin(), slowPollCmdQueue.end(), [cmd](const cmds& c) { return (c == cmd); }), slowPollCmdQueue.end()); + qDebug() << "Removed" << cmd << "From slow queue, len" << slowPollCmdQueue.size(); } void wfmain::receiveFreq(freqt freqStruct) @@ -5430,6 +5436,10 @@ void wfmain::receiveMode(unsigned char mode, unsigned char filter) { removePeriodicRapidCmd(cmdGetCwPitch); + removeSlowPeriodicCommand(cmdGetPassband); + removeSlowPeriodicCommand(cmdGetTPBFInner); + removeSlowPeriodicCommand(cmdGetTPBFOuter); + quint16 maxPassbandHz = 0; switch ((mode_kind)mode) { case modeFM: @@ -5445,6 +5455,7 @@ void wfmain::receiveMode(unsigned char mode, unsigned char filter) case modeCW: case modeCW_R: insertPeriodicRapidCmdUnique(cmdGetCwPitch); + issueDelayedCommandUnique(cmdGetCwPitch); maxPassbandHz = 3600; break; case modeAM: @@ -5497,11 +5508,16 @@ void wfmain::receiveMode(unsigned char mode, unsigned char filter) trxadj->setMaxPassband(maxPassbandHz); } - issueDelayedCommandUnique(cmdGetPassband); - issueDelayedCommandUnique(cmdGetCwPitch); - issueDelayedCommandUnique(cmdGetTPBFInner); - issueDelayedCommandUnique(cmdGetTPBFOuter); - + if (currentModeInfo.mk != modeFM) + { + insertSlowPeriodicCommand(cmdGetPassband, 128); + insertSlowPeriodicCommand(cmdGetTPBFInner, 128); + insertSlowPeriodicCommand(cmdGetTPBFOuter, 128); + issueDelayedCommandUnique(cmdGetPassband); + issueDelayedCommandUnique(cmdGetTPBFInner); + issueDelayedCommandUnique(cmdGetTPBFOuter); + } + // Note: we need to know if the DATA mode is active to reach mode-D // some kind of queued query: if (rigCaps.hasDataModes && rigCaps.hasTransmit) diff --git a/wfmain.h b/wfmain.h index cba2340..628732e 100644 --- a/wfmain.h +++ b/wfmain.h @@ -1038,6 +1038,7 @@ private: void insertSlowPeriodicCommand(cmds cmd, unsigned char priority); + void removeSlowPeriodicCommand(cmds cmd); void calculateTimingParameters(); void changePollTiming(int timing_ms, bool setUI=false);