From b85d80112107aebed31cfd54e12fb51401e65451 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Wed, 30 Dec 2020 18:45:13 +0100 Subject: [PATCH] create separate subscription for bookmarks --- owrx/connection.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/owrx/connection.py b/owrx/connection.py index 3a26a39..6c6d458 100644 --- a/owrx/connection.py +++ b/owrx/connection.py @@ -132,7 +132,7 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient): self.dsp = None self.sdr = None - self.configSub = None + self.configSubs = [] self.connectionProperties = {} try: @@ -231,9 +231,8 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient): self.stopDsp() - if self.configSub is not None: - self.configSub.cancel() - self.configSub = None + while self.configSubs: + self.configSubs.pop().cancel() if self.sdr is not None: self.sdr.removeClient(self) @@ -260,25 +259,26 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient): config = configProps.__dict__() else: config = changes - if changes is None or "start_freq" in changes or "center_freq" in changes: + if changes is None or "start_freq" in changes or "center_freq" in changes: config["start_offset_freq"] = configProps["start_freq"] - configProps["center_freq"] if changes is None or "profile_id" in changes: config["sdr_id"] = self.sdr.getId() self.write_config(config) - # TODO make a separate subscription for this - if changes is None or "center_freq" in changes or "samp_rate" in changes: - cf = configProps["center_freq"] - srh = configProps["samp_rate"] / 2 - frequencyRange = (cf - srh, cf + srh) - self.write_dial_frequendies(Bandplan.getSharedInstance().collectDialFrequencies(frequencyRange)) - bookmarks = [b.__dict__() for b in Bookmarks.getSharedInstance().getBookmarks(frequencyRange)] - self.write_bookmarks(bookmarks) + def sendBookmarks(changes=None): + cf = configProps["center_freq"] + srh = configProps["samp_rate"] / 2 + frequencyRange = (cf - srh, cf + srh) + self.write_dial_frequencies(Bandplan.getSharedInstance().collectDialFrequencies(frequencyRange)) + bookmarks = [b.__dict__() for b in Bookmarks.getSharedInstance().getBookmarks(frequencyRange)] + self.write_bookmarks(bookmarks) - self.configSub = configProps.wire(sendConfig) + self.configSubs.append(configProps.wire(sendConfig)) + self.configSubs.append(stack.filter("center_freq", "samp_rate").wire(sendBookmarks)) # send initial config sendConfig() + sendBookmarks() self.__sendProfiles() self.sdr.addSpectrumClient(self) @@ -374,7 +374,7 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient): def write_wsjt_message(self, message): self.send({"type": "wsjt_message", "value": message}) - def write_dial_frequendies(self, frequencies): + def write_dial_frequencies(self, frequencies): self.send({"type": "dial_frequencies", "value": frequencies}) def write_bookmarks(self, bookmarks):