Merge remote-tracking branch 'sasha/master'

This commit is contained in:
MaD_CaT
2025-05-23 13:59:41 +03:00
11 changed files with 246 additions and 192 deletions

View File

@@ -1,30 +1,30 @@
class_name tcp5_p28 extends Node
## Реализация "Протокол информационного сопряжения.
## СПО АСУ изделия «МП550» с СПО 5П-28".
## СПО АСУ изделия МП-550 с СПО 5П-28
const ONLINE_TIMEOUT = 5000 ## Время ожидания пакета от 5П-28, мс.
const BUFFER_SIZE = 2048 ## Размер приёмного буфера для датаграмм.
## Тип модуляции для запаковки в пакет для 5П-28.
const MOD_TYPES: Array = ['',
'am',
'ook',
'ask',
'fm',
'qpsk',
'oqpsk',
'pi4qpsk',
'qam16',
'qam32',
'qam64',
'qam128',
'qam256',
'qam512',
'cpfsk',
'psk',
'ofdm',]
const MOD_TYPES: Array = [
'',
'am',
'ook',
'ask',
'fm',
'qpsk',
'oqpsk',
'pi4qpsk',
'qam16',
'qam32',
'qam64',
'qam128',
'qam256',
'qam512',
'cpfsk',
'psk',
'ofdm' ]
const CU_STATE: Dictionary = {
0: 2, # Подготовка к выполнению
@@ -42,19 +42,19 @@ class TCP5P28 extends unit.Unit:
const CMD_TYPE_IN: int = 3
const PR_STATE: Dictionary = {
'уарэп-эмс': [1, 1],
'уарэп-яу07-1н': [9, 8],
'уарэп-яу07-1в': [5, 4],
'уарэп-яу07-1к': [13, 12],
'уарэп-яу07-2н': [10, 9],
'уарэп-яу07-2в': [6, 5],
'уарэп-яу07-2к': [14, 13],
'уарэп-яу07-3н': [11, 10],
'уарэп-яу07-3в': [7, 6],
'уарэп-яу07-3к': [15, 14],
'уарэп-яу07-4н': [12, 11],
'уарэп-яу07-4в': [8, 7],
'уарэп-яу07-4к': [16, 15], }
'уарэп-эмс': [1, 1],
'уарэп-яу07-1н': [9, 8],
'уарэп-яу07-1в': [5, 4],
'уарэп-яу07-1к': [13, 12],
'уарэп-яу07-2н': [10, 9],
'уарэп-яу07-2в': [6, 5],
'уарэп-яу07-2к': [14, 13],
'уарэп-яу07-3н': [11, 10],
'уарэп-яу07-3в': [7, 6],
'уарэп-яу07-3к': [15, 14],
'уарэп-яу07-4н': [12, 11],
'уарэп-яу07-4в': [8, 7],
'уарэп-яу07-4к': [16, 15] }
signal get_threats(unit: TCP5P28) ## Сигнал запрос целей.
signal get_interfers(unit: TCP5P28) ## Запрос состояния выполнения целеуказания.
@@ -125,7 +125,7 @@ class TCP5P28 extends unit.Unit:
var data_len = 12 # длинна блока данных в байтах
data.resize(data_len)
data.encode_u16(0, 0) # Код ошибки
data.encode_u16(2, len(interfers)) # Количество целей
data.encode_u16(2, interfers.size()) # Количество целей
data.encode_u32(4, uarep_state) # Состояние УА-РЕП
data.encode_u32(8, uarep_line) # Состояние линий связи
var cu_data: PackedByteArray = []
@@ -136,15 +136,11 @@ class TCP5P28 extends unit.Unit:
continue
var cu = ecms[id]
cu_data.encode_u16(0, cu.ispp)
var state: int
if CU_STATE.has(cu.svk):
state = CU_STATE[cu.svk]
else:
state = 9
var state: int = CU_STATE[cu.svk] if CU_STATE.has(cu.svk) else 9
cu_data.encode_u8(2, state) # Состояние выполнения команды
cu_data.encode_u8(3, 0xFF) # Эффективность работы помехи
data.append_array(cu_data)
var data_to_send: PackedByteArray = create_header(data_len + 4 * len(interfers))
var data_to_send: PackedByteArray = create_header(data_len + 4 * interfers.size())
data_to_send.append_array(data)
tx_stack.append(data_to_send)
@@ -195,7 +191,7 @@ class TCP5P28 extends unit.Unit:
func to_cp866(proto: String, th_data: PackedByteArray):
var cp866_proto: PackedByteArray = proto.to_ascii_buffer()
cp866_proto.resize(36)
for i in len(cp866_proto):
for i in cp866_proto.size():
th_data[28 + i] = cp866_proto[i]
func set_interfer(data: PackedByteArray):