Доработка. Исправления отправки имени файла, исправление отключения помехи. Постановка помехи на цель, если выбрать сектор с целью.
This commit is contained in:
@@ -4,7 +4,7 @@ class_name Iterfer extends Node
|
||||
|
||||
## Режимы помехи.
|
||||
const ITERFER_MODE = {
|
||||
INTERFER_OFF: ['Откл', {}, 0],
|
||||
INTERFER_OFF: [INTERFER_OFF, {}, 0],
|
||||
'srni1': ['ПСП + ФМ-2', SRNI1_PARAMS, 1],
|
||||
'srnm2': ['Линейная ЧМ', SRNM2_PARAMS, 2],
|
||||
'srngps': [INTERFER_IQFILE, SRNGPS_PARAMS, 3],
|
||||
@@ -39,9 +39,6 @@ const PDM4_PARAMS = {'par_names' : ['freq', 'filename'],
|
||||
const PDM4S_PARAMS = {'par_names' : ['freq', 'filename'],
|
||||
'files': 'PDM4S_5.pcm',
|
||||
'call_proc': 'call_all_diap'}
|
||||
const PDCHM_PARAMS = {'par_names' : ['freq', 'filename'],
|
||||
'files': 'FM_5.pcm',
|
||||
'call_proc': 'call_all_diap'}
|
||||
const K1_PARAMS = {'files' : 'K1.pcm',
|
||||
'call_proc' : 'call_all_diap',
|
||||
'par_names' : ['freq', 'filename']}
|
||||
@@ -58,15 +55,17 @@ const SVM2_PARAMS = {'files': {1: ['SVM2_LIT2.pcm', 1017],
|
||||
'call_proc': 'call_diap',
|
||||
'par_names' : ['freq', 'filename']}
|
||||
|
||||
# Файл : Ключ: ['имя файла', ширина, использовать 2 ЛЧМ]
|
||||
const PD_CHM = {'files': {
|
||||
5 : ['1 FM 5', 5, false],
|
||||
11: ['1 FM 10', 10, false],
|
||||
12: ['2 FM 20', 10, true],
|
||||
20: ['2 FM 40', 20, false] },
|
||||
'call_proc': 'call_pd_chm'}
|
||||
# Файл : Ключ (ширина): ['имя файла']
|
||||
const PDCHM_PARAMS = {'files': {
|
||||
5 : 'pdchm_5.pcm',
|
||||
10: 'pdchm__0.pcm',
|
||||
20: 'pdchm_20.pcm',
|
||||
40: 'pdchm_40.pcm' },
|
||||
'call_proc': 'call_pdchm',
|
||||
'par_names' : ['freq', 'filename'],}
|
||||
|
||||
const SOURCE_INTERFER = ['th','fs','cu']
|
||||
const EXCLUDE_INTERFER = ['srni1', 'srnm2', 'srngps', 'svi1', 'svm2']
|
||||
const ID_INTERFERS_LEN = 63 ## Размер пула номеров целей.
|
||||
const INTERFER_OFF = 'off'
|
||||
const INTERFER_IQFILE = 'IQ-файл'
|
||||
@@ -279,14 +278,24 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
|
||||
var param: Dictionary = {}
|
||||
var kni: float = item[0]
|
||||
var id = item[3]
|
||||
param['freq'] = item[1]
|
||||
param['width'] = item[2]
|
||||
var th = null
|
||||
if not interfer_name in EXCLUDE_INTERFER:
|
||||
th = find_threat(item[1], kni)
|
||||
if th != null:
|
||||
param['freq'] = th.freq
|
||||
param['width'] = th.width
|
||||
else:
|
||||
param['freq'] = item[1]
|
||||
param['width'] = item[2]
|
||||
if (param['width'] < settings.WIDTH_MIN):
|
||||
param['width'] = settings.WIDTH_MIN
|
||||
elif (param['width'] > settings.WIDTH_MAX):
|
||||
param['width'] = settings.WIDTH_MAX
|
||||
interfer_create(u, interfer_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power)
|
||||
|
||||
if th == null:
|
||||
interfer_create(u, interfer_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power)
|
||||
else:
|
||||
id = th.id
|
||||
interfer_create(u, interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power)
|
||||
|
||||
func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void:
|
||||
var err: bool = false
|
||||
@@ -426,6 +435,17 @@ func call_diap(ecm, ecm_params: Dictionary):
|
||||
ecm.params['freq'] = ecm_params['files'][band][1]
|
||||
|
||||
|
||||
func call_pdchm(ecm, ecm_params: Dictionary):
|
||||
var temp_key: float = settings.WIDTH_MIN
|
||||
for key in ecm_params['files'].keys():
|
||||
if key > temp_key: temp_key = key
|
||||
for key in ecm_params['files'].keys():
|
||||
if key < ecm.params['width']: continue
|
||||
if key < temp_key:
|
||||
temp_key = key
|
||||
ecm.params['filename'] = ecm_params['files'][int(temp_key)]
|
||||
|
||||
|
||||
func set_nmfs(ecm):
|
||||
var fs_index_arr: Array
|
||||
prd.get_fs_index(ecm, fs_index_arr)
|
||||
@@ -448,6 +468,7 @@ func on_threats_update(threat, ecms, unit_caps):
|
||||
ecm = ecms[ecm_i]
|
||||
ecm.params['freq'] = threat.freq
|
||||
ecm.kni = threat.aoa
|
||||
set_nmfs(ecm)
|
||||
if threat.tmod != 'fm':
|
||||
if ecm != null:
|
||||
send_ecm(ecm, unit_caps)
|
||||
@@ -477,12 +498,10 @@ func on_threats_update(threat, ecms, unit_caps):
|
||||
th_fm_dict[th_index] = thrs_dict[th_index]
|
||||
if len(th_fm_dict) > 1:
|
||||
pass
|
||||
|
||||
send_ecm(ecm, unit_caps)
|
||||
|
||||
|
||||
func get_freq_range(freq_range_dict: Dictionary, th_dict: Dictionary):
|
||||
var min_range_abs: int = 6000
|
||||
for key_i in th_dict:
|
||||
var min_range: int = 6000
|
||||
var key_min = null
|
||||
@@ -493,10 +512,26 @@ func get_freq_range(freq_range_dict: Dictionary, th_dict: Dictionary):
|
||||
if freq_range < min_range:
|
||||
key_min = key_j
|
||||
min_range = freq_range
|
||||
if min_range > PD_CHM['files'][20][1]:
|
||||
var max_width = 0
|
||||
for key in PDCHM_PARAMS['files'].keys():
|
||||
if max_width < key: max_width = key
|
||||
if min_range > max_width:
|
||||
th_dict.erase(key_i)
|
||||
continue
|
||||
else:
|
||||
if key_min == null: continue
|
||||
freq_range_dict[key_i] = [th_dict[key_i], th_dict[key_min], min_range]
|
||||
if min_range < min_range_abs: min_range_abs = min_range
|
||||
|
||||
|
||||
func find_threat(freq: int, aoa: float):
|
||||
var fs_index_arr = []
|
||||
prd.find_fs_index(aoa, freq, fs_index_arr)
|
||||
if not fs_index_arr.size(): return null
|
||||
var fs_index = fs_index_arr[0]
|
||||
for th in thrs_dict.values():
|
||||
fs_index_arr = []
|
||||
prd.find_fs_index(th.aoa, th.freq, fs_index_arr)
|
||||
if not fs_index_arr.size(): continue
|
||||
if fs_index_arr[0] == fs_index:
|
||||
return th
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user