dissertation/src/__main__.py

48 lines
1.1 KiB
Python

import logging
import multiprocessing as mp
from typing import NamedTuple
from . import ingest
from . import config
from . import visualise
from . import aoa
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(name)-40s %(levelname)-8s %(message)s",
)
class Receiver(NamedTuple):
ip: str
receiver: ingest.FeitReceiver
queue: "mp.Queue[ingest.CSI]"
receivers = [
Receiver(ip, ingest.FeitReceiver(ip), mp.Queue(config.SAMPLE_RATE))
for ip in config.RECEIVE_IP_ADDRESS_LIST
]
# Start injecting CSI frames
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)
# 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
]
for proc in receiver_processes:
proc.start()
processing_thread = mp.Process(target=processor.process_forever)
processing_thread.start()