Доработка. Включение рекомендованной для цели помехи.

This commit is contained in:
MaD_CaT
2025-09-24 13:20:20 +03:00
parent c12bdd77e9
commit 98c8ea8b21
2 changed files with 57 additions and 4 deletions

View File

@@ -20,6 +20,11 @@ const ITERFER_MODE = {
'k1': [INTERFER_IQFILE, K1_PARAMS, 50], 'k1': [INTERFER_IQFILE, K1_PARAMS, 50],
'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51] } 'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51] }
const RECOMMEND_INTERFER = {
'ПСП + ФМ-2': 'srni1',
'Линейная ЧМ': 'lchm1'
}
const SRNI1_PARAMS = {'par_names' : ['freq', 'width']} const SRNI1_PARAMS = {'par_names' : ['freq', 'width']}
const SRNM2_PARAMS = {'par_names' : ['freq', 'width', 'period']} const SRNM2_PARAMS = {'par_names' : ['freq', 'width', 'period']}
const SRNGPS_PARAMS = {'par_names' : ['freq', 'filename'], const SRNGPS_PARAMS = {'par_names' : ['freq', 'filename'],
@@ -265,17 +270,23 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void:
## Вызыватся, когда пользователь выбрал помеху и выбраны цели. ## Вызыватся, когда пользователь выбрал помеху и выбраны цели.
func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> void: func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> void:
var ecm_name = interfer_name
for item in sel_threats: for item in sel_threats:
var param: Dictionary = {} var param: Dictionary = {}
var kni: float = item.aoa var kni: float = item.aoa
var id = item.id var id = item.id
param['freq'] = item.freq param['freq'] = item.freq
param['width'] = item.width param['width'] = item.width
if item.rkrp != '':
var krp = get_krp(item)
if krp != '':
ecm_name = krp
set_rparams(item, param)
if (param['width'] < settings.WIDTH_MIN): if (param['width'] < settings.WIDTH_MIN):
param['width'] = settings.WIDTH_MIN param['width'] = settings.WIDTH_MIN
elif (param['width'] > settings.WIDTH_MAX): elif (param['width'] > settings.WIDTH_MAX):
param['width'] = settings.WIDTH_MAX param['width'] = settings.WIDTH_MAX
interfer_create(u, interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power) interfer_create(u, ecm_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power)
for item in fs_arr: for item in fs_arr:
var param: Dictionary = {} var param: Dictionary = {}
@@ -287,6 +298,11 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
if th != null: if th != null:
param['freq'] = th.freq param['freq'] = th.freq
param['width'] = th.width param['width'] = th.width
if th.rkrp != '':
var krp = get_krp(th)
if krp != '':
ecm_name = krp
set_rparams(th, param)
else: else:
param['freq'] = item[1] param['freq'] = item[1]
param['width'] = item[2] param['width'] = item[2]
@@ -295,10 +311,10 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
elif (param['width'] > settings.WIDTH_MAX): elif (param['width'] > settings.WIDTH_MAX):
param['width'] = settings.WIDTH_MAX param['width'] = settings.WIDTH_MAX
if th == null: if th == null:
interfer_create(u, interfer_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power) interfer_create(u, ecm_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power)
else: else:
id = th.id id = th.id
interfer_create(u, interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power) interfer_create(u, ecm_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power)
func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void: func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void:
var err: bool = false var err: bool = false
@@ -470,6 +486,12 @@ func on_threats_update(threat, ecms, unit_caps):
if thrs[ecm_i] == th_id: if thrs[ecm_i] == th_id:
ecm = ecms[ecm_i] ecm = ecms[ecm_i]
ecm.params['freq'] = threat.freq ecm.params['freq'] = threat.freq
ecm.params['width'] = threat.width
if threat.rkrp != '':
var krp = get_krp(threat)
if krp != '':
ecm.krp = krp
set_rparams(threat, ecm.params)
ecm.kni = threat.aoa ecm.kni = threat.aoa
set_nmfs(ecm) set_nmfs(ecm)
if threat.tmod != 'fm': if threat.tmod != 'fm':
@@ -538,3 +560,34 @@ func find_threat(freq: int, aoa: float):
if fs_index_arr[0] == fs_index: if fs_index_arr[0] == fs_index:
return th return th
return null return null
func set_rparams(threat: threats.Threat, params: Dictionary):
if threat.rparams.has('freq'):
params['freq'] = threat.rparams['freq']
else:
params['freq'] = threat.freq
if threat.rparams.has('period'):
params['period'] = threat.rparams['period']
if threat.rparams.has('width'):
params['width'] = threat.rparams['width']
else:
params['width'] = threat.width
if threat.rparams.has('filename'):
params['filename'] = threat.rparams['filename']
func get_krp(threat: threats.Threat):
var krp = ''
if RECOMMEND_INTERFER.has(threat.rkrp):
krp = RECOMMEND_INTERFER[threat.rkrp]
return krp
elif threat.rkrp == INTERFER_IQFILE:
if not threat.rparams.has('filename'): return krp
for key in ITERFER_MODE.keys():
var ecm_params = ITERFER_MODE[key][1]
if not ecm_params.has('files'): continue
if ecm_params['files'] == threat.rparams['filename']:
krp = key
return krp
return krp

View File

@@ -18,7 +18,7 @@ class Threat:
var power: float ## Уровень принимаемого сигнала, дБм. var power: float ## Уровень принимаемого сигнала, дБм.
var proto: String ## Тип протокола источника сигнала. var proto: String ## Тип протокола источника сигнала.
var rkrp: String ## Рекомендуемый режим помехи. var rkrp: String ## Рекомендуемый режим помехи.
var rparams: String ## Рекомендуемые параметры помехи. var rparams: Dictionary ## Рекомендуемые параметры помехи.
var salt: float ## Координаты старта, высота от уровня моря, м. var salt: float ## Координаты старта, высота от уровня моря, м.
var slat: float ## Координаты старта, широта в градусах. var slat: float ## Координаты старта, широта в градусах.
var slon: float ## Координаты старта, долгота в градусах. var slon: float ## Координаты старта, долгота в градусах.