Рефакторинг. Аннотации GDScript
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
extends Node
|
||||
|
||||
const ONLINE_TIMEOUT = 5.0 # Время ожидания пакета от ячейки, секунды
|
||||
const BUFFER_SIZE = 2048
|
||||
## Реализация "Протокол информационного сопряжения
|
||||
## СПО АСУ изделия «МП‑550» с СПО «Управления КАПС РПБ»"
|
||||
|
||||
const ONLINE_TIMEOUT = 5.0 ## Время ожидания пакета от ячейки, секунды
|
||||
const BUFFER_SIZE = 2048 ## Размер приёмного буфера для датаграмм
|
||||
|
||||
|
||||
class CapsRpb:
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
extends Node
|
||||
|
||||
## Параметры
|
||||
|
||||
## Профили внешних устройств
|
||||
@export var UnitProfiles: = { \
|
||||
# Название Протокол Адрес Порт Широков. Привяз. Комментарий
|
||||
'уарэп-яу07-частный': ['yau07rx', '127.0.0.1', 50079, false, true, 'IP-адрес на котором принимают частные сообщения от ЯУ-07'],
|
||||
@@ -23,6 +25,7 @@ extends Node
|
||||
'уарэп-щ3': ['uart', '/dev/stty0', 115200, 1, 1, false, 1000, 'Прибор Щ3'] } # скорость, стартовых, стоповых, чётность, таймаут в мкс
|
||||
|
||||
|
||||
## Параметры цели
|
||||
@export var ThreatParams = {
|
||||
'time_lost': [5.0, 'Время после последнего обновления в с, через которое цель считается потерянной'],
|
||||
'freq_min': [200.0, 'Нижняя рабочая частота, МГЦ'],
|
||||
@@ -34,6 +37,7 @@ extends Node
|
||||
func _ready() -> void: Log.info('Модуль настроек готов')
|
||||
|
||||
|
||||
## Возвращает ключ устройства
|
||||
func get_unit_key(unit_name: String) -> Array:
|
||||
assert(unit_name in UnitProfiles, 'ошибка: нет такого устройства "%s"' % unit_name)
|
||||
var item = UnitProfiles[unit_name]
|
||||
|
||||
@@ -1,28 +1,31 @@
|
||||
extends Node
|
||||
|
||||
##
|
||||
|
||||
|
||||
## Цель
|
||||
class Threat:
|
||||
var alt: float # Текущая высота, метры.
|
||||
var aoa: float # Курсовой угол на источник сигнала, градусы.
|
||||
var atick: float # Тик обнаружения.
|
||||
var baud: float # Модуляционная скорость.
|
||||
var fflags: Dictionary # Флаги достоверности полей.
|
||||
var freq: float # Частота несущей или центральная частота, МГц.
|
||||
var freqm: String # Режим смены частоты.
|
||||
var lat: float # Текущие координаты, долгота в градусах.
|
||||
var lon: float # Текущие координаты, широта в градусах.
|
||||
var power: float # Уровень принимаемого сигнала, дБм.
|
||||
var proto: String # Тип протокола источника сигнала.
|
||||
var rkrp: String # Рекомендуемый режим помехи.
|
||||
var rparams: String # Рекомендуемые параметры помехи.
|
||||
var salt: float # Координаты старта, высота от уровня моря, м.
|
||||
var slat: float # Координаты старта, широта в градусах.
|
||||
var slon: float # Координаты старта, долгота в градусах.
|
||||
var tick: int # Время приёма сигнала, мс.
|
||||
var tmod: String # Тип модуляции.
|
||||
var utime: Dictionary # Время крайнего обновления.
|
||||
var width: float # Ширина занимаемого диапазона частот, МГц.
|
||||
var id: int # Идентификатор цел.
|
||||
var alt: float ## Текущая высота, метры.
|
||||
var aoa: float ## Курсовой угол на источник сигнала, градусы.
|
||||
var atick: float ## Тик обнаружения.
|
||||
var baud: float ## Модуляционная скорость.
|
||||
var fflags: Dictionary ## Флаги достоверности полей.
|
||||
var freq: float ## Частота несущей или центральная частота, МГц.
|
||||
var freqm: String ## Режим смены частоты.
|
||||
var lat: float ## Текущие координаты, долгота в градусах.
|
||||
var lon: float ## Текущие координаты, широта в градусах.
|
||||
var power: float ## Уровень принимаемого сигнала, дБм.
|
||||
var proto: String ## Тип протокола источника сигнала.
|
||||
var rkrp: String ## Рекомендуемый режим помехи.
|
||||
var rparams: String ## Рекомендуемые параметры помехи.
|
||||
var salt: float ## Координаты старта, высота от уровня моря, м.
|
||||
var slat: float ## Координаты старта, широта в градусах.
|
||||
var slon: float ## Координаты старта, долгота в градусах.
|
||||
var tick: int ## Время приёма сигнала, мс.
|
||||
var tmod: String ## Тип модуляции.
|
||||
var utime: Dictionary ## Время крайнего обновления.
|
||||
var width: float ## Ширина занимаемого диапазона частот, МГц.
|
||||
var id: int ## Идентификатор цели.
|
||||
|
||||
func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false)
|
||||
func _to_string() -> String: return 'номер:%d пеленг:%0.1f частота:%0.1f МГц' % [id, aoa, freq]
|
||||
@@ -36,11 +39,7 @@ signal threat_new(threats: Dictionary, th: Threat)
|
||||
signal threat_lost(threats: Dictionary, th: Threat)
|
||||
signal threat_update(threats: Dictionary, th: Threat)
|
||||
|
||||
var threats = {}
|
||||
"""
|
||||
Список целей. Индекс - <источник цели>:<номер цели>
|
||||
Источник цели может быть: 'RPB', 'SIGMA', 'RLKS', 'MP405'
|
||||
"""
|
||||
var threats = {} ## Список целей. Индекс - <источник цели>:<номер цели> Источник цели может быть: 'RPB', 'SIGMA', 'RLKS', 'MP405'
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -54,6 +53,7 @@ func _ready() -> void:
|
||||
timer_check_lost.start(REPSettings.ThreatParams.time_lost[0] / 2.0)
|
||||
|
||||
|
||||
## Периодически проверяет приборы на связи
|
||||
func on_timer_check_lost(unit, time_lost: int):
|
||||
""" Периодически проверяет приборы на связи """
|
||||
for th in threats.values():
|
||||
@@ -62,6 +62,7 @@ func on_timer_check_lost(unit, time_lost: int):
|
||||
call_deferred('emit_signal', 'threat_lost', threats, th)
|
||||
|
||||
|
||||
## Приём целей
|
||||
func on_data_capsrpb_received(unit: capsrpb.CapsRpb):
|
||||
if 'mis' not in unit.json_dic:
|
||||
return
|
||||
|
||||
@@ -2,6 +2,11 @@ extends Node
|
||||
|
||||
## Простые часто используемые функции
|
||||
|
||||
|
||||
## Возвращает true, если val число, false - если иначе
|
||||
func type_is_num(val) -> bool: return (typeof(val) == TYPE_INT) or (typeof(val) == typeof(0.0))
|
||||
|
||||
|
||||
## Производит преобразование из угла в радианы
|
||||
func radians(val: float): return (val * PI) / 180.0
|
||||
|
||||
@@ -34,7 +39,7 @@ func clip_value(val, val_min, val_max):
|
||||
return val
|
||||
|
||||
|
||||
## Возвращает массив с именами членов класса
|
||||
## Возвращает массив с именами членов класса [param obj]
|
||||
func get_members_names(obj: Object) -> Array:
|
||||
var pl = obj.get_property_list()
|
||||
var names: = Array()
|
||||
@@ -42,16 +47,17 @@ func get_members_names(obj: Object) -> Array:
|
||||
return names
|
||||
|
||||
|
||||
## Проверяет, что заданный массив похож на ip-адрес
|
||||
func assert_array_ipaddr(val: Array):
|
||||
""" Выкидывает исключение, если массив не содержит ip-адрес """
|
||||
assert(val.size() == 2)
|
||||
assert(val[0] is String)
|
||||
assert(val[1] is int)
|
||||
assert((0 < val[1]) and (val[1] < 65536))
|
||||
## Проверяет, что заданный массив [param val] похож на ip-адрес
|
||||
func is_array_ipaddr(val: Array):
|
||||
return (val.size() == 2) \
|
||||
and (val[0] is String) \
|
||||
and (val[1] is int) \
|
||||
and (0 < val[1]) \
|
||||
and (val[1] < 65536)
|
||||
|
||||
|
||||
## Преобразует декартовые координаты в полярные
|
||||
## Преобразует декартовые координаты в полярные. [param pos0]
|
||||
## - координаты центра, [param pos] - координаты точки
|
||||
func map_dec_to_rad(pos0: Vector2, pos: Vector2) -> Vector2:
|
||||
var x1: float = pos.x - pos0.x
|
||||
var y1: float = pos.y - pos0.y
|
||||
@@ -64,11 +70,6 @@ func map_range(val: float, a0: float, a1: float, b0: float, b1: float) -> float:
|
||||
return (((val - a0) * (b1 - b0)) / (a1 - a0)) + b0
|
||||
|
||||
|
||||
## Возвращает true, если val число, false - если иначе
|
||||
func type_is_num(val) -> bool:
|
||||
return (typeof(val) == TYPE_INT) or (typeof(val) == typeof(0.0))
|
||||
|
||||
|
||||
## Возвращает true, если точка внутри заданного полигона
|
||||
func is_point_in_polygon(pos: Vector2, p: PackedVector2Array) -> bool:
|
||||
var j: int = len(p) - 1
|
||||
@@ -80,11 +81,8 @@ func is_point_in_polygon(pos: Vector2, p: PackedVector2Array) -> bool:
|
||||
return odd_nodes > 0
|
||||
|
||||
|
||||
## Устанавливает слово в байтовом массиве
|
||||
## buf - Байтовый массив
|
||||
## index - Индекс младшего байта слова в массиве
|
||||
## val - Значение слова для записи в батовый массив
|
||||
## return - Ничего
|
||||
func set_wordi(buf: Array, index, val):
|
||||
## Записывает слово [param val] в элемент байтовго массива [param buf]
|
||||
## расположенный по индексу [param index]. Младшее слово
|
||||
func set_wordi(buf: Array, index: int, val: int) -> void:
|
||||
buf[index] = val & 0xff
|
||||
buf[index + 1] = (val >> 8) & 0xff
|
||||
|
||||
Reference in New Issue
Block a user