Доработка. Рекомендуемые помехи

This commit is contained in:
sasha80
2025-10-01 12:27:09 +03:00
parent 336ae30eaf
commit 5c17f1f237
3 changed files with 65 additions and 1 deletions

View File

@@ -20,6 +20,11 @@ const ITERFER_MODE = {
'k1': [INTERFER_IQFILE, K1_PARAMS, 50],
'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51] }
const RECOMMEND_INTERFER = {
'ПСП + ФМ-2': 'srni1',
'Линейная ЧМ': 'lchm1'
}
const SRNI1_PARAMS = {'par_names' : ['freq', 'width']}
const SRNM2_PARAMS = {'par_names' : ['freq', 'width', 'period']}
const SRNGPS_PARAMS = {'par_names' : ['freq', 'filename'],
@@ -139,6 +144,7 @@ signal interfer_run(ecm: Interfer) ## Вызывается в м
signal interfer_error(ecm: Interfer, msg: String) ## Вызывается при ошибке.
signal interfer_update(ecm: Interfer) ## Вызывается при обновлении помехи.
signal interfer_resized(ecms: Dictionary) ## Вызывается при изменении количества сеансов помех.
signal interfer_recommendate(ecm: Interfer) ## Вызывается когда назначается рекомендуемая для цели помеха
## Отправляет словарь помех в юнит, для запаковки и отправки в 5П28.
@@ -291,6 +297,11 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
var id = item.id
param['freq'] = item.freq
param['width'] = item.width
if (item.rkrp != '') and item.fflags.rkrp:
var krp = get_krp(item)
if krp != '':
interfer_name = krp
set_rparams(item, param)
if (param['width'] < settings.WIDTH_MIN):
param['width'] = settings.WIDTH_MIN
elif (param['width'] > settings.WIDTH_MAX):
@@ -307,6 +318,11 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
if th != null:
param['freq'] = th.freq
param['width'] = th.width
if (th.rkrp != '') and th.fflags.rkrp:
var krp = get_krp(th)
if krp != '':
interfer_name = krp
set_rparams(th, param)
else:
param['freq'] = item[1]
param['width'] = item[2]
@@ -490,6 +506,13 @@ func on_threats_update(threat, ecms, unit_caps):
if thrs[ecm_i] == th_id:
ecm = ecms[ecm_i]
ecm.params['freq'] = threat.freq
ecm.params['width'] = threat.width
if (threat.rkrp != '') and threat.fflags.rkrp:
var krp = get_krp(threat)
if krp != '':
ecm.krp = krp
set_rparams(threat, ecm.params)
emit_signal('interfer_recommendate', ecm)
ecm.kni = threat.aoa
set_nmfs(ecm)
if threat.tmod != 'fm':
@@ -558,3 +581,34 @@ func find_threat(freq: int, aoa: float):
if fs_index_arr[0] == fs_index:
return th
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