From dc327a2855b31e6f3c4aa42b0ed016b88e04a002 Mon Sep 17 00:00:00 2001 From: Denny Sheirer Date: Sat, 17 Dec 2022 09:28:29 -0500 Subject: [PATCH] #1362 Updates heterodyne channelizer with alternate sorted set implementation to resolve issue when determining if the tuner can tune a requested channel. (#1363) Co-authored-by: Dennis Sheirer --- .../manager/CenterFrequencyCalculator.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/dsheirer/source/tuner/manager/CenterFrequencyCalculator.java b/src/main/java/io/github/dsheirer/source/tuner/manager/CenterFrequencyCalculator.java index 56e31c9b..e2241090 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/manager/CenterFrequencyCalculator.java +++ b/src/main/java/io/github/dsheirer/source/tuner/manager/CenterFrequencyCalculator.java @@ -20,15 +20,17 @@ package io.github.dsheirer.source.tuner.manager; import io.github.dsheirer.source.tuner.TunerController; import io.github.dsheirer.source.tuner.channel.TunerChannel; - import java.util.SortedSet; import java.util.TreeSet; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Calculates tuner center frequency for a set of tuner channels. */ public class CenterFrequencyCalculator { + private static final Logger mLog = LoggerFactory.getLogger(CenterFrequencyCalculator.class); public static final long INVALID_FREQUENCY = -1; /** @@ -145,7 +147,20 @@ public class CenterFrequencyCalculator } else { - SortedSet allChannels = new TreeSet<>(channels); + SortedSet allChannels = new TreeSet<>(); + + for(TunerChannel tunerChannel: allChannels) + { + if(tunerChannel != null) + { + allChannels.add(tunerChannel); + } + else + { + mLog.error("Null tuner channel encountered - continuing"); + } + } + allChannels.add(channel); //If the bandwidth of the channel set is less than or equal to the tuner's usable bandwidth, then