diff --git a/src/__main__.py b/src/__main__.py index 1e258a2..4fb2c4b 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -17,11 +17,10 @@ logging.basicConfig( class Receiver(NamedTuple): ip: ingest.Host receiver: ingest.FeitReceiver - queue: "mp.Queue[ingest.CSI]" receivers = [ - Receiver(ip, ingest.FeitReceiver(ip), mp.Queue(config.SAMPLE_RATE)) + Receiver(ip, ingest.FeitReceiver(ip, mp.Queue(config.SAMPLE_RATE))) for ip in config.RECEIVE_HOSTS ] @@ -30,15 +29,15 @@ transmitter = ingest.FeitTransmitter() webapp_queue: "mp.Queue[aoa.AoA]" = mp.Queue(config.SAMPLE_RATE) -processor = ingest.CSIProcessor({r.ip: r.queue for r in receivers}, webapp_queue) +processor = ingest.CSIProcessor( + {r.ip: r.receiver.processing_queue for r in receivers}, webapp_queue +) # Start webapp in background process webapp = mp.Process(target=visualise.start, args=(webapp_queue,)) webapp.start() -receiver_processes = [ - mp.Process(target=r.receiver.listen, args=(r.queue,)) for r in receivers -] +receiver_processes = [mp.Process(target=r.receiver.listen) for r in receivers] for proc in receiver_processes: proc.start() diff --git a/src/ingest.py b/src/ingest.py index 00c0437..c55eac0 100644 --- a/src/ingest.py +++ b/src/ingest.py @@ -33,7 +33,7 @@ class FeitTransmitter: class FeitReceiver: - def __init__(self, host: Host): + def __init__(self, host: Host, processing_queue: "mp.Queue[CSI]"): self.host = host self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.server.connect(host) @@ -48,8 +48,9 @@ class FeitReceiver: self.logger = logging.getLogger( f"{__name__}.{self.__class__.__name__}-{self.host}" ) + self.processing_queue = processing_queue - def listen(self, queue: "mp.Queue[CSI]"): + def listen(self): prev_time = datetime.now() while True: # This is the max size of a UDP packet. The size of the actual CSI @@ -62,7 +63,7 @@ class FeitReceiver: f"Received CSI data after {datetime.now() - prev_time}" ) prev_time = datetime.now() - queue.put(csidata) + self.processing_queue.put(csidata) except struct.error: self.logger.error("Failed to parse CSI data")