From fd26acca68e103349cc28a0fa718fffad7d5f948 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 8 May 2021 00:37:30 +0200 Subject: [PATCH 1/3] don't resample when there's only one service --- owrx/service/__init__.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/owrx/service/__init__.py b/owrx/service/__init__.py index eac8c254..a4062caf 100644 --- a/owrx/service/__init__.py +++ b/owrx/service/__init__.py @@ -193,21 +193,25 @@ class ServiceHandler(SdrSourceEventClient): self.services.append(self.setupService(dial["mode"], dial["frequency"], self.source)) else: for group in groups: - cf = self.get_center_frequency(group) - bw = self.get_bandwidth(group) - logger.debug("group center frequency: {0}, bandwidth: {1}".format(cf, bw)) - resampler_props = PropertyLayer() - resampler_props["center_freq"] = cf - resampler_props["samp_rate"] = bw - resampler = Resampler(resampler_props, self.source) - resampler.start() + if len(group) > 1: + cf = self.get_center_frequency(group) + bw = self.get_bandwidth(group) + logger.debug("group center frequency: {0}, bandwidth: {1}".format(cf, bw)) + resampler_props = PropertyLayer() + resampler_props["center_freq"] = cf + resampler_props["samp_rate"] = bw + resampler = Resampler(resampler_props, self.source) + resampler.start() - for dial in group: - self.services.append(self.setupService(dial["mode"], dial["frequency"], resampler)) + for dial in group: + self.services.append(self.setupService(dial["mode"], dial["frequency"], resampler)) - # resampler goes in after the services since it must not be shutdown as long as the services are - # still running - self.services.append(resampler) + # resampler goes in after the services since it must not be shutdown as long as the services are + # still running + self.services.append(resampler) + else: + dial = group[0] + self.services.append(self.setupService(dial["mode"], dial["frequency"], self.source)) def get_min_max(self, group): frequencies = sorted(group, key=lambda f: f["frequency"]) From 093ad6cd0da1624b5cb2166262d4def703a62c02 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 8 May 2021 00:38:00 +0200 Subject: [PATCH 2/3] improve oversampling for resampling --- owrx/service/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owrx/service/__init__.py b/owrx/service/__init__.py index a4062caf..00afe186 100644 --- a/owrx/service/__init__.py +++ b/owrx/service/__init__.py @@ -228,7 +228,7 @@ class ServiceHandler(SdrSourceEventClient): def get_bandwidth(self, group): minFreq, maxFreq = self.get_min_max(group) # minimum bandwidth for a resampler: 25kHz - return max(maxFreq - minFreq, 25000) + return max((maxFreq - minFreq) * 1.15, 25000) def optimizeResampling(self, freqs, bandwidth): freqs = sorted(freqs, key=lambda f: f["frequency"]) From dc848a7006273ab4c9abd05c9aa4c5c6659dbda2 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 8 May 2021 00:59:57 +0200 Subject: [PATCH 3/3] fix bandwidth calculation for single-service groups --- owrx/service/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/owrx/service/__init__.py b/owrx/service/__init__.py index 00afe186..2206924c 100644 --- a/owrx/service/__init__.py +++ b/owrx/service/__init__.py @@ -254,7 +254,10 @@ class ServiceHandler(SdrSourceEventClient): groups.append([f for f in freqs if previous < f["frequency"]]) def get_total_bandwidth(group): - return bandwidth + len(group) * self.get_bandwidth(group) + if len(group) > 1: + return bandwidth + len(group) * self.get_bandwidth(group) + else: + return bandwidth total_bandwidth = sum([get_total_bandwidth(group) for group in groups]) return {