allow different ports
This commit is contained in:
parent
ae2e95283b
commit
66e041cf73
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user