mirror of
https://github.com/jketterl/openwebrx.git
synced 2025-12-06 07:12:09 +01:00
32 lines
1 KiB
Python
32 lines
1 KiB
Python
from pycsdr.modules import ExecModule
|
|
from pycsdr.types import Format
|
|
from csdr.module import LineBasedModule
|
|
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class Dump1090Module(ExecModule):
|
|
def __init__(self):
|
|
super().__init__(
|
|
Format.COMPLEX_SHORT,
|
|
Format.CHAR,
|
|
["dump1090", "--ifile", "-", "--iformat", "SC16", "--raw"],
|
|
# send some data on decoder shutdown since the dump1090 internal reader locks up otherwise
|
|
# dump1090 reads chunks of 100ms, which equals to 240k samples at 2.4MS/s
|
|
# some extra should not hurt
|
|
flushSize=300000
|
|
)
|
|
|
|
|
|
class RawDeframer(LineBasedModule):
|
|
def process(self, line: bytes):
|
|
if line.startswith(b'*') and line.endswith(b';') and len(line) in [16, 30]:
|
|
return bytes.fromhex(line[1:-1].decode())
|
|
elif line == b"*0000;":
|
|
# heartbeat message. not a valid message, but known. do not log.
|
|
return
|
|
else:
|
|
logger.warning("invalid raw message: %s", line)
|