Доработка. Новая версия вкладки ЭМС.
This commit is contained in:
@@ -2,9 +2,9 @@ extends Node
|
||||
|
||||
|
||||
class Socket extends PacketPeerUDP:
|
||||
func send_to(addr, data):
|
||||
self.set_dest_address(addr[0], addr[1])
|
||||
self.put_packet(data)
|
||||
func send_to(addr, data):
|
||||
self.set_dest_address(addr[0], addr[1])
|
||||
self.put_packet(data)
|
||||
|
||||
|
||||
const PROTO_TYPE: = {'yau07tx': yau07.YaU07, 'jsontx': capsrpb.CapsRpb}
|
||||
@@ -15,51 +15,51 @@ var logger_page: Node
|
||||
|
||||
|
||||
func create_socket(nm) -> Socket:
|
||||
var addr = REPSettings.addr[nm][1]
|
||||
var port = REPSettings.addr[nm][2]
|
||||
var broad = REPSettings.addr[nm][3]
|
||||
var bind = REPSettings.addr[nm][4]
|
||||
var sock: = Socket.new()
|
||||
sock.set_broadcast_enabled(broad)
|
||||
var rc = Error.OK if not bind else sock.bind(port, addr)
|
||||
var errlevel = Log.INFO if rc == Error.OK else Log.ERROR
|
||||
Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)])
|
||||
return sock
|
||||
var addr = REPSettings.addr[nm][1]
|
||||
var port = REPSettings.addr[nm][2]
|
||||
var broad = REPSettings.addr[nm][3]
|
||||
var bind = REPSettings.addr[nm][4]
|
||||
var sock: = Socket.new()
|
||||
sock.set_broadcast_enabled(broad)
|
||||
var rc = Error.OK if not bind else sock.bind(port, addr)
|
||||
var errlevel = Log.INFO if rc == Error.OK else Log.ERROR
|
||||
Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)])
|
||||
return sock
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var addr = REPSettings.addr['уарэп-яу07-частный'][1]
|
||||
var port = REPSettings.addr['уарэп-яу07-частный'][2]
|
||||
sock_unicast = Socket.new()
|
||||
sock_unicast.bind(port, addr)
|
||||
for key in REPSettings.addr:
|
||||
var setting = REPSettings.addr[key]
|
||||
var proto = setting[0]
|
||||
if proto in PROTO_TYPE:
|
||||
var unit = PROTO_TYPE[proto].new(key)
|
||||
var k = REPSettings.get_unit_key(setting)
|
||||
units[k] = unit
|
||||
unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(k))
|
||||
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(k))
|
||||
var addr = REPSettings.addr['уарэп-яу07-частный'][1]
|
||||
var port = REPSettings.addr['уарэп-яу07-частный'][2]
|
||||
sock_unicast = Socket.new()
|
||||
sock_unicast.bind(port, addr)
|
||||
for key in REPSettings.addr:
|
||||
var setting = REPSettings.addr[key]
|
||||
var proto = setting[0]
|
||||
if proto in PROTO_TYPE:
|
||||
var unit = PROTO_TYPE[proto].new(key)
|
||||
var k = REPSettings.get_unit_key(setting)
|
||||
units[k] = unit
|
||||
unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(k))
|
||||
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(k))
|
||||
|
||||
for key in units:
|
||||
var unit = units[key]
|
||||
Log.info('%s %s:%d' % [unit.name, key[0], key[1]])
|
||||
for key in units:
|
||||
var unit = units[key]
|
||||
Log.info('%s %s:%d' % [unit.name, key[0], key[1]])
|
||||
|
||||
|
||||
func poll_receive(sock: Socket):
|
||||
while sock.get_available_packet_count() > 0:
|
||||
var data: = sock.get_packet()
|
||||
var addr: = sock.get_packet_ip()
|
||||
var port: = sock.get_packet_port()
|
||||
var addr_port: = [addr, port]
|
||||
if addr_port in units: units[addr_port].parse(data)
|
||||
while sock.get_available_packet_count() > 0:
|
||||
var data: = sock.get_packet()
|
||||
var addr: = sock.get_packet_ip()
|
||||
var port: = sock.get_packet_port()
|
||||
var addr_port: = [addr, port]
|
||||
if addr_port in units: units[addr_port].parse(data)
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
for addr in units:
|
||||
var unit = units[addr]
|
||||
match unit.process(delta):
|
||||
Error.OK: sock_unicast.send_to(addr, unit.data_tx)
|
||||
Error.FAILED: emit_signal('socket_error', 'ошибка: %s %s:%d' % [unit, addr[0], addr[1]])
|
||||
for sock in poll_sockets: poll_receive(sock)
|
||||
for addr in units:
|
||||
var unit = units[addr]
|
||||
match unit.process(delta):
|
||||
Error.OK: sock_unicast.send_to(addr, unit.data_tx)
|
||||
Error.FAILED: emit_signal('socket_error', 'ошибка: %s %s:%d' % [unit, addr[0], addr[1]])
|
||||
for sock in poll_sockets: poll_receive(sock)
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
extends Node
|
||||
|
||||
enum ThreatSrc {
|
||||
MP405,
|
||||
RLKS,
|
||||
RPB,
|
||||
SIGMA }
|
||||
MP405,
|
||||
RLKS,
|
||||
RPB,
|
||||
SIGMA }
|
||||
|
||||
|
||||
class Threat:
|
||||
|
||||
enum FFlags { # Допустимые значения для Threat.fflags
|
||||
ALT = 1 << 1,
|
||||
AOA = 1 << 2,
|
||||
ATIME = 1 << 3,
|
||||
BAUD = 1 << 4,
|
||||
FFLAGS = 1 << 5,
|
||||
FREQ = 1 << 6,
|
||||
FREQM = 1 << 7,
|
||||
LAT = 1 << 8,
|
||||
LON = 1 << 9,
|
||||
POW_RX = 1 << 10,
|
||||
PROTO = 1 << 11,
|
||||
RKRP = 1 << 12,
|
||||
RPARAMS = 1 << 13,
|
||||
SALT = 1 << 14,
|
||||
SLAT = 1 << 15,
|
||||
SLON = 1 << 16,
|
||||
TICK = 1 << 17,
|
||||
TMOD = 1 << 18,
|
||||
UTIME = 1 << 19,
|
||||
WIDTH = 1 << 20 }
|
||||
enum FFlags { # Допустимые значения для Threat.fflags
|
||||
ALT = 1 << 1,
|
||||
AOA = 1 << 2,
|
||||
ATIME = 1 << 3,
|
||||
BAUD = 1 << 4,
|
||||
FFLAGS = 1 << 5,
|
||||
FREQ = 1 << 6,
|
||||
FREQM = 1 << 7,
|
||||
LAT = 1 << 8,
|
||||
LON = 1 << 9,
|
||||
POW_RX = 1 << 10,
|
||||
PROTO = 1 << 11,
|
||||
RKRP = 1 << 12,
|
||||
RPARAMS = 1 << 13,
|
||||
SALT = 1 << 14,
|
||||
SLAT = 1 << 15,
|
||||
SLON = 1 << 16,
|
||||
TICK = 1 << 17,
|
||||
TMOD = 1 << 18,
|
||||
UTIME = 1 << 19,
|
||||
WIDTH = 1 << 20 }
|
||||
|
||||
var alt: float # Текущая высота, метры.
|
||||
var aoa: float # Курсовой угол на источник сигнала, градусы.
|
||||
var atime: Dictionary # Время обнаружения.
|
||||
var baud: float # Модуляционная скорость.
|
||||
var fflags: FFlags # Флаги достоверности полей.
|
||||
var freq: float # Частота несущей или центральная частота, МГц.
|
||||
var freqm: String # Режим смены частоты.
|
||||
var lat: float # Текущие координаты, долгота в градусах.
|
||||
var lon: float # Текущие координаты, широта в градусах.
|
||||
var pow_rx: 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 alt: float # Текущая высота, метры.
|
||||
var aoa: float # Курсовой угол на источник сигнала, градусы.
|
||||
var atime: Dictionary # Время обнаружения.
|
||||
var baud: float # Модуляционная скорость.
|
||||
var fflags: FFlags # Флаги достоверности полей.
|
||||
var freq: float # Частота несущей или центральная частота, МГц.
|
||||
var freqm: String # Режим смены частоты.
|
||||
var lat: float # Текущие координаты, долгота в градусах.
|
||||
var lon: float # Текущие координаты, широта в градусах.
|
||||
var pow_rx: 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 _threats = {}
|
||||
@@ -60,16 +60,16 @@ var _threats = {}
|
||||
"""
|
||||
|
||||
func on_parse_threads(unit: capsrpb.CapsRpb):
|
||||
print_debug(unit)
|
||||
print_debug(unit)
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Log.info('Модуль обработки целей готов')
|
||||
var unit = REPSettings.addrs[]
|
||||
unit.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
|
||||
Log.info('Модуль обработки целей готов')
|
||||
#var unit = REPSettings.addrs[]
|
||||
#unit.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
|
||||
|
||||
|
||||
|
||||
func on_data_capsrpb_received(unit: capsrpb.CapsRpb):
|
||||
pass
|
||||
pass
|
||||
|
||||
|
||||
65
scripts/yems_consts.gd
Normal file
65
scripts/yems_consts.gd
Normal file
@@ -0,0 +1,65 @@
|
||||
extends Node
|
||||
|
||||
|
||||
# Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС
|
||||
const INPUT_ROWS0 = [
|
||||
[1,['1111 МР-231S, УИЗП', 'X31', '0.00', '0.00']],
|
||||
[2,['2222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
|
||||
[3,['3НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
|
||||
[4,['4НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
|
||||
[5,['5ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
|
||||
[8,['64302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
|
||||
[11,['7НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']],
|
||||
[22,['8222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
|
||||
[23,['9РЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
|
||||
[24,['10НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
|
||||
[25,['11ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
|
||||
[28,['124302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
|
||||
[21,['13НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
|
||||
|
||||
# Таблица с данными для выходов, первое значение - индекс устройства в ячейке КЭМС
|
||||
const OUTPUT_ROWS0 = [
|
||||
[41,['15НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
|
||||
[42,['16НРЛС МР-231S', 'X62', '0.00', '0.00']],
|
||||
[43,['17НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
|
||||
[44,['18НРЛС МР-231-3', 'X65', '0.00', '0.00']],
|
||||
[45,['19ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
|
||||
[46,['204302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
|
||||
[48,['21НРЛС 11111111', 'X69', '0.00', '0.00']],
|
||||
[52,['22НРЛС МР-231S', 'X62', '0.00', '0.00']],
|
||||
[53,['23НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
|
||||
[54,['24НРЛС МР-231-3', 'X65', '0.00', '0.00']],
|
||||
[55,['25ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
|
||||
[56,['264302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
|
||||
[58,['27НРЛС 11111111', 'X69', '0.00', '0.00']]]
|
||||
|
||||
const INPUT_ROWS1 = [
|
||||
[12,['283333 МР-231S, Строб ЭМС', 'X52', '0.00', '0.00']],
|
||||
[13,['29НРЛС МР-231-3, УИЗП', 'X54', '0.00', '0.00']],
|
||||
[14,['30НРЛС МР-231-3, Строб ЭМС', 'X55', '0.00', '0.00']],
|
||||
[15,['31ЦИСВС-1010, УИЗП', 'X23', '0.00', '0.00']],
|
||||
[21,['32НРЛС МР-231S, УИЗП', 'X21', '0.00', '0.00']],
|
||||
[22,['33НРЛС МР-231S, Строб ЭМС', 'X22', '0.00', '0.00']],
|
||||
[23,['34НРЛС МР-231-3, УИЗП', 'X24', '0.00', '0.00']],
|
||||
[32,['352222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
|
||||
[33,['36НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
|
||||
[34,['37НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
|
||||
[35,['38ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
|
||||
[38,['394302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
|
||||
[31,['40НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
|
||||
|
||||
# Таблица с данными для выходов, первое значение - индекс устройства в ячейке КЭМС
|
||||
const OUTPUT_ROWS1 = [
|
||||
[41,['41НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
|
||||
[42,['42НРЛС МР-231S', 'X62', '0.00', '0.00']],
|
||||
[43,['43НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
|
||||
[44,['44НРЛС МР-231-3', 'X65', '0.00', '0.00']],
|
||||
[45,['45ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
|
||||
[46,['464302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
|
||||
[48,['47НРЛС 11111111', 'X69', '0.00', '0.00']],
|
||||
[62,['48НРЛС МР-231S', 'X62', '0.00', '0.00']],
|
||||
[63,['49НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
|
||||
[64,['50НРЛС МР-231-3', 'X65', '0.00', '0.00']],
|
||||
[65,['51ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
|
||||
[66,['524302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
|
||||
[68,['53НРЛС 11111111', 'X69', '0.00', '0.00']]]
|
||||
@@ -2,16 +2,18 @@ extends Node
|
||||
|
||||
|
||||
class InDev:
|
||||
var id: int # Идентификатор индекс устройства
|
||||
var dev_name: String # Имя подключаемого комплекса
|
||||
var connector: String # Номер разъёма в приборе
|
||||
var delay: float # Задержка фронта импульса
|
||||
var offset: float # Смещение фронта импульса
|
||||
var state: int # Состояние входа
|
||||
var freq: int # Предполагаемая частота на которой работает комплекс
|
||||
var ports_data: Dictionary # Словарь состояния портов устройства
|
||||
var tbl_row_id: int # Индекс устройства в таблице входов
|
||||
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
|
||||
var id: int # Идентификатор индекс устройства
|
||||
var dev_name: String # Имя подключаемого комплекса
|
||||
var connector: String # Номер разъёма в приборе
|
||||
var delay: float # Задержка фронта импульса
|
||||
var offset: float # Смещение фронта импульса
|
||||
var state: int # Состояние входа
|
||||
var freq: int # Предполагаемая частота на которой работает комплекс
|
||||
var ports_data: Dictionary # Словарь состояния портов устройства
|
||||
var tbl_row_id: int # Индекс устройства в таблице выходов
|
||||
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
|
||||
var connect_devs: Dictionary # Список присоединённых устройств
|
||||
var board: String # Плата в которой находится устройство
|
||||
|
||||
func _init(dev_id : int, params : Array, row_id : int):
|
||||
id = dev_id
|
||||
@@ -22,17 +24,8 @@ class InDev:
|
||||
tbl_row_id = row_id
|
||||
|
||||
|
||||
class OutDev:
|
||||
var id: int # Идентификатор индекс устройства
|
||||
var dev_name: String # Имя подключаемого комплекса
|
||||
var connector: String # Номер разъёма в приборе
|
||||
var delay: float # Задержка фронта импульса
|
||||
var offset: float # Смещение фронта импульса
|
||||
var state: int # Состояние входа
|
||||
var freq: int # Предполагаемая частота на которой работает комплекс
|
||||
var ports_data: Dictionary # Словарь состояния портов устройства
|
||||
var tbl_row_id: int # Индекс устройства в таблице выходов
|
||||
var mode: int # Режим работы выхода
|
||||
class OutDev extends InDev:
|
||||
var mode: String # Режим работы выхода
|
||||
|
||||
func _init(dev_id : int, params : Array, row_id : int):
|
||||
id = dev_id
|
||||
@@ -41,4 +34,4 @@ class OutDev:
|
||||
delay = float(params[2])
|
||||
offset = float(params[3])
|
||||
tbl_row_id = row_id
|
||||
mode = 0
|
||||
mode = 'Работа'
|
||||
|
||||
15
scripts/yemsboards.gd
Normal file
15
scripts/yemsboards.gd
Normal file
@@ -0,0 +1,15 @@
|
||||
extends Node
|
||||
|
||||
class EmsBoard:
|
||||
var id_board: String
|
||||
var in_devs: Dictionary # Словарь с входными устройствами
|
||||
var out_devs: Dictionary # Словарь с выходными устройствами
|
||||
var base_addr_isa: int # Базовый адрес ячейки isa
|
||||
var in_tbl: Array
|
||||
var out_tbl: Array
|
||||
|
||||
func _init(id, base_addr, in_table, out_table):
|
||||
id_board = id
|
||||
in_tbl = in_table
|
||||
out_tbl = out_table
|
||||
base_addr_isa = base_addr
|
||||
Reference in New Issue
Block a user