Доработка. Новая версия вкладки ЭМС.

This commit is contained in:
MaD_CaT
2023-08-10 11:29:44 +03:00
parent b1f4eac5b0
commit 87be1b42ae
26 changed files with 1147 additions and 892 deletions

View File

@@ -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)