Sergey Revyakin 6 days ago
parent 4b185700bd
commit 815daf4be3

3
.gitignore vendored

@ -183,4 +183,5 @@ cython_debug/
#.idea/
*.png
/logs/*.log
/logs/*.log
runtime/

@ -9,6 +9,7 @@ services:
- ../../.env
environment:
- PYTHONPATH=/app
- JAMMER_STATE_FILE=/app/runtime/jammer_active.flag
working_dir: /app
command: ["python3", "-m", "src.server_to_master"]
restart: unless-stopped
@ -16,6 +17,7 @@ services:
- "5010:5010"
volumes:
- ../../.env:/app/.env:ro
- ../../runtime:/app/runtime
networks:
- dronedetector-net

BIN
out.iq

Binary file not shown.

@ -4,6 +4,7 @@ import time
from common.runtime import load_root_env, validate_env, as_bool, as_str
from smb.SMBConnection import SMBConnection
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
from utils.jammer_state_flag import is_jammer_active
from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length
from core.multichannelswitcher import MultiChannel, get_centre_freq
@ -90,7 +91,7 @@ def work(lvl):
if alarm:
print('----ALARM---- ', freq)
multi_channel.db_alarms_zeros(circle_buffer)
else:
elif not is_jammer_active():
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)

@ -4,6 +4,7 @@ import time
from common.runtime import load_root_env, validate_env, as_bool, as_str
from smb.SMBConnection import SMBConnection
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
from utils.jammer_state_flag import is_jammer_active
from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length
from core.multichannelswitcher import MultiChannel, get_centre_freq
@ -90,7 +91,7 @@ def work(lvl):
if alarm:
print('----ALARM---- ', freq)
multi_channel.db_alarms_zeros(circle_buffer)
else:
elif not is_jammer_active():
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)

@ -4,6 +4,7 @@ import time
from common.runtime import load_root_env, validate_env, as_bool, as_str
from smb.SMBConnection import SMBConnection
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
from utils.jammer_state_flag import is_jammer_active
from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length
from core.multichannelswitcher import MultiChannel, get_centre_freq
@ -90,7 +91,7 @@ def work(lvl):
if alarm:
print('----ALARM---- ', freq)
multi_channel.db_alarms_zeros(circle_buffer)
else:
elif not is_jammer_active():
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)

@ -4,6 +4,7 @@ import time
from common.runtime import load_root_env, validate_env, as_bool, as_str
from smb.SMBConnection import SMBConnection
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
from utils.jammer_state_flag import is_jammer_active
from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length
from core.multichannelswitcher import MultiChannel, get_centre_freq
@ -90,7 +91,7 @@ def work(lvl):
if alarm:
print('----ALARM---- ', freq)
multi_channel.db_alarms_zeros(circle_buffer)
else:
elif not is_jammer_active():
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)

@ -4,6 +4,7 @@ import time
from common.runtime import load_root_env, validate_env, as_bool, as_str
from smb.SMBConnection import SMBConnection
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
from utils.jammer_state_flag import is_jammer_active
from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length
from core.multichannelswitcher import MultiChannel, get_centre_freq
@ -90,7 +91,7 @@ def work(lvl):
if alarm:
print('----ALARM---- ', freq)
multi_channel.db_alarms_zeros(circle_buffer)
else:
elif not is_jammer_active():
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)

@ -4,6 +4,7 @@ import time
from common.runtime import load_root_env, validate_env, as_bool, as_str
from smb.SMBConnection import SMBConnection
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
from utils.jammer_state_flag import is_jammer_active
from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length
from core.multichannelswitcher import MultiChannel, get_centre_freq
@ -93,7 +94,7 @@ def work(lvl):
if alarm:
print('----ALARM---- ', freq)
multi_channel.db_alarms_zeros(circle_buffer)
else:
elif not is_jammer_active():
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)

@ -4,6 +4,7 @@ import time
from common.runtime import load_root_env, validate_env, as_bool, as_str
from smb.SMBConnection import SMBConnection
from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data
from utils.jammer_state_flag import is_jammer_active
from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length
from core.multichannelswitcher import MultiChannel, get_centre_freq
@ -90,7 +91,7 @@ def work(lvl):
if alarm:
print('----ALARM---- ', freq)
multi_channel.db_alarms_zeros(circle_buffer)
else:
elif not is_jammer_active():
circle_buffer.update(sigs_array, packet_timestamps=sigs_ts_array)

@ -14,6 +14,7 @@ from fastapi import FastAPI
from common.runtime import load_root_env, validate_env, as_bool, as_float, as_int, as_str
from datetime import datetime, timedelta
import logging
from src.utils.jammer_state_flag import set_jammer_active
logging.basicConfig(level=logging.INFO)
@ -416,6 +417,7 @@ async def jammer_active():
freqs_alarm = {freq: 0 for freq in freqs}
jammer_event = True
set_jammer_active(True)
print('АКТИВИРУЕМ ПОДАВИТЕЛЬ ААААААААААААААААААААААААААААААААААААААААААААААА!!!!')
print('-' * 20)
@ -438,6 +440,7 @@ async def jammer_deactive():
global sending_data_task
alarm = False
jammer_event = False
set_jammer_active(False)
sending_data_task = asyncio.create_task(sending_data())
print('ОТКЛЮАЕМ ПОДАВИТЕЛЬ ААААААААААААААААААААААААААААААААААААААААААААААААА!!!!')
@ -496,6 +499,7 @@ async def jam_server():
await jammer_deactive()
except Exception as e:
jam_server_connect = None
set_jammer_active(False)
if jammer_event:
await jammer_deactive()
@ -508,6 +512,7 @@ async def startup_event():
"""
global sending_data_task
set_jammer_active(False)
asyncio.create_task(jam_server())
sending_data_task = asyncio.create_task(sending_data())

@ -0,0 +1,47 @@
import os
import time
from pathlib import Path
_DEFAULT_FLAG_PATH = Path(__file__).resolve().parents[2] / "runtime" / "jammer_active.flag"
_FLAG_PATH = Path(os.getenv("JAMMER_STATE_FILE", str(_DEFAULT_FLAG_PATH)))
_CACHE_TTL_SEC = float(os.getenv("JAMMER_STATE_CACHE_TTL_SEC", "0.25"))
_STALE_SEC = float(os.getenv("JAMMER_STATE_STALE_SEC", "5.0"))
_cached_value = False
_cached_checked_monotonic = 0.0
def _read_uncached() -> bool:
try:
stat = _FLAG_PATH.stat()
if time.time() - stat.st_mtime > _STALE_SEC:
return False
return _FLAG_PATH.read_text(encoding="ascii").strip() == "1"
except OSError:
return False
def is_jammer_active() -> bool:
global _cached_value
global _cached_checked_monotonic
now = time.monotonic()
if now - _cached_checked_monotonic < _CACHE_TTL_SEC:
return _cached_value
_cached_value = _read_uncached()
_cached_checked_monotonic = now
return _cached_value
def set_jammer_active(active: bool) -> None:
global _cached_value
global _cached_checked_monotonic
_FLAG_PATH.parent.mkdir(parents=True, exist_ok=True)
tmp_path = _FLAG_PATH.with_name(f"{_FLAG_PATH.name}.{os.getpid()}.tmp")
tmp_path.write_text("1" if active else "0", encoding="ascii")
os.replace(tmp_path, _FLAG_PATH)
_cached_value = bool(active)
_cached_checked_monotonic = time.monotonic()
Loading…
Cancel
Save