Skip to content

Commit

Permalink
#1845 Updates polyphase tuner channel manager to avoid retuning for a…
Browse files Browse the repository at this point in the history
… new channel if all channels will continue to fit using the current center frequency (#1846)

Co-authored-by: Dennis Sheirer <dsheirer@github.com>
  • Loading branch information
DSheirer and Dennis Sheirer committed Feb 11, 2024
1 parent 7ea8cb6 commit 6532e33
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 44 deletions.
39 changes: 0 additions & 39 deletions src/main/java/io/github/dsheirer/source/tuner/TunerController.java
Original file line number Diff line number Diff line change
Expand Up @@ -647,45 +647,6 @@ public void receive(INativeBuffer nativeBuffer)
broadcast(nativeBuffer);
}

/**
* Indicates if the current center frequency and bandwidth is correct to source the tuner channel
*
* @param tunerChannel to test
* @return true if the current center frequency and bandwidth is correct for the channel
*/
public boolean isTunedFor(TunerChannel tunerChannel)
{
try
{
if(tunerChannel.getMinFrequency() < getMinTunedFrequency())
{
return false;
}

if(tunerChannel.getMaxFrequency() > getMaxTunedFrequency())
{
return false;
}

if(hasMiddleUnusableBandwidth())
{
long minAvoid = getFrequency() - getMiddleUnusableHalfBandwidth();
long maxAvoid = getFrequency() + getMiddleUnusableHalfBandwidth();

if(tunerChannel.overlaps(minAvoid, maxAvoid))
{
return false;
}
}
}
catch(SourceException se)
{
return false;
}

return true;
}

/**
* Indicates if the current center frequency and bandwidth is correct to source the tuner channel set
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,15 +195,14 @@ protected long getCenterFrequency(SortedSet<TunerChannel> channels, long current
throw new IllegalArgumentException("Channel set bandwidth is greater than tuner's available bandwidth");
}

long bestIntegralFrequency = getIntegralFrequency(channels);

//Strategy 1: reuse the current frequency if it's a good integral and the channels fit
if(isIntegralSpacing(currentCenterFrequency, bestIntegralFrequency) &&
isValidCenterFrequency(channels, currentCenterFrequency))
//Strategy 1: reuse the current frequency if the channels fit
if(isValidCenterFrequency(channels, currentCenterFrequency))
{
return currentCenterFrequency;
}

long bestIntegralFrequency = getIntegralFrequency(channels);

double usableHalfBandwidth = mTunerController.getUsableHalfBandwidth();

//Strategy 2: start by placing the center frequency exactly one channel width below the first channel frequency
Expand Down

0 comments on commit 6532e33

Please sign in to comment.