Merge remote-tracking branch 'sasha/master'
This commit is contained in:
@@ -2,7 +2,7 @@ class_name navigation extends Node
|
||||
|
||||
## "Протокол №120-11435-09.PDF"
|
||||
|
||||
const ONLINE_TIMEOUT: = 5000 ## Время ожидания пакета, милисекунды
|
||||
const ONLINE_TIMEOUT: = 5000 ## Время ожидания пакета, миллисекунды
|
||||
const pow_2_30: = pow(2.0, 30.0)
|
||||
|
||||
## Источник данных навигации
|
||||
|
||||
@@ -153,10 +153,7 @@ func _ready() -> void:
|
||||
var unit_key = settings.get_unit_key(unit_name)
|
||||
units[unit_key] = new_unit
|
||||
units_udp[unit_key] = new_unit
|
||||
if len(st[2]) > 1:
|
||||
dst_ports[unit_key] = st[2][1]
|
||||
else:
|
||||
dst_ports[unit_key] = st[2][0]
|
||||
dst_ports[unit_key] = st[2][1] if len(st[2]) > 1 else st[2][0]
|
||||
|
||||
if proto in TCP_PROTO:
|
||||
var unit_tcp = TCP_PROTO[proto].new(unit_name)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
@tool
|
||||
class_name rep_settings extends Node
|
||||
class_name uarep_settings extends Node
|
||||
|
||||
## Параметры.
|
||||
|
||||
var settings_file = ProjectSettings.get_setting('application/config/settings_path', 'user://settings.json') # Путь к файлу с настройками
|
||||
## Настройки программы
|
||||
|
||||
var settings_program: Dictionary
|
||||
|
||||
@@ -57,6 +55,7 @@ const UM_MAX: = 55.0
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
var settings_file = settings.get_settings_file_path()
|
||||
var abs_path = ProjectSettings.globalize_path(settings_file)
|
||||
log.info('Путь к файлу настроек: \"%s\"' % abs_path)
|
||||
var file = FileAccess.open(settings_file, FileAccess.READ)
|
||||
@@ -103,6 +102,13 @@ func _ready() -> void:
|
||||
log.info('Не удалось прочитать значение \"%s\" из файла настроек, будет использовано значение по умолчанию' % key)
|
||||
|
||||
|
||||
## Возвращает полный путь к файлу с настройками
|
||||
func get_settings_file_path():
|
||||
return ProjectSettings.get_setting(
|
||||
'application/config/settings_path',
|
||||
'user://settings.json')
|
||||
|
||||
|
||||
## Возвращает ключ устройства.
|
||||
func get_unit_key(unit_name: String) -> Array:
|
||||
var item = UnitProfiles[unit_name]
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -35,7 +35,7 @@ func allways(val: bool, msg: String = '<не указано>'):
|
||||
get_tree().quit(Error.FAILED)
|
||||
|
||||
|
||||
func _check_index(obj, index) -> bool:
|
||||
func check_index(obj, index) -> bool:
|
||||
if obj is Dictionary:
|
||||
if obj.has(index):
|
||||
return true
|
||||
@@ -59,11 +59,11 @@ func get_value_by_path(obj, paths: Array, ret_val: Array):
|
||||
var index = paths.pop_at(0)
|
||||
ret_val[1] = false
|
||||
if paths.size():
|
||||
if _check_index(obj, index):
|
||||
if check_index(obj, index):
|
||||
ret_val[2] += 1
|
||||
get_value_by_path(obj[index], paths, ret_val)
|
||||
else:
|
||||
if _check_index(obj, index):
|
||||
if check_index(obj, index):
|
||||
ret_val[0] = obj[index]
|
||||
ret_val[1] = true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user