diff --git a/csdr/chain/multimon.py b/csdr/chain/multimon.py index 778cdda7..5029c763 100644 --- a/csdr/chain/multimon.py +++ b/csdr/chain/multimon.py @@ -46,10 +46,10 @@ class MultimonDemodulator(ServiceDemodulator, DialFrequencyReceiver): class PageDemodulator(MultimonDemodulator): - def __init__(self, filtering: bool = False, service: bool = False): + def __init__(self, service: bool = False): super().__init__( ["FLEX", "POCSAG512", "POCSAG1200", "POCSAG2400"], - PageParser(filtering=filtering, service=service) + PageParser(service=service) ) diff --git a/owrx/config/defaults.py b/owrx/config/defaults.py index 6b71ce02..089e0445 100644 --- a/owrx/config/defaults.py +++ b/owrx/config/defaults.py @@ -197,4 +197,5 @@ defaultConfig = PropertyLayer( # pskreporter_antenna_information=None, wsprnet_enabled=False, wsprnet_callsign="N0CALL", + paging_filter=True, ).readonly() diff --git a/owrx/controllers/settings/decoding.py b/owrx/controllers/settings/decoding.py index fb0e5424..beeee71f 100644 --- a/owrx/controllers/settings/decoding.py +++ b/owrx/controllers/settings/decoding.py @@ -57,6 +57,13 @@ class DecodingSettingsController(SettingsFormController): "Digimodes", NumberInput("digimodes_fft_size", "Digimodes FFT size", append="bins"), ), + Section( + "Paging", + CheckboxInput( + "paging_filter", + "Filter out empty, numeric, or unreadable pager messages", + ), + ), Section( "Decoding settings", NumberInput("decoding_queue_workers", "Number of decoding workers"), @@ -87,5 +94,6 @@ class DecodingSettingsController(SettingsFormController): [Option(v, "{}s".format(v)) for v in Fst4wProfile.availableIntervals], ), Q65ModeMatrix("q65_enabled_combinations", "Enabled Q65 Mode combinations"), + ), ] diff --git a/owrx/dsp.py b/owrx/dsp.py index 7a351da0..da881a3b 100644 --- a/owrx/dsp.py +++ b/owrx/dsp.py @@ -618,7 +618,7 @@ class DspManager(SdrSourceEventClient, ClientDemodulatorSecondaryDspEventClient) return PocsagDemodulator() elif mod == "page": from csdr.chain.multimon import PageDemodulator - return PageDemodulator(filtering = True) + return PageDemodulator() elif mod == "selcall": from csdr.chain.multimon import SelCallDemodulator return SelCallDemodulator() diff --git a/owrx/multimon.py b/owrx/multimon.py index 1e82cdb3..c9c34707 100644 --- a/owrx/multimon.py +++ b/owrx/multimon.py @@ -1,4 +1,5 @@ from owrx.storage import Storage +from owrx.config import Config from csdr.module import ThreadModule from pycsdr.types import Format from datetime import datetime @@ -145,9 +146,10 @@ class MultimonParser(ThreadModule): class PageParser(MultimonParser): - def __init__(self, filtering: bool = False, service: bool = False): + def __init__(self, service: bool = False): # When true, try filtering out unreadable messages - self.filtering = filtering + pm = Config.get() + self.filtering = "paging_filter" in pm and pm["paging_filter"] # Use these colors to mark messages by address self.colors = [ "#FFFFFF", "#999999", "#FF9999", "#FFCC99", "#FFFF99", "#CCFF99",