From 17460b5b0dd0095ea77f36a2498420dfe69b30e2 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 2 Dec 2025 12:44:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BC=D0=B5=D1=85=20=D0=B2=20=D0=BA=D0=B0=D0=BF=D1=81=20=D1=80?= =?UTF-8?q?=D0=BF=D0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/interfer.gd | 37 ++++++++++++++++++------------------- scripts/pribor-prd.gd | 2 +- scripts/trassa.gd | 4 ---- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 66db3599..4dcc22dc 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -205,7 +205,7 @@ func _ready() -> void: signaller.connect('interfer_new', Callable(self, 'on_interfer_new').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').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')) signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno')) @@ -335,10 +335,12 @@ func map_msvk_to_ecms(unit_instance: unit.Unit, ecms: Dictionary): var json_dic = unit_instance.json_dic if not json_dic.has('msvk'): return var msvk = unit_instance.json_dic.get('msvk', []) + var ispp_arr: Array = [] for dic_msvk in msvk: if dic_msvk is not Dictionary: continue if not dic_msvk.has('ispp'): continue var ispp = int(dic_msvk['ispp']) + ispp_arr.append(ispp) var errmsg = dic_msvk.get('errmsg', '') if errmsg: log.error('сеанс %d: \"%s\"' % [ispp, errmsg]) @@ -346,11 +348,17 @@ func map_msvk_to_ecms(unit_instance: unit.Unit, ecms: Dictionary): var ecm = ecms[ispp] ecm.set_from_dic(dic_msvk) call_deferred('emit_signal', 'interfer_update', ecm) - else: - var ecm = Interfer.new() - ecm.set_from_dic(dic_msvk) - ecm.krp = INTERFER_OFF - send_ecm(ecm, unit_instance) + 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) + ecms.erase(ecm.ispp) + thrs.erase(ecm.ispp) + cu.erase(ecm.ispp) + fs.erase(ecm.ispp) + push_id(ecm.ispp) + if sz != ecms.size(): + interfer.call_deferred('emit_signal', 'interfer_resized', ecms) ## Извлекает массив пространственно-частотных фильтров @@ -639,21 +647,12 @@ func get_krp(threat: threats.Threat): return krp -func on_interfer_off(ecm: Interfer, ecms): - var sz = ecms.size() - signaller.emit_signal('on_prog_ecm_off', ecm) - 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) - - -func interfer_off(ecm, unit_caps): +func on_interfer_off(ecm: Interfer, _ecms, unit_caps): ecm.krp = INTERFER_OFF send_ecm(ecm, unit_caps) + + +func interfer_off(ecm, _unit_caps): signaller.emit_signal('interfer_off', ecm) diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 3f86de24..e6385964 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -430,7 +430,7 @@ static func take_ecm_id(ecm_dic: Dictionary, device_name: String, current_lit: i ## Обработка состояния FS_WORK - проверка работы ФС func _handle_fs_work_state() -> void: - _set_status('Проверка связи сервиса КАПС РПБ') + _set_status('Проверка связи сервиса КАПС РПБ') _set_status('Ожидание выполнения помехи состояние %s литеры %s' % [ecms[current_ecm_key].svk, current_litera]) if current_ecm_key > 0 and ecms[current_ecm_key].svk == 1: if not flags.si_fs_input: diff --git a/scripts/trassa.gd b/scripts/trassa.gd index d9b0fbf6..cb8896fc 100644 --- a/scripts/trassa.gd +++ b/scripts/trassa.gd @@ -269,8 +269,6 @@ class Trassa extends unit.Unit: tx_stack[65] = 0 for ecm in ecms.values(): if ecm.krp == "srni1" and ecm.svk == 1: - ecm.krp = interfer.INTERFER_OFF - interfer.send_ecm(ecm, unit_caps) signaller.emit_signal('interfer_off', ecm) if jtids == 1: tx_stack[66] = 1 @@ -279,6 +277,4 @@ class Trassa extends unit.Unit: tx_stack[66] = 0 for ecm in ecms.values(): if ecm.krp == 'svi1' and ecm.svk == 1: - ecm.krp = interfer.INTERFER_OFF - interfer.send_ecm(ecm, unit_caps) signaller.emit_signal('interfer_off', ecm)