Merge remote-tracking branch 'refs/remotes/Cat/master'
# Conflicts: # scripts/trassa.gd
This commit is contained in:
@@ -56,6 +56,7 @@ offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
theme_override_styles/panel = SubResource("1")
|
||||
script = ExtResource("1_ui6sg")
|
||||
font_size = null
|
||||
|
||||
[node name="back" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_hhdyc")
|
||||
@@ -79,6 +80,7 @@ axis_stretch_vertical = 2
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
|
||||
theme_override_constants/outline_size = 4
|
||||
theme_override_font_sizes/font_size = 15
|
||||
theme_override_styles/focus = SubResource("4")
|
||||
theme_override_styles/disabled = SubResource("5")
|
||||
theme_override_styles/hover = SubResource("2")
|
||||
|
||||
@@ -59,6 +59,11 @@ var _pressed: = false
|
||||
$button.set_toggle_mode(val)
|
||||
|
||||
|
||||
@export var font_size: int = true:
|
||||
set(val):
|
||||
$button.add_theme_font_size_override('theme_override_font_sizes/font_size', val)
|
||||
|
||||
|
||||
func set_pressed(val: bool):
|
||||
pressed = val
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Включает принудительную помеху"
|
||||
strips_rotation = 15.0
|
||||
text = "СРН"
|
||||
font_size = null
|
||||
metadata/rfi_name = "srn"
|
||||
|
||||
[node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -66,6 +67,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 15.0
|
||||
text = "СПРС"
|
||||
font_size = null
|
||||
metadata/rfi_name = "sprs"
|
||||
|
||||
[node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -75,6 +77,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД"
|
||||
strips_rotation = 15.0
|
||||
text = "КУПД"
|
||||
font_size = null
|
||||
metadata/rfi_name = "kupd"
|
||||
|
||||
[node name="btn_panika" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -84,6 +87,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД"
|
||||
strips_rotation = 15.0
|
||||
text = "Паника"
|
||||
font_size = null
|
||||
metadata/rfi_name = "<off>"
|
||||
|
||||
[node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -92,4 +96,5 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 15.0
|
||||
text = "Очистить"
|
||||
font_size = null
|
||||
metadata/rfi_name = "<off>"
|
||||
|
||||
@@ -36,7 +36,8 @@ const INTERFER_NAMES = {
|
||||
'svi1': 'СВ-И1',
|
||||
'k1': 'K1',
|
||||
'svm2': 'СВ-М2',
|
||||
'ozp1': 'ОЗП-1'}
|
||||
'ozp1': 'ОЗП-1',
|
||||
'eprls': 'ЕПРЛС',}
|
||||
|
||||
|
||||
## Индексы колонок
|
||||
@@ -84,6 +85,7 @@ func _ready():
|
||||
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
||||
signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel').bind(table_index))
|
||||
interfer.connect('interfer_update', Callable(self, 'on_interfer_update').bind(table_index))
|
||||
interfer.connect('interfer_recommendate', Callable(self, 'on_interfer_recommendate'))
|
||||
$table.connect('row_pressed', Callable(self, 'on_row_pressed'))
|
||||
call_deferred('init_table')
|
||||
|
||||
@@ -120,21 +122,13 @@ func on_interfer_new(ecm, table_index):
|
||||
signaller.emit_signal('interfer_selected', ecm)
|
||||
|
||||
|
||||
func on_interfer_off(ecm, ecms, thrs, table_index):
|
||||
var sz = ecms.size()
|
||||
func on_interfer_off(ecm, table_index):
|
||||
$table.remove_row(table_index[ecm.ispp])
|
||||
rehash(table_index)
|
||||
ecms.erase(ecm.ispp)
|
||||
thrs.erase(ecm.ispp)
|
||||
interfer.cu.erase(ecm.ispp)
|
||||
interfer.fs.erase(ecm.ispp)
|
||||
interfer.push_id(ecm.ispp)
|
||||
var sel_rows: Array
|
||||
$table.get_selected_rows(sel_rows)
|
||||
if not len(sel_rows):
|
||||
signaller.emit_signal('interfer_selected', null)
|
||||
if sz != ecms.size():
|
||||
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
|
||||
## Перестраивает индекс таблицы. Вызывать при удалении строки
|
||||
@@ -159,3 +153,13 @@ func map_th_to_row(ecm) -> Array:
|
||||
if INTERFER_STATE.has(ecm.svk):
|
||||
row[COLUMN_STATE] = '%s' % INTERFER_STATE[ecm.svk]
|
||||
return row
|
||||
|
||||
|
||||
func on_interfer_recommendate(ecm):
|
||||
var sel_rows: Array
|
||||
$table.get_selected_rows(sel_rows)
|
||||
if not len(sel_rows): return
|
||||
var row = sel_rows[0]
|
||||
var sel_ecm = $table.get_node_user_data(0, sel_rows[0])
|
||||
if ecm == sel_ecm:
|
||||
signaller.emit_signal('interfer_selected', ecm)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
[node name="grd_btns" type="GridContainer"]
|
||||
offset_right = 1096.0
|
||||
offset_bottom = 54.0
|
||||
columns = 15
|
||||
columns = 16
|
||||
|
||||
[node name="btn_off" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
layout_mode = 2
|
||||
@@ -14,6 +14,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "Откл."
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "off"
|
||||
|
||||
[node name="btn_p12" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -23,6 +24,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "МЧМ-1"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "mchm1"
|
||||
|
||||
[node name="btn_p16" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -32,6 +34,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СРН-И1"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "srni1"
|
||||
|
||||
[node name="btn_p15" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -41,6 +44,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СРН-М2"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "srnm2"
|
||||
|
||||
[node name="btn_p18" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -50,6 +54,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СРН-GPS"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "srngps"
|
||||
|
||||
[node name="btn_p14" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -59,6 +64,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-М4"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "pdm4"
|
||||
|
||||
[node name="btn_p13" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -68,6 +74,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-М2"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "pdm2"
|
||||
|
||||
[node name="btn_p11" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -77,6 +84,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ЛЧМ-1"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "lchm1"
|
||||
|
||||
[node name="btn_p17" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -86,6 +94,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ЛЧМ-2"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "lchm2"
|
||||
|
||||
[node name="btn_p10" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -95,6 +104,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-М4С"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "pdm4s"
|
||||
|
||||
[node name="btn_p9" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -104,6 +114,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-ЧМ"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "pdchm"
|
||||
|
||||
[node name="btn_p8" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -113,6 +124,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СВ-И1"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "svi1"
|
||||
|
||||
[node name="btn_p7" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -122,6 +134,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "K1"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "k1"
|
||||
|
||||
[node name="btn_p6" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -131,6 +144,7 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СВ-М2"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "svm2"
|
||||
|
||||
[node name="btn_p5" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
@@ -140,4 +154,15 @@ size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ОЗП-1"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "ozp1"
|
||||
|
||||
[node name="btn_p19" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ЕПРЛС"
|
||||
disabled = true
|
||||
font_size = 1
|
||||
metadata/rfi_name = "eprls"
|
||||
|
||||
@@ -5,7 +5,7 @@ func on_line_changed(unit_inst): log.message(Logger.INFO, '\"%s\" изменен
|
||||
func on_command_fail(unit_inst): log.message(Logger.ERROR, '\"%s\" команда не выполнена' % unit_inst.name)
|
||||
func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()])
|
||||
func on_parse_error(unit_inst, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit_inst.name, msg])
|
||||
func on_interfer_off(ecm, _ecms, _thrs,msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])
|
||||
func on_interfer_off(ecm, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])
|
||||
func on_set_program_mode(msg: String): log.message(Logger.INFO, msg)
|
||||
|
||||
func on_interfer_new(ecm, msg: String):
|
||||
|
||||
@@ -229,13 +229,6 @@ func on_interfer_off_all():
|
||||
update_fs_colors()
|
||||
|
||||
|
||||
func on_interfer_off(ecm_id):
|
||||
fs_active.erase(ecm_id)
|
||||
fs_selected.erase(ecm_id)
|
||||
fs_active.clear()
|
||||
update_fs_colors()
|
||||
|
||||
|
||||
## Обработчик сигнала обнаружения цели.
|
||||
func on_threat_new(th) -> void:
|
||||
var bip = Bip.instantiate()
|
||||
|
||||
@@ -174,6 +174,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой"
|
||||
strips_rotation = 25.0
|
||||
text = "Строб"
|
||||
font_size = null
|
||||
metadata/state = 0
|
||||
|
||||
[node name="btn_threats" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")]
|
||||
@@ -183,6 +184,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой"
|
||||
strips_rotation = 25.0
|
||||
text = "Цель"
|
||||
font_size = null
|
||||
metadata/state = 1
|
||||
|
||||
[node name="btn_fs_sector" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")]
|
||||
@@ -192,6 +194,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой"
|
||||
strips_rotation = 25.0
|
||||
text = "Сектор"
|
||||
font_size = null
|
||||
metadata/state = 2
|
||||
|
||||
[node name="chk_auto" type="CheckBox" parent="."]
|
||||
|
||||
@@ -81,6 +81,7 @@ offset_right = 1583.0
|
||||
offset_bottom = 85.0
|
||||
strips_rotation = 10.0
|
||||
text = "Прочитать"
|
||||
font_size = null
|
||||
|
||||
[node name="btn_flash_write" parent="." instance=ExtResource("2_eju8r")]
|
||||
layout_mode = 0
|
||||
@@ -90,6 +91,7 @@ offset_right = 1583.0
|
||||
offset_bottom = 129.0
|
||||
strips_rotation = 10.0
|
||||
text = "Записать"
|
||||
font_size = null
|
||||
|
||||
[node name="btn_save" type="Button" parent="."]
|
||||
layout_mode = 0
|
||||
|
||||
@@ -18,7 +18,13 @@ const ITERFER_MODE = {
|
||||
'svi1': [INTERFER_IQFILE, SVI1_PARAMS, 20],
|
||||
'svm2': [INTERFER_IQFILE, SVM2_PARAMS, 21],
|
||||
'k1': [INTERFER_IQFILE, K1_PARAMS, 50],
|
||||
'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51] }
|
||||
'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51],
|
||||
'eprls': [INTERFER_IQFILE, EPRLS_PARAMS, 52], }
|
||||
|
||||
const RECOMMEND_INTERFER = {
|
||||
'ПСП + ФМ-2': 'srni1',
|
||||
'Линейная ЧМ': 'lchm1'
|
||||
}
|
||||
|
||||
const SRNI1_PARAMS = {'par_names' : ['freq', 'width']}
|
||||
const SRNM2_PARAMS = {'par_names' : ['freq', 'width', 'period']}
|
||||
@@ -54,7 +60,9 @@ const SVM2_PARAMS = {'files': {1: ['SVM2_LIT2.pcm', 1017],
|
||||
2: ['SVM2_LIT3.pcm', 1156]},
|
||||
'call_proc': 'call_diap',
|
||||
'par_names' : ['freq', 'filename']}
|
||||
|
||||
const EPRLS_PARAMS = {'files' : 'ERLS.pcm',
|
||||
'call_proc' : 'call_all_diap',
|
||||
'par_names' : ['freq', 'filename']}
|
||||
# Файл : Ключ (ширина): ['имя файла']
|
||||
const PDCHM_PARAMS = {'files': {
|
||||
5 : 'pdchm_5.pcm',
|
||||
@@ -139,6 +147,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.
|
||||
@@ -171,7 +180,7 @@ func _ready() -> void:
|
||||
signaller.connect('interfer_new', Callable(self, 'send_ecm').bind(unit_caps))
|
||||
signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit_caps, ecms))
|
||||
signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms, unit_caps))
|
||||
signaller.connect('interfer_off', Callable(self, 'on_interfer_off'))
|
||||
signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind(ecms))
|
||||
signaller.connect('manual_control', Callable(self, 'on_manual_control'))
|
||||
signaller.connect('full_auto', Callable(self, 'on_full_auto'))
|
||||
signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno'))
|
||||
@@ -265,17 +274,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:
|
||||
var ecm_name = interfer_name
|
||||
for item in sel_threats:
|
||||
var param: Dictionary = {}
|
||||
var kni: float = item.aoa
|
||||
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 != '':
|
||||
ecm_name = krp
|
||||
set_rparams(item, param)
|
||||
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, thrs, SOURCE_INTERFER[0], power)
|
||||
interfer_create(u, ecm_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power)
|
||||
|
||||
for item in fs_arr:
|
||||
var param: Dictionary = {}
|
||||
@@ -287,6 +302,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 != '':
|
||||
ecm_name = krp
|
||||
set_rparams(th, param)
|
||||
else:
|
||||
param['freq'] = item[1]
|
||||
param['width'] = item[2]
|
||||
@@ -295,10 +315,10 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
|
||||
elif (param['width'] > settings.WIDTH_MAX):
|
||||
param['width'] = settings.WIDTH_MAX
|
||||
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:
|
||||
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:
|
||||
var err: bool = false
|
||||
@@ -371,7 +391,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf
|
||||
log.error('Ошибка выбора модуля ФС для помехи: %s' %[ecm.ispp])
|
||||
signaller.emit_signal('interfer_new', ecm)
|
||||
if interfer_name == 'off':
|
||||
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
thrs.erase(ispp)
|
||||
ecm.tick_tx = Time.get_ticks_msec()
|
||||
send_ecm(ecm, u)
|
||||
@@ -394,7 +414,7 @@ func on_interfer_off_all(unit0, ecms: Dictionary) -> void:
|
||||
for ecm in ecms.values():
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit0)
|
||||
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
|
||||
|
||||
func on_threats_lost(th, ecms, unit0) -> void:
|
||||
@@ -404,7 +424,7 @@ func on_threats_lost(th, ecms, unit0) -> void:
|
||||
var ecm = ecms[ecm_id]
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit0)
|
||||
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
|
||||
|
||||
func pop_id() -> int:
|
||||
@@ -470,6 +490,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':
|
||||
@@ -538,3 +565,45 @@ 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
|
||||
|
||||
|
||||
func on_interfer_off(ecm: Interfer, ecms):
|
||||
var sz = ecms.size()
|
||||
ecms.erase(ecm.ispp)
|
||||
thrs.erase(ecm.ispp)
|
||||
interfer.cu.erase(ecm.ispp)
|
||||
interfer.fs.erase(ecm.ispp)
|
||||
interfer.push_id(ecm.ispp)
|
||||
if sz != ecms.size():
|
||||
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
@@ -107,7 +107,7 @@ signal interfer_new(ecm: interfer.Interfer)
|
||||
## [param ecm] - Новая помеха.[br]
|
||||
## [param ecms] - словарь помех.[br]
|
||||
## [param thrs] - словарь id помех и связанных с ними целей.[br]
|
||||
signal interfer_off(ecm: interfer.Interfer, ecms: Dictionary, thrs: Dictionary)
|
||||
signal interfer_off(ecm: interfer.Interfer)
|
||||
|
||||
|
||||
## Вызывается при нажатии отключить.
|
||||
|
||||
@@ -18,7 +18,7 @@ class Threat:
|
||||
var power: float ## Уровень принимаемого сигнала, дБм.
|
||||
var proto: String ## Тип протокола источника сигнала.
|
||||
var rkrp: String ## Рекомендуемый режим помехи.
|
||||
var rparams: String ## Рекомендуемые параметры помехи.
|
||||
var rparams: Dictionary ## Рекомендуемые параметры помехи.
|
||||
var salt: float ## Координаты старта, высота от уровня моря, м.
|
||||
var slat: float ## Координаты старта, широта в градусах.
|
||||
var slon: float ## Координаты старта, долгота в градусах.
|
||||
|
||||
Reference in New Issue
Block a user