From 12e5d2ff7a3f7995c6e2753fdb647a9c7a3f24a9 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 26 Nov 2023 12:22:22 -0500 Subject: [PATCH] Fix dynamic control of FFT data stream --- modem/modem.py | 14 +++++--------- modem/service_manager.py | 12 +++++++----- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/modem/modem.py b/modem/modem.py index ceed832e..5b6207d6 100644 --- a/modem/modem.py +++ b/modem/modem.py @@ -75,8 +75,8 @@ class RF: self.tx_audio_level = config['AUDIO']['tx_audio_level'] self.enable_audio_auto_tune = config['AUDIO']['enable_auto_tune'] self.enable_fsk = config['MODEM']['enable_fsk'] - #Dynamically enable FFT when a client connects to FFT web socket - self.enable_fft = False + #Dynamically enable FFT data stream when a client connects to FFT web socket + self.enable_fft_stream = False self.tx_delay = config['MODEM']['tx_delay'] self.tuning_range_fmin = config['MODEM']['tuning_range_fmin'] self.tuning_range_fmax = config['MODEM']['tuning_range_fmax'] @@ -302,8 +302,6 @@ class RF: x = np.frombuffer(x, dtype=np.int16) # x = self.resampler.resample48_to_8(x) - #FFT should always be enabled as busy detection is done here - #if self.enable_fft: self.calculate_fft(x) length_x = len(x) @@ -419,7 +417,6 @@ class RF: if not self.modoutqueue or self.mod_out_locked: data_out48k = np.zeros(frames, dtype=np.int16) - #if self.enable_fft: self.calculate_fft(x) else: # TODO Moved to this place for testing @@ -428,7 +425,6 @@ class RF: self.event_manager.send_ptt_change(True) data_out48k = self.modoutqueue.popleft() - #if self.enable_fft: self.calculate_fft(data_out48k) except Exception as e: self.log.warning(f"[MDM] audio callback not ready yet: {e}") @@ -1423,8 +1419,7 @@ class RF: # When our channel busy counter reaches 0, toggle state to False if self.channel_busy_delay == 0: self.states.set("channel_busy", False) - - if (self.enable_fft): + if (self.enable_fft_stream): # erase queue if greater than 10 if self.fft_queue.qsize() >= 10: self.fft_queue = queue.Queue() @@ -1467,7 +1462,8 @@ class RF: codec2.api.freedv_set_sync(self.fsk_ldpc_freedv_0, 0) def set_FFT_stream(self, enable: bool): - self.enable_fft = enable + # Set config boolean regarding wheter it should sent FFT data to queue + self.enable_fft_stream = enable def set_audio_volume(datalist: np.ndarray, dB: float) -> np.ndarray: """ diff --git a/modem/service_manager.py b/modem/service_manager.py index d564a0d7..7b5c4a0c 100644 --- a/modem/service_manager.py +++ b/modem/service_manager.py @@ -18,7 +18,7 @@ class SM: self.config = self.app.config_manager.read() self.modem_events = app.modem_events self.modem_fft = app.modem_fft - self.enable_fft = False + self.enable_fft_stream = False self.modem_service = app.modem_service self.states = app.state_manager @@ -51,11 +51,13 @@ class SM: if self.start_modem(): self.modem_events.put(json.dumps({"freedata": "modem-event", "event": "restart"})) elif cmd in ['fft:true']: - #self.modem.set_FFT_stream(True) - self.enable_fft=True + # Tell modem it should put FFT data in the queue + self.modem.set_FFT_stream(True) + self.enable_fft_stream=True elif cmd in ['fft:false']: - #self.modem.set_FFT_stream(False) - self.enable_fft=False + # Tell modem it should not put FFT data in the queue + self.modem.set_FFT_stream(False) + self.enable_fft_stream=False else: self.log.warning("[SVC] modem command processing failed", cmd=cmd, state=self.states.is_modem_running)