commit before merge
This commit is contained in:
@@ -18,15 +18,24 @@ var ip_fs_1: String = Constants.ADDRESSES[0][4]
|
||||
var command_stack: Array
|
||||
var state_fs = Constants.STATE.IDLE
|
||||
var client_fs_1: StreamPeer
|
||||
var peerstream: PacketPeer
|
||||
var peerstream_fs_1: PacketPeer
|
||||
|
||||
var ip_fs_2: String = Constants.ADDRESSES[0][5]
|
||||
var command_stack_fs_2: Array
|
||||
var state_fs_2 = Constants.STATE.IDLE
|
||||
var client_fs_2: StreamPeer
|
||||
var peerstream_fs_2: PacketPeer
|
||||
|
||||
signal yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
|
||||
signal yau_receive(_data_from_yau)
|
||||
signal yau_read_isa(_unit_isa_ports)
|
||||
|
||||
signal data_send()
|
||||
signal data_send_2()
|
||||
signal data_from_fs_1(data:PackedByteArray)
|
||||
signal data_from_fs_2(data:PackedByteArray)
|
||||
signal port_opened(port_name: String)
|
||||
signal port_opened_2(port_name: String)
|
||||
signal port_closed(port_name: String)
|
||||
signal port_error(error_str: String)
|
||||
|
||||
@@ -58,7 +67,7 @@ func poll_receive_yau07(sock: Socket) -> bool: ## Приёмник
|
||||
|
||||
func poll_receive_fs(client: StreamPeerTCP):
|
||||
client.poll()
|
||||
var peer = peerstream.get_stream_peer()
|
||||
var peer = peerstream_fs_1.get_stream_peer()
|
||||
# Проверяем, существует ли соединение
|
||||
if not peer:
|
||||
emit_signal("port_error", ip_fs_1)
|
||||
@@ -77,6 +86,27 @@ func poll_receive_fs(client: StreamPeerTCP):
|
||||
state_fs = Constants.STATE.DONE
|
||||
|
||||
|
||||
func poll_receive_fs_2(client: StreamPeerTCP):
|
||||
client.poll()
|
||||
var peer = peerstream_fs_2.get_stream_peer()
|
||||
# Проверяем, существует ли соединение
|
||||
if not peer:
|
||||
emit_signal("port_fs_2_error", ip_fs_2)
|
||||
return
|
||||
# Проверяем состояние подключения
|
||||
if client.get_status() != StreamPeerTCP.STATUS_CONNECTED:
|
||||
emit_signal("port_closed_fs_2", ip_fs_2)
|
||||
return
|
||||
|
||||
if peer.get_available_bytes() > 0:
|
||||
var rx_data: PackedByteArray
|
||||
rx_data.append_array(peer.get_data(peer.get_available_bytes())[1])
|
||||
emit_signal("data_from_fs_2", rx_data)
|
||||
emit_signal("port_opened_fs_2", ip_fs_2)
|
||||
if state_fs_2 == Constants.STATE.SEND:
|
||||
state_fs_2 = Constants.STATE.DONE
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
# Привязка для принятия широковещательного канала
|
||||
soc_brodcast = Socket.new()
|
||||
@@ -102,6 +132,8 @@ func _process(delta: float) -> void:
|
||||
|
||||
if client_fs_1:
|
||||
poll_receive_fs(client_fs_1)
|
||||
if client_fs_2:
|
||||
poll_receive_fs_2(client_fs_2)
|
||||
|
||||
poll_receive_yau07(soc_brodcast)
|
||||
poll_receive_yau07(soc_unicast)
|
||||
@@ -164,9 +196,10 @@ func on_command_change_device(meta_device):
|
||||
ip_address_yau = meta_device[0]
|
||||
ip_port_yau = meta_device[1]
|
||||
ip_fs_1 = meta_device[3]
|
||||
#ip_fs_2 = meta_device[4]
|
||||
ip_fs_2 = meta_device[4]
|
||||
#ip_fs_3 = meta_device[5]
|
||||
connect_fs()
|
||||
connect_fs_2()
|
||||
|
||||
|
||||
func state_machine_fs():
|
||||
@@ -185,18 +218,18 @@ func connect_fs():
|
||||
disconnect_fs(client_fs_1)
|
||||
|
||||
client_fs_1 = StreamPeerTCP.new()
|
||||
peerstream = PacketPeerStream.new()
|
||||
peerstream_fs_1 = PacketPeerStream.new()
|
||||
var rc = client_fs_1.connect_to_host(ip_fs_1, Constants.PORT_FS)
|
||||
if rc!= Error.OK:
|
||||
emit_signal("port_error", ip_fs_1)
|
||||
else:
|
||||
peerstream.set_stream_peer(client_fs_1)
|
||||
peerstream_fs_1.set_stream_peer(client_fs_1)
|
||||
|
||||
|
||||
# Отправить команду для ФС
|
||||
func send_data(data_to_sand: PackedByteArray):
|
||||
if client_fs_1.get_status() == 2:
|
||||
var peer = peerstream.get_stream_peer()
|
||||
var peer = peerstream_fs_1.get_stream_peer()
|
||||
if peer:
|
||||
peer.put_data(data_to_sand)
|
||||
emit_signal("data_send")
|
||||
@@ -208,3 +241,43 @@ func disconnect_fs(client_for_leave):
|
||||
state_fs = Constants.STATE.IDLE
|
||||
command_stack = []
|
||||
|
||||
|
||||
|
||||
func state_machine_fs_2():
|
||||
if client_fs_2:
|
||||
## State fs machine
|
||||
if (state_fs_2 == Constants.STATE.IDLE) or (state_fs_2 == Constants.STATE.DONE):
|
||||
if command_stack_fs_2:
|
||||
var pack: Array = command_stack_fs_2.pop_front()
|
||||
send_data_fs_2(pack)
|
||||
state_fs_2 = Constants.STATE.SEND
|
||||
|
||||
|
||||
# Подключится к модулю ФС
|
||||
func connect_fs_2():
|
||||
if client_fs_2:
|
||||
disconnect_fs_2(client_fs_2)
|
||||
|
||||
client_fs_2 = StreamPeerTCP.new()
|
||||
peerstream_fs_2 = PacketPeerStream.new()
|
||||
var rc = client_fs_2.connect_to_host(ip_fs_2, Constants.PORT_FS)
|
||||
if rc!= Error.OK:
|
||||
emit_signal("port_error", ip_fs_2)
|
||||
else:
|
||||
peerstream_fs_2.set_stream_peer(client_fs_2)
|
||||
|
||||
|
||||
# Отправить команду для ФС
|
||||
func send_data_fs_2(data_to_sand: PackedByteArray):
|
||||
if client_fs_2.get_status() == 2:
|
||||
var peer = peerstream_fs_2.get_stream_peer()
|
||||
if peer:
|
||||
peer.put_data(data_to_sand)
|
||||
emit_signal("data_send_2")
|
||||
|
||||
|
||||
# Разорвать соединение с ФС
|
||||
func disconnect_fs_2(client_for_leave):
|
||||
client_for_leave.disconnect_from_host()
|
||||
state_fs_2 = Constants.STATE.IDLE
|
||||
command_stack = []
|
||||
|
||||
Reference in New Issue
Block a user