Merge pull request 'master' (#49) from MaD_CaT/uarep-ctl:master into master
Reviewed-on: http://gitea.srez.local:3000/sasha80/uarep-ctl/pulls/49
This commit is contained in:
@@ -29,7 +29,6 @@ interfer/default_color0=Color(0.38, 0.47, 0.51, 1)
|
||||
interfer/default_color1=Color(0.39, 0.44, 0.5, 1)
|
||||
interfer/select_color=Color(1, 1, 1, 1)
|
||||
interfer/interfer_color=Color(0.9, 0.1, 0.25, 0.9)
|
||||
interfer/resend_timeout=1000.0
|
||||
config/external_cu=false
|
||||
config/unit_rr_request_period=20.0
|
||||
config/kems_files_path="user://kems/"
|
||||
|
||||
@@ -37,6 +37,12 @@ var _pressed: = false
|
||||
$button.set_text(val)
|
||||
|
||||
|
||||
@export var btn_tooltip: String = '':
|
||||
set(val):
|
||||
btn_tooltip = val
|
||||
$button.set_tooltip_text(val)
|
||||
|
||||
|
||||
@export var disabled: bool = false:
|
||||
set(val):
|
||||
disabled = val
|
||||
|
||||
@@ -57,6 +57,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Включает принудительную помеху"
|
||||
strips_rotation = 15.0
|
||||
text = "СРН"
|
||||
btn_tooltip = "Включает подавление радионавигации"
|
||||
metadata/rfi_name = "srn"
|
||||
|
||||
[node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -64,8 +65,10 @@ editor_description = "Кнопка для принудительного вкл
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "Включает подавление каналов связи типа JTIDS"
|
||||
strips_rotation = 15.0
|
||||
text = "JTIDS"
|
||||
btn_tooltip = "Включает подавление радиосвязи типа JTIDS"
|
||||
metadata/rfi_name = "sprs"
|
||||
|
||||
[node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -75,6 +78,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД"
|
||||
strips_rotation = 15.0
|
||||
text = "КУПД"
|
||||
btn_tooltip = "Включает подавление каналов управления передачи данных"
|
||||
metadata/rfi_name = "kupd"
|
||||
|
||||
[node name="btn_panika" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -84,6 +88,7 @@ size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД"
|
||||
strips_rotation = 15.0
|
||||
text = "Паника"
|
||||
btn_tooltip = "Включает подавление JTIDS и КУПД"
|
||||
metadata/rfi_name = "<off>"
|
||||
|
||||
[node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("4_7ys3c")]
|
||||
@@ -92,4 +97,5 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 15.0
|
||||
text = "Очистить"
|
||||
btn_tooltip = "Выключает все сеансы помех"
|
||||
metadata/rfi_name = "<off>"
|
||||
|
||||
@@ -13,6 +13,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "Откл."
|
||||
btn_tooltip = "Выключает помеху"
|
||||
disabled = true
|
||||
metadata/rfi_name = "off"
|
||||
|
||||
@@ -22,6 +23,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "МЧМ-1"
|
||||
btn_tooltip = "Включает помеху МЧМ-1"
|
||||
disabled = true
|
||||
metadata/rfi_name = "mchm1"
|
||||
|
||||
@@ -31,6 +33,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СРН-И1"
|
||||
btn_tooltip = "Включает помеху СРН-И1"
|
||||
disabled = true
|
||||
metadata/rfi_name = "srni1"
|
||||
|
||||
@@ -40,6 +43,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СРН-М2"
|
||||
btn_tooltip = "Включает помеху СРН-М2"
|
||||
disabled = true
|
||||
metadata/rfi_name = "srnm2"
|
||||
|
||||
@@ -49,6 +53,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СРН-GPS"
|
||||
btn_tooltip = "Включает помеху СРН-GPS"
|
||||
disabled = true
|
||||
metadata/rfi_name = "srngps"
|
||||
|
||||
@@ -58,6 +63,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-М4"
|
||||
btn_tooltip = "Включает помеху МП-М4"
|
||||
disabled = true
|
||||
metadata/rfi_name = "pdm4"
|
||||
|
||||
@@ -67,6 +73,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-М2"
|
||||
btn_tooltip = "Включает помеху МП-М2"
|
||||
disabled = true
|
||||
metadata/rfi_name = "pdm2"
|
||||
|
||||
@@ -76,6 +83,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ЛЧМ-1"
|
||||
btn_tooltip = "Включает помеху ЛЧМ-1"
|
||||
disabled = true
|
||||
metadata/rfi_name = "lchm1"
|
||||
|
||||
@@ -85,6 +93,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ЛЧМ-2"
|
||||
btn_tooltip = "Включает помеху ЛЧМ-2"
|
||||
disabled = true
|
||||
metadata/rfi_name = "lchm2"
|
||||
|
||||
@@ -94,6 +103,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-М4С"
|
||||
btn_tooltip = "Включает помеху ПД-М4C"
|
||||
disabled = true
|
||||
metadata/rfi_name = "pdm4s"
|
||||
|
||||
@@ -103,6 +113,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ПД-ЧМ"
|
||||
btn_tooltip = "Включает помеху ПД-ЧМ"
|
||||
disabled = true
|
||||
metadata/rfi_name = "pdchm"
|
||||
|
||||
@@ -112,6 +123,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СВ-И1"
|
||||
btn_tooltip = "Включает помеху СВ-И1"
|
||||
disabled = true
|
||||
metadata/rfi_name = "svi1"
|
||||
|
||||
@@ -121,6 +133,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "K1"
|
||||
btn_tooltip = "Включает помеху К1"
|
||||
disabled = true
|
||||
metadata/rfi_name = "k1"
|
||||
|
||||
@@ -130,6 +143,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "СВ-М2"
|
||||
btn_tooltip = "Включает помеху СВ-М2"
|
||||
disabled = true
|
||||
metadata/rfi_name = "svm2"
|
||||
|
||||
@@ -139,6 +153,7 @@ size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ОЗП-1"
|
||||
btn_tooltip = "Включает помеху ОЗП-1"
|
||||
disabled = true
|
||||
metadata/rfi_name = "ozp1"
|
||||
|
||||
@@ -147,6 +162,7 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
strips_rotation = 30.0
|
||||
text = "ЕРЛС"
|
||||
text = "ЕЛРС"
|
||||
btn_tooltip = "Включает помеху ЕЛРС"
|
||||
disabled = true
|
||||
metadata/rfi_name = "eprls"
|
||||
metadata/rfi_name = "elrs"
|
||||
|
||||
@@ -745,7 +745,7 @@ func _on_threat_new(th) -> void:
|
||||
|
||||
|
||||
func _on_threat_update(th) -> void:
|
||||
var target = get_parent().get_node(str(th.id))
|
||||
var target = get_parent().get_node_or_null(str(th.id))
|
||||
if not target:
|
||||
return
|
||||
var new_position = lonlat_to_world(th.lon, th.lat)
|
||||
|
||||
@@ -190,14 +190,14 @@ func _on_control_prd_pressed() -> void:
|
||||
# Показываем прогресс бар
|
||||
$pribor_uf/control_progress.visible = true
|
||||
$pribor_uf/control_progress.value = 0
|
||||
|
||||
|
||||
# Создаем твин для анимации с плавным началом и концом
|
||||
var tween = create_tween()
|
||||
tween.tween_property($pribor_uf/control_progress, \"value\", 100, 2.0)\\
|
||||
.set_trans(Tween.TRANS_SINE)\\
|
||||
.set_ease(Tween.EASE_IN_OUT)
|
||||
|
||||
tween.tween_callback(func():
|
||||
|
||||
tween.tween_callback(func():
|
||||
$pribor_uf/control_progress.visible = false
|
||||
$pribor_uf.state = uf_control.serviceability_uf
|
||||
)
|
||||
|
||||
@@ -63,7 +63,9 @@ const SETTING_TABLE = [
|
||||
['уарэп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'],
|
||||
['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'],
|
||||
['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ],
|
||||
['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ] ]
|
||||
['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ],
|
||||
['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'],
|
||||
['Время повторной отправки помехи', TableEdit, TableEdit, 'Время повторной отправки помехи, с'], ]
|
||||
|
||||
## TODO: Придумать как избавиться от индексов
|
||||
## Индексы строк таблицы.
|
||||
|
||||
@@ -105,7 +105,7 @@ var SIGNALS_CONNECTIONS = [
|
||||
[signaller, 'interfer_prinuditelno', 'on_interfer_prinuditelno'],
|
||||
[signaller, 'interfer_selected', 'on_interfer_selected'],
|
||||
[signaller, 'map_user_panning', 'on_user_panning'],
|
||||
[signaller, 'on_prog_ecm_off', 'on_interfer_new'],
|
||||
[signaller, 'prog_ecm_off', 'on_interfer_new'],
|
||||
[signaller, 'rto_threat_sel', 'on_rto_threat_sel'],
|
||||
[signaller, 'rto_threat_unsel', 'on_rto_threat_unsel'],
|
||||
[signaller, 'sector_klaster', 'sector_klaster'],
|
||||
@@ -233,12 +233,22 @@ func connect_all() -> void:
|
||||
else:
|
||||
var ers = error_string(rc)
|
||||
push_error('%s: %s %s %s' % [ers, item[0], item[1], item[2]])
|
||||
signaller.emit_signal('connect_work_signal')
|
||||
for th in thrs_dict.values():
|
||||
var bip = Bip.instantiate()
|
||||
bip.name = '%d' % th.id
|
||||
map_threat_to_bip(th, bip)
|
||||
add_child(bip)
|
||||
|
||||
|
||||
func disconnect_all() -> void:
|
||||
for item in signal_conections:
|
||||
item[0].disconnect(item[1], item[2])
|
||||
signal_conections.clear()
|
||||
var bips: Array = get_children().filter(func(item): return item.name.is_valid_int())
|
||||
for bip in bips:
|
||||
remove_child(bip)
|
||||
bip.free()
|
||||
|
||||
|
||||
func sector_klaster(sector_data):
|
||||
@@ -559,7 +569,7 @@ func set_fs_color(ecms):
|
||||
|
||||
|
||||
func update_fs_colors():
|
||||
var fs_colors = $canvas.fs_default_colors
|
||||
var fs_colors = $canvas.fs_default_colors.duplicate()
|
||||
for key in fs_active.keys():
|
||||
fs_colors[key] = color_ecm
|
||||
for key in fs_emit.keys():
|
||||
|
||||
@@ -19,7 +19,7 @@ const ITERFER_MODE = {
|
||||
'svm2': [INTERFER_IQFILE, SVM2_PARAMS, 21],
|
||||
'k1': [INTERFER_IQFILE, K1_PARAMS, 50],
|
||||
'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51],
|
||||
'eprls': [INTERFER_IQFILE, EPRLS_PARAMS, 52] }
|
||||
'elrs': [INTERFER_IQFILE, ELRS_PARAMS, 52] }
|
||||
|
||||
const RECOMMEND_INTERFER = {
|
||||
'ПСП + ФМ-2': 'srni1',
|
||||
@@ -75,7 +75,7 @@ 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',
|
||||
const ELRS_PARAMS = {'files' : 'ELRS.pcm',
|
||||
'call_proc' : 'call_all_diap',
|
||||
'par_names' : ['freq', 'filename']}
|
||||
# Файл : Ключ (ширина): ['имя файла']
|
||||
@@ -94,6 +94,9 @@ const INTERFER_OFF = 'off'
|
||||
const INTERFER_IQFILE = 'IQ-файл'
|
||||
const POW_DEFAULT: float = 50.0
|
||||
const PERIOD_DEFAULT = 7.5
|
||||
const MIN_WIDTH_COEF = 1.0
|
||||
const MIN_RESEND_TIMEOUT = 0.05
|
||||
|
||||
var msg6_num: int = 0 ## Счётчик сообщений "тип 6"
|
||||
var msg8_num: int = 0 ## Счётчик сообщений "тип 8"
|
||||
var id_array: Array ## Массив id воздействий.
|
||||
@@ -109,7 +112,11 @@ var gos_flag = true ## Флаг работать п
|
||||
var gos_protocols: PackedStringArray ## Список протоколов своих целей
|
||||
var gos_nmfs: Array ## Список номеров блоков ФС для которых запрещена работа
|
||||
var fs_closed: Dictionary ## Словарь секторов запрета
|
||||
var width_coef: float = 1.5 ## Коэффициент расширения полосы
|
||||
var now: = 0.0 ## Время с момента запуска
|
||||
var resend_timeout: float = 1.0 ## Время повторной отправки команды
|
||||
|
||||
signal send_ecms(time_now) ## Сигнал отправки помех, если настало время
|
||||
|
||||
## Режимы работы АФСП и БПО (Протокол ТНИИС-СТЦ, пункт 2.5.10)
|
||||
enum AFSP_BPO_MODE {
|
||||
@@ -127,7 +134,7 @@ class Interfer:
|
||||
var params: = {} ## Параметры помехи.
|
||||
var get_params: Array[String] ## Запрос массива параметров (список запрошенных параметров).
|
||||
var retss: int ## Значение счётчика сообщения в котором был произведён запрос массива параметров.
|
||||
var tick_tx: int ## Тик время обновления цели, мс.
|
||||
var tick_tx: float ## Тик время обновления цели, мс.
|
||||
var source_interfer: String = '' ## Тип объекта по которой поставлена помеха.
|
||||
var modulation: bool ## Модуляция для включения усилителей
|
||||
var um: float ## Угол места для помехи.
|
||||
@@ -199,20 +206,15 @@ func _ready() -> void:
|
||||
id_array.append(i + 1)
|
||||
var unit_caps = network.get_unit_instance('уарэп-капсрпб')
|
||||
var unit_5p28 = network.get_unit_instance('уарэп-5п28')
|
||||
var timer_check_state: = Timer.new()
|
||||
add_child(timer_check_state)
|
||||
var resend_timeout = ProjectSettings.get_setting('application/interfer/resend_timeout', 1000.0)
|
||||
var ecms: Dictionary = {} ## Словарь помех.
|
||||
var seczaps: Dictionary = {} ## Словарь секторов запрета
|
||||
timer_check_state.connect('timeout', Callable(self, 'on_timer_check_state').bind(unit_caps, ecms, resend_timeout))
|
||||
timer_check_state.start(resend_timeout / 1000.0)
|
||||
unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms, seczaps))
|
||||
unit_5p28.connect('get_interfers', Callable(self, 'on_get_interfers').bind(unit_5p28, ecms))
|
||||
signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit_caps, ecms))
|
||||
signaller.connect('interfer_rcv', Callable(self, 'on_interfer_rcv').bind(unit_5p28, unit_caps, ecms))
|
||||
signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind(unit_caps))
|
||||
signaller.connect('interfer_new', Callable(self, 'on_interfer_new'))
|
||||
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('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms))
|
||||
signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind(ecms, unit_caps))
|
||||
signaller.connect('manual_control', Callable(self, 'on_manual_control'))
|
||||
signaller.connect('full_auto', Callable(self, 'on_full_auto'))
|
||||
@@ -224,10 +226,11 @@ func _ready() -> void:
|
||||
signaller.connect('update_fs_closed', Callable(self, 'on_update_fs_closed'))
|
||||
threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit_caps))
|
||||
threats.connect('threats_resized', Callable(self, 'on_threats_resized'))
|
||||
threats.connect('threat_update', Callable(self, 'on_threats_update').bind(ecms, unit_caps))
|
||||
threats.connect('threat_update', Callable(self, 'on_threats_update').bind(ecms))
|
||||
ProjectSettings.connect('settings_changed', on_settings_changed)
|
||||
var unit_nav: = network.get_unit_instance('навигация')
|
||||
unit_nav.connect('data_received', on_nav_data_received.bind(unit_caps))
|
||||
connect('send_ecms', Callable(self, 'on_send_ecms').bind(ecms, unit_caps))
|
||||
call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
|
||||
@@ -260,16 +263,7 @@ func on_nav_data_received(coords: Dictionary, unit_caps):
|
||||
msg8_num %= 0xffffffff
|
||||
|
||||
|
||||
## Проверяет состояние отправки пакета и если не доставлен, повторяет отправку.
|
||||
func on_timer_check_state(unit_instance, ecms, resend_timeout) -> void:
|
||||
var tick = Time.get_ticks_msec()
|
||||
for ecm in ecms.values():
|
||||
if (tick - ecm.tick_tx) >= resend_timeout:
|
||||
send_ecm(ecm, unit_instance)
|
||||
ecm.tick_tx = tick
|
||||
|
||||
|
||||
func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> void:
|
||||
func on_th_aoa_update(threats: Dictionary, ecms: Dictionary) -> void:
|
||||
gos_nmfs.clear()
|
||||
for thr in threats.values():
|
||||
var fs_arr: Array = []
|
||||
@@ -301,12 +295,8 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v
|
||||
ecm.params['freq'] = thr.freq
|
||||
ecm.kni = fposmod(thr.aoa - course, 360)
|
||||
call_ecm_proc(ecm)
|
||||
if ecm.nmfs in gos_nmfs:
|
||||
if ecm.nmfs in gos_nmfs or prd.fs_caps_id[ecm.nmfs] in fs_closed:
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
elif prd.fs_caps_id[ecm.nmfs] in fs_closed:
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
else:
|
||||
send_ecm(ecm, unit_instance)
|
||||
signaller.emit_signal('fs_update_color', ecms)
|
||||
prd.update_fs_state(ecms, trenazh_mode)
|
||||
|
||||
@@ -363,7 +353,7 @@ func map_msvk_to_ecms(unit_instance: unit.Unit, ecms: Dictionary):
|
||||
for ecm in ecms.values():
|
||||
if (ecm.ispp not in ispp_arr) and (ecm.krp == INTERFER_OFF):
|
||||
var sz = ecms.size()
|
||||
signaller.emit_signal('on_prog_ecm_off', ecm)
|
||||
signaller.emit_signal('prog_ecm_off', ecm)
|
||||
ecms.erase(ecm.ispp)
|
||||
thrs.erase(ecm.ispp)
|
||||
cu.erase(ecm.ispp)
|
||||
@@ -405,7 +395,7 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
|
||||
kni += 360.0
|
||||
var id = item.id
|
||||
param['freq'] = item.freq
|
||||
param['width'] = item.width * 1.5
|
||||
param['width'] = item.width * width_coef
|
||||
if (item.rkrp != '') and item.fflags.rkrp and auto_enabled:
|
||||
var krp = get_krp(item)
|
||||
if krp != '':
|
||||
@@ -456,7 +446,7 @@ func on_interfer_rcv(interfer_params: Array, unit0, unit_caps, ecms) -> void:
|
||||
unit0.on_interfer_accept(err)
|
||||
|
||||
|
||||
func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interfer, power) -> void:
|
||||
func interfer_create(_u, interfer_name, ecms, param, kni, id, dict, source_interfer, power) -> void:
|
||||
var sz = ecms.size()
|
||||
var ispp: int = 0
|
||||
param['dur'] = 1.0 # Необходимо добавить параметры управления
|
||||
@@ -499,8 +489,6 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf
|
||||
if interfer_name == 'off':
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
thrs.erase(ispp)
|
||||
ecm.tick_tx = Time.get_ticks_msec()
|
||||
send_ecm(ecm, u)
|
||||
if sz != ecms.size():
|
||||
call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
@@ -586,7 +574,7 @@ func on_threats_resized(th_dic):
|
||||
thrs_dict = th_dic
|
||||
|
||||
|
||||
func on_threats_update(threat, ecms, unit_caps):
|
||||
func on_threats_update(threat, ecms):
|
||||
var th_id = threat.id
|
||||
var ecm = null
|
||||
for ecm_i in thrs.keys():
|
||||
@@ -594,7 +582,7 @@ func on_threats_update(threat, ecms, unit_caps):
|
||||
ecm = ecms[ecm_i]
|
||||
ecm.priority = threat.priority
|
||||
ecm.params['freq'] = threat.freq
|
||||
var width = threat.width * 1.5
|
||||
var width = threat.width * width_coef
|
||||
ecm.params['width'] = width
|
||||
check_width(ecm.params)
|
||||
if (threat.rkrp != '') and threat.fflags.rkrp and auto_enabled:
|
||||
@@ -610,8 +598,6 @@ func on_threats_update(threat, ecms, unit_caps):
|
||||
if ecm.kni < 0:
|
||||
ecm.kni += 360
|
||||
set_nmfs(ecm)
|
||||
if ecm != null:
|
||||
send_ecm(ecm, unit_caps)
|
||||
|
||||
|
||||
func find_threat(freq: int, aoa: float):
|
||||
@@ -634,9 +620,9 @@ func set_rparams(threat: threats.Threat, params: Dictionary):
|
||||
else:
|
||||
params['freq'] = threat.freq
|
||||
if threat.rparams.has('width'):
|
||||
params['width'] = threat.rparams['width'] * 1.5
|
||||
params['width'] = threat.rparams['width'] * width_coef
|
||||
else:
|
||||
params['width'] = threat.width * 1.5
|
||||
params['width'] = threat.width * width_coef
|
||||
check_width(params)
|
||||
if threat.rparams.has('filename'):
|
||||
params['filename'] = threat.rparams['filename']
|
||||
@@ -674,7 +660,7 @@ func on_interfer_off(ecm: Interfer, ecms, unit_caps):
|
||||
send_ecm(ecm, unit_caps)
|
||||
if not unit_caps.online:
|
||||
var sz = ecms.size()
|
||||
signaller.emit_signal('on_prog_ecm_off', ecm)
|
||||
signaller.emit_signal('prog_ecm_off', ecm)
|
||||
ecms.erase(ecm.ispp)
|
||||
thrs.erase(ecm.ispp)
|
||||
cu.erase(ecm.ispp)
|
||||
@@ -684,15 +670,18 @@ func on_interfer_off(ecm: Interfer, ecms, unit_caps):
|
||||
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
|
||||
func on_interfer_new(ecm, unit_caps):
|
||||
func on_interfer_new(ecm):
|
||||
call_ecm_proc(ecm)
|
||||
send_ecm(ecm, unit_caps)
|
||||
|
||||
|
||||
func on_settings_changed():
|
||||
gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true)
|
||||
var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '')
|
||||
gos_protocols = protocols.split(",", true)
|
||||
width_coef = float(ProjectSettings.get_setting('application/config/Коэффициент ширины полосы излучения', 1.5))
|
||||
if width_coef < MIN_WIDTH_COEF: width_coef = MIN_WIDTH_COEF
|
||||
resend_timeout = float(ProjectSettings.get_setting('application/config/Время повторной отправки помехи', 1.0))
|
||||
if resend_timeout < MIN_RESEND_TIMEOUT: resend_timeout = MIN_RESEND_TIMEOUT
|
||||
|
||||
|
||||
func call_ecm_proc(ecm):
|
||||
@@ -721,3 +710,15 @@ func set_th_emit(th: threats.Threat, ecm: Interfer):
|
||||
func check_width(param: Dictionary):
|
||||
if (param['width'] < settings.WIDTH_MIN): param['width'] = settings.WIDTH_MIN
|
||||
elif (param['width'] > settings.WIDTH_MAX): param['width'] = settings.WIDTH_MAX
|
||||
|
||||
|
||||
func on_send_ecms(time_now, ecms, unit_caps):
|
||||
for ecm in ecms.values():
|
||||
if (time_now - ecm.tick_tx) >= resend_timeout:
|
||||
send_ecm(ecm, unit_caps)
|
||||
ecm.tick_tx = time_now
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
now += delta
|
||||
emit_signal('send_ecms', now)
|
||||
|
||||
@@ -227,4 +227,8 @@ signal start_contol_device()
|
||||
|
||||
## Вызывается при программном отключении помехи.[br]
|
||||
## [param ecm] - выключаемая помеха ([b]true[/b]
|
||||
signal on_prog_ecm_off(ecm: interfer.Interfer)
|
||||
signal prog_ecm_off(ecm: interfer.Interfer)
|
||||
|
||||
|
||||
## Вызывается при подключении обработчиков в режиме работа.[br]
|
||||
signal connect_work_signal()
|
||||
|
||||
@@ -71,6 +71,7 @@ func _ready() -> void:
|
||||
signaller.connect('rto_threat_unsel_all', Callable(self, 'on_rto_threat_unsel_all').bind(threats))
|
||||
signaller.connect('threat_selected', Callable(self, 'on_threat_selected').bind(threats))
|
||||
signaller.connect('interfer_init', Callable(self, 'on_interfer_init').bind(threats))
|
||||
signaller.connect('connect_work_signal', Callable(self, 'on_connect_work_signal').bind(threats))
|
||||
|
||||
ProjectSettings.connect('settings_changed', on_settings_changed.bind(threats))
|
||||
|
||||
@@ -166,7 +167,7 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary):
|
||||
call_deferred('emit_signal', 'threats_resized', threats)
|
||||
|
||||
|
||||
func on_settings_changed(ths):
|
||||
func on_settings_changed(ths: Dictionary):
|
||||
gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true)
|
||||
var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '')
|
||||
gos_protocols = protocols.split(",", true)
|
||||
@@ -180,3 +181,7 @@ func set_gos(th: Threat):
|
||||
th.gos = false
|
||||
elif (th.proto in gos_protocols) and th.fflags.proto:
|
||||
th.gos = true
|
||||
|
||||
|
||||
func on_connect_work_signal(ths: Dictionary):
|
||||
emit_signal('threats_resized', ths)
|
||||
|
||||
Reference in New Issue
Block a user