Доработка. Включение рекомендованной для цели помехи.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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 ## Координаты старта, долгота в градусах.
|
||||||
|
|||||||
Reference in New Issue
Block a user