Compare commits
6 Commits
1bc44ae43a
...
638440feff
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
638440feff | ||
|
|
785021b557 | ||
|
|
42ac105240 | ||
|
|
c2963f4a9f | ||
|
|
a1e5f2fec7 | ||
|
|
b681f0b2c6 |
@ -1,17 +1,29 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from collections import deque
|
||||||
|
from typing import Any, Collection
|
||||||
|
|
||||||
from ..collection import ingest
|
from ..collection import ingest
|
||||||
|
from ..config import config
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
AntennaIdentifier = tuple[ingest.Host, int]
|
AntennaIdentifier = tuple[ingest.Host, int]
|
||||||
order: list[AntennaIdentifier] = []
|
order: list[AntennaIdentifier] = []
|
||||||
prev_unplugged: set[AntennaIdentifier] = set()
|
prev_unplugged: set[AntennaIdentifier] = set()
|
||||||
antenna_average: dict[AntennaIdentifier, float] = {}
|
long_antenna_average: dict[AntennaIdentifier, deque[int]] = {
|
||||||
|
(host, 0): deque(maxlen=10 * config.sample_rate) for host in config.receive_hosts
|
||||||
|
} | {(host, 1): deque(maxlen=10 * config.sample_rate) for host in config.receive_hosts}
|
||||||
|
short_antenna_average: dict[AntennaIdentifier, deque[int]] = {
|
||||||
|
(host, 0): deque(maxlen=config.sample_rate) for host in config.receive_hosts
|
||||||
|
} | {(host, 1): deque(maxlen=config.sample_rate) for host in config.receive_hosts}
|
||||||
|
|
||||||
RSSI_THRESHOLD = 8
|
RSSI_THRESHOLD = 8
|
||||||
|
|
||||||
|
|
||||||
|
def average(data: Collection[Any]) -> float:
|
||||||
|
return sum(data) / len(data)
|
||||||
|
|
||||||
|
|
||||||
def callback(antenna_data: dict[ingest.Host, ingest.CSI]) -> None:
|
def callback(antenna_data: dict[ingest.Host, ingest.CSI]) -> None:
|
||||||
global prev_unplugged
|
global prev_unplugged
|
||||||
global antenna_average
|
global antenna_average
|
||||||
@ -27,18 +39,18 @@ def callback(antenna_data: dict[ingest.Host, ingest.CSI]) -> None:
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
for host, csi in antenna_data.items():
|
for host, csi in antenna_data.items():
|
||||||
antenna_average[(host, 0)] = (
|
long_antenna_average[(host, 0)].append(csi.header.rssi1)
|
||||||
antenna_average.get((host, 0), csi.header.rssi1) * 0.99
|
long_antenna_average[(host, 1)].append(csi.header.rssi2)
|
||||||
+ csi.header.rssi1 * 0.01
|
short_antenna_average[(host, 0)].append(csi.header.rssi1)
|
||||||
)
|
short_antenna_average[(host, 1)].append(csi.header.rssi2)
|
||||||
antenna_average[(host, 1)] = (
|
|
||||||
antenna_average.get((host, 1), csi.header.rssi2) * 0.99
|
for antenna in range(2):
|
||||||
+ csi.header.rssi2 * 0.01
|
if (
|
||||||
)
|
average(short_antenna_average[(host, antenna)])
|
||||||
if csi.header.rssi1 > antenna_average[(host, 0)] + RSSI_THRESHOLD:
|
> average(long_antenna_average[(host, antenna)]) + RSSI_THRESHOLD
|
||||||
unplugged.add((host, 0))
|
):
|
||||||
if csi.header.rssi2 > antenna_average[(host, 1)] + RSSI_THRESHOLD:
|
unplugged.add((host, antenna))
|
||||||
unplugged.add((host, 1))
|
|
||||||
if prev_unplugged != unplugged:
|
if prev_unplugged != unplugged:
|
||||||
if len(prev_unplugged) > len(unplugged):
|
if len(prev_unplugged) > len(unplugged):
|
||||||
logger.info(f"Antenna plugged in: {prev_unplugged - unplugged}")
|
logger.info(f"Antenna plugged in: {prev_unplugged - unplugged}")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user