allow different ports

This commit is contained in:
Christos Falas 2024-12-31 16:08:32 +00:00
parent ae2e95283b
commit 66e041cf73
No known key found for this signature in database
3 changed files with 20 additions and 21 deletions

View File

@ -15,14 +15,14 @@ logging.basicConfig(
class Receiver(NamedTuple): class Receiver(NamedTuple):
ip: str ip: ingest.Host
receiver: ingest.FeitReceiver receiver: ingest.FeitReceiver
queue: "mp.Queue[ingest.CSI]" queue: "mp.Queue[ingest.CSI]"
receivers = [ 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_IP_ADDRESS_LIST for ip in config.RECEIVE_HOSTS
] ]
# Start injecting CSI frames # Start injecting CSI frames

View File

@ -1,5 +1,3 @@
import os
PREPROCESSING_SHORT_TERM_WINDOW_SIZE = 5 PREPROCESSING_SHORT_TERM_WINDOW_SIZE = 5
PREPROCESSING_LONG_TERM_ALPHA = 0.01 PREPROCESSING_LONG_TERM_ALPHA = 0.01
@ -8,15 +6,14 @@ PREPROCESSING_BANDPASS_HIGH_CUTOFF = 40
AOA_SLIDING_WINDOW_SIZE = 40 AOA_SLIDING_WINDOW_SIZE = 40
RECEIVE_IP_ADDRESS_LIST = ["10.0.12.64", "10.0.12.62"] RECEIVE_HOSTS = [("cfalas.com", 10001), ("cfalas.com", 10002)]
INJECT_IP_ADDRESS = os.getenv("INJECT_IP_ADDRESS", "10.0.12.63") INJECT_HOST = ("cfalas.com", 10003)
FEITCSI_PORT = 8008
ANTENNA_ORDER = [ ANTENNA_ORDER = [
("10.0.12.62", 0), (("cfalas.com", 10001), 0),
("10.0.12.64", 1), (("cfalas.com", 10002), 1),
("10.0.12.64", 0), (("cfalas.com", 10002), 0),
("10.0.12.62", 1), (("cfalas.com", 10001), 1),
] ]
SAMPLE_RATE = 100 # Hz SAMPLE_RATE = 100 # Hz

View File

@ -10,13 +10,15 @@ from .csi import CSI
from .aoa import AoA from .aoa import AoA
from .preprocess import Preprocessor from .preprocess import Preprocessor
from . import config from . import config
from . import visualise
Host = tuple[str, int]
class FeitTransmitter: class FeitTransmitter:
def __init__(self): def __init__(self):
self.inject_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.inject_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.inject_server.connect((config.INJECT_IP_ADDRESS, config.FEITCSI_PORT)) self.inject_server.connect(config.INJECT_HOST)
inject_start_string = ( inject_start_string = (
f"feitcsi --frequency {config.CENTRAL_FREQUENCY_MHZ} " f"feitcsi --frequency {config.CENTRAL_FREQUENCY_MHZ} "
f"--channel-width {config.CHANNEL_WIDTH} " f"--channel-width {config.CHANNEL_WIDTH} "
@ -29,10 +31,10 @@ class FeitTransmitter:
class FeitReceiver: class FeitReceiver:
def __init__(self, host: str): def __init__(self, host: Host):
self.host = host self.host = host
self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.server.connect((self.host, config.FEITCSI_PORT)) self.server.connect(host)
self.start_string = ( self.start_string = (
f"feitcsi --frequency {config.CENTRAL_FREQUENCY_MHZ} " f"feitcsi --frequency {config.CENTRAL_FREQUENCY_MHZ} "
f"--channel-width {config.CHANNEL_WIDTH} " f"--channel-width {config.CHANNEL_WIDTH} "
@ -66,10 +68,10 @@ class FeitReceiver:
class CSIProcessor: class CSIProcessor:
def __init__( def __init__(
self, self,
receiver_connections: dict[str, "mp.Queue[CSI]"], receiver_connections: dict[Host, "mp.Queue[CSI]"],
webserver: "mp.Queue[AoA]", webserver: "mp.Queue[AoA]",
): ):
self.pending_data: dict[str, tuple[datetime, CSI]] = {} self.pending_data: dict[Host, tuple[datetime, CSI]] = {}
self.pending_data_lock = mp.Lock() self.pending_data_lock = mp.Lock()
self.logger = logging.getLogger(f"{__name__}.{self.__class__.__name__}") self.logger = logging.getLogger(f"{__name__}.{self.__class__.__name__}")
self.last_processed = datetime.now() self.last_processed = datetime.now()
@ -80,7 +82,7 @@ class CSIProcessor:
self.connections = receiver_connections self.connections = receiver_connections
self.webserver = webserver self.webserver = webserver
def add_data(self, host: str, data: CSI): def add_data(self, host: Host, data: CSI):
if ( if (
host in self.pending_data host in self.pending_data
and self.last_processed < self.pending_data[host][0] and self.last_processed < self.pending_data[host][0]
@ -101,10 +103,10 @@ class CSIProcessor:
self.logger.debug("Antenna RSSI values: {}".format(rssis)) self.logger.debug("Antenna RSSI values: {}".format(rssis))
def is_ready(self): def is_ready(self):
for ip in config.RECEIVE_IP_ADDRESS_LIST: for host in config.RECEIVE_HOSTS:
if ( if (
ip not in self.pending_data host not in self.pending_data
or self.pending_data[ip][0] <= self.last_processed or self.pending_data[host][0] <= self.last_processed
): ):
return False return False
return True return True