dynamic profiles

This commit is contained in:
Jakob Ketterl 2020-04-23 23:30:56 +02:00
parent 623f21f769
commit 4e67be8a3c
3 changed files with 22 additions and 5 deletions

View File

@ -301,6 +301,9 @@ wsjt_decoding_depth = 3
# jt65 seems to be somewhat prone to erroneous decodes, this setting handles that to some extent # jt65 seems to be somewhat prone to erroneous decodes, this setting handles that to some extent
wsjt_decoding_depths = {"jt65": 1} wsjt_decoding_depths = {"jt65": 1}
# JS8 comes in different speeds: normal, slow, fast, turbo. This setting controls which ones are enabled.
js8_enabled_profiles = ["normal", "slow"]
temporary_directory = "/tmp" temporary_directory = "/tmp"
services_enabled = False services_enabled = False

View File

@ -30,7 +30,7 @@ from functools import partial
from owrx.kiss import KissClient, DirewolfConfig from owrx.kiss import KissClient, DirewolfConfig
from owrx.wsjt import Ft8Profile, WsprProfile, Jt9Profile, Jt65Profile, Ft4Profile from owrx.wsjt import Ft8Profile, WsprProfile, Jt9Profile, Jt65Profile, Ft4Profile
from owrx.js8 import Js8NormalProfile, Js8SlowProfile, Js8FastProfile, Js8TurboProfile from owrx.js8 import Js8Profiles
from owrx.audio import AudioChopper from owrx.audio import AudioChopper
import logging import logging
@ -464,7 +464,7 @@ class dsp(object):
elif smd == "ft4": elif smd == "ft4":
chopper_profiles = [Ft4Profile()] chopper_profiles = [Ft4Profile()]
elif smd == "js8": elif smd == "js8":
chopper_profiles = [Js8NormalProfile(), Js8SlowProfile(), Js8FastProfile(), Js8TurboProfile()] chopper_profiles = Js8Profiles.getEnabledProfiles()
output_name = "js8_demod" output_name = "js8_demod"
if chopper_profiles is not None: if chopper_profiles is not None:
chopper = AudioChopper(self, self.secondary_process_demod.stdout, *chopper_profiles) chopper = AudioChopper(self, self.secondary_process_demod.stdout, *chopper_profiles)

View File

@ -3,9 +3,10 @@ from .parser import Parser
import re import re
from js8py import Js8 from js8py import Js8
from js8py.frames import Js8FrameHeartbeat, Js8FrameCompound from js8py.frames import Js8FrameHeartbeat, Js8FrameCompound
from owrx.map import Map, LocatorLocation from .map import Map, LocatorLocation
from owrx.pskreporter import PskReporter from .pskreporter import PskReporter
from owrx.metrics import Metrics, CounterMetric from .metrics import Metrics, CounterMetric
from .config import Config
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
import logging import logging
@ -13,6 +14,19 @@ import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Js8Profiles(object):
@staticmethod
def getEnabledProfiles():
config = Config.get()
profiles = config["js8_enabled_profiles"] if "js8_enabled_profiles" in config else []
return [Js8Profiles.loadProfile(p) for p in profiles]
@staticmethod
def loadProfile(profileName):
className = "Js8{0}Profile".format(profileName[0].upper() + profileName[1:].lower())
return globals()[className]()
class Js8Profile(AudioChopperProfile, metaclass=ABCMeta): class Js8Profile(AudioChopperProfile, metaclass=ABCMeta):
def getFileTimestampFormat(self): def getFileTimestampFormat(self):
return "%y%m%d_%H%M%S" return "%y%m%d_%H%M%S"