diff --git a/config_webrx.py b/config_webrx.py index 46efb19..7ee98ee 100644 --- a/config_webrx.py +++ b/config_webrx.py @@ -318,8 +318,8 @@ fst4_enabled_intervals = [15, 30] fst4w_enabled_intervals = [120, 300] # Q65 allows many combinations of intervals and submodes. This setting determines which combinations will be decoded. -# Please use python tuples of (interval: int, mode: str) to specify the combinations. For example: -q65_enabled_combinations = [(30, "A"), (120, "E"), (60, "C")] +# Please use the mode letter followed by the decode interval in seconds to specify the combinations. For example: +q65_enabled_combinations = ["A30", "E120", "C60"] # JS8 comes in different speeds: normal, slow, fast, turbo. This setting controls which ones are enabled. js8_enabled_profiles = ["normal", "slow"] diff --git a/owrx/wsjt.py b/owrx/wsjt.py index 60a5dc1..e1ab870 100644 --- a/owrx/wsjt.py +++ b/owrx/wsjt.py @@ -171,7 +171,18 @@ class Q65Profile(WsjtProfile): def getEnabledProfiles(): config = Config.get() profiles = config["q65_enabled_combinations"] if "q65_enabled_combinations" in config else [] - return [Q65Profile(i, Q65Mode[m]) for i, m in profiles if i in Fst4wProfile.availableIntervals] + + def buildProfile(modestring): + mode = Q65Mode[modestring[0]] + interval = int(modestring[1:]) + if interval not in Q65Profile.availableIntervals: + logger.warning("%i is not a valid Q65 interval; ignoring mode \"%s\"", interval, modestring) + return None + return Q65Profile(interval, mode) + + mapped = [buildProfile(m) for m in profiles] + logger.debug(mapped) + return [p for p in mapped if p is not None] class WsjtParser(Parser): @@ -241,9 +252,9 @@ class Decoder(ABC): def parse_timestamp(self, instring): dateformat = self.profile.getTimestampFormat() - remain = instring[len(dateformat) + 1:] + remain = instring[len(dateformat) + 1 :] try: - ts = datetime.strptime(instring[0: len(dateformat)], dateformat) + ts = datetime.strptime(instring[0 : len(dateformat)], dateformat) return remain, int( datetime.combine(datetime.utcnow().date(), ts.time()).replace(tzinfo=timezone.utc).timestamp() * 1000 )