From 8f2f46484618154b2524de64827d793f7840659b Mon Sep 17 00:00:00 2001 From: Pedro Date: Sun, 26 Nov 2023 22:24:09 +0100 Subject: [PATCH] Move Beacon from data_handler_broadcasts to modem --- modem/beacon.py | 21 +++++++-------------- modem/command.py | 1 - modem/data_handler_broadcasts.py | 7 ------- modem/modem.py | 10 ++++++++++ 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/modem/beacon.py b/modem/beacon.py index 0f7559dc..55df9260 100644 --- a/modem/beacon.py +++ b/modem/beacon.py @@ -1,21 +1,20 @@ import threading import data_frame_factory -import time import command_beacon -from state_manager import StateManager class Beacon: BEACON_LOOP_INTERVAL = 1 - def __init__(self, config, modem_states: StateManager, event_queue, logger, modem_tx_queue): + def __init__(self, config, states, event_queue, logger, modem_tx_queue): self.modem_config = config - self.states = modem_states + self.states = states self.event_queue = event_queue self.log = logger self.tx_frame_queue = modem_tx_queue + self.loop_running = True self.paused = False self.thread = None self.event = threading.Event() @@ -26,21 +25,15 @@ class Beacon: beacon_thread = threading.Thread(target=self.run_beacon, name="beacon", daemon=True) beacon_thread.start() + def stop(self): + self.loop_running = False + def refresh(self): self.event.set() self.event.clear() def run_beacon(self) -> None: - """ - Controlling function for running a beacon - Args: - - self: arq class - - Returns: - - """ - while True: + while self.loop_running: while (self.states.is_beacon_running and not self.paused and True): diff --git a/modem/command.py b/modem/command.py index 31518e56..7038437d 100644 --- a/modem/command.py +++ b/modem/command.py @@ -1,5 +1,4 @@ from data_frame_factory import DataFrameFactory -from modem import RF import queue from codec2 import FREEDV_MODE diff --git a/modem/data_handler_broadcasts.py b/modem/data_handler_broadcasts.py index 18b7a922..e77ca44c 100644 --- a/modem/data_handler_broadcasts.py +++ b/modem/data_handler_broadcasts.py @@ -2,15 +2,11 @@ import time from modem_frametypes import FRAME_TYPE as FR_TYPE from codec2 import FREEDV_MODE from queues import MODEM_TRANSMIT_QUEUE -import threading import helpers -import codec2 -import modem from random import randrange import uuid import structlog import event_manager -import beacon import command_qrv from data_handler import DATA @@ -29,9 +25,6 @@ class BROADCAST(DATA): self.event_manager = event_manager.EventManager([event_queue]) - self.beacon = beacon.Beacon(self.config, self.states, event_queue, self.log, MODEM_TRANSMIT_QUEUE) - self.beacon.start() - # length of signalling frame self.length_sig0_frame = 14 self.modem_frequency_offset = 0 diff --git a/modem/modem.py b/modem/modem.py index 5b6207d6..5b169ef6 100644 --- a/modem/modem.py +++ b/modem/modem.py @@ -28,6 +28,7 @@ from queues import DATA_QUEUE_RECEIVED, MODEM_RECEIVED_QUEUE, MODEM_TRANSMIT_QUE import audio import event_manager from modem_frametypes import FRAME_TYPE +import beacon TESTMODE = False RXCHANNEL = "" @@ -132,6 +133,9 @@ class RF: self.fft_queue = fft_queue + self.beacon = beacon.Beacon(self.config, self.states, event_queue, + self.log, MODEM_TRANSMIT_QUEUE) + self.start_modem() @@ -171,6 +175,9 @@ class RF: # init decoding threads self.init_data_threads() atexit.register(self.stream.stop) + + # init beacon + self.beacon.start() else: return False @@ -182,6 +189,9 @@ class RF: # self.stream = lambda: None # self.stream.active = False # self.stream.stop + + self.beacon.stop() + except Exception: self.log.error("[MDM] Error stopping modem")