diff --git a/csdr/chain/toolbox.py b/csdr/chain/toolbox.py index 23e27530..bc15200e 100644 --- a/csdr/chain/toolbox.py +++ b/csdr/chain/toolbox.py @@ -1,4 +1,4 @@ -from csdr.chain.demodulator import ServiceDemodulator, DialFrequencyReceiver +from csdr.chain.demodulator import ServiceDemodulator, DialFrequencyReceiver, FixedIfSampleRateChain from csdr.module.toolbox import Rtl433Module, MultimonModule, DumpHfdlModule, DumpVdl2Module from pycsdr.modules import FmDemod, AudioResampler, Convert, Agc, Squelch from pycsdr.types import Format @@ -121,9 +121,9 @@ class HfdlDemodulator(ServiceDemodulator, DialFrequencyReceiver): self.parser.setDialFrequency(frequency) -class Vdl2Demodulator(ServiceDemodulator, DialFrequencyReceiver): +class Vdl2Demodulator(ServiceDemodulator, FixedIfSampleRateChain, DialFrequencyReceiver): def __init__(self, service: bool = False): - self.sampleRate = 210000 + self.sampleRate = 1050000 #self.parser = Vdl2Parser(service=service) workers = [ Agc(Format.COMPLEX_FLOAT), @@ -133,9 +133,13 @@ class Vdl2Demodulator(ServiceDemodulator, DialFrequencyReceiver): # Connect all the workers super().__init__(workers) - def getFixedAudioRate(self) -> int: + def getFixedIfSampleRate(self) -> int: return self.sampleRate + def getFixedAudioRate(self) -> int: + # This is not really used + return 8000 + def supportsSquelch(self) -> bool: return False diff --git a/csdr/module/toolbox.py b/csdr/module/toolbox.py index 9e26015b..edd7e866 100644 --- a/csdr/module/toolbox.py +++ b/csdr/module/toolbox.py @@ -62,7 +62,7 @@ class DumpHfdlModule(PopenModule): class DumpVdl2Module(PopenModule): - def __init__(self, sampleRate: int = 210000, jsonOutput: bool = False): + def __init__(self, sampleRate: int = 1050000, jsonOutput: bool = False): self.sampleRate = sampleRate self.jsonOutput = jsonOutput super().__init__() diff --git a/owrx/feature.py b/owrx/feature.py index e7f59571..5e3aae04 100644 --- a/owrx/feature.py +++ b/owrx/feature.py @@ -87,6 +87,7 @@ class FeatureDetector(object): "selcall": ["multimon"], "ism": ["rtl433"], "hfdl": ["dumphfdl"], + "vdl2": ["dumpvdl2"], "js8call": ["js8", "js8py"], "drm": ["dream"], "png": ["imagemagick"], @@ -605,3 +606,11 @@ class FeatureDetector(object): """ return self.command_is_runnable("dumphfdl --help") + def has_dumpvdl2(self): + """ + OpenWebRX uses the [dumphfdl](https://github.com/szpajder/dumpvdl2) tool to decode VDL2 + aircraft communications. Dumpvdl2 is not yet available as a package and thus you will have + to compile it from source. + """ + return self.command_is_runnable("dumpvdl2 --help") +