@@ -2,7 +2,8 @@ extends Node
# ЯУ-07 Блок
var unit = Yau07 . YaU07 . new ( ' ЯУ-07Б ' )
var unit_fs_1 = Fs . FGOS . new ( )
# var unit_fs_1 = Fs.FGOS.new( )
var unit_fs_2 = Fs . FGOS . new ( )
var soc_unicast : Socket
var soc_brodcast : Socket
var ip_address_yau : String = Constants . ADDRESSES [ 0 ] [ 1 ]
@@ -15,21 +16,30 @@ var state = Constants.STATE.WAIT
var send_array : Array = [ ]
# ФС Блок
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 ip_fs_1 : String = Constants . ADDRESSES [ 0 ] [ 4 ]
var peerstream_fs_1 : PacketPeer
var state_fs = Constants . STATE . IDLE
var command_stack : Array
## 2 ФС
var client_fs_2 : StreamPeer
var ip_fs_2 : String = Constants . ADDRESSES [ 0 ] [ 5 ]
var peerstream_fs_2 : PacketPeer
var state_fs_2 = Constants . STATE . IDLE
var command_stack_2 : Array
signal yau_status_line ( _status ) ## Вызывается когда меняется состояние связи с ячейкой
signal yau_receive ( _data_from_yau )
signal yau_read_isa ( _unit_isa_ports )
signal data_send( )
# 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_fs_ opened_1 ( port_name : String )
signal port_fs_opened_2 ( port_name : String )
signal port_closed ( port_name : String )
signal port_error ( error_str : String )
@@ -60,24 +70,24 @@ func poll_receive_yau07(sock: Socket) -> bool: ## Приёмник
return false
func poll_receive_fs ( client : StreamPeerTCP ) :
func poll_receive_fs ( client : StreamPeerTCP , peerstream : PacketPeer , ip_fs : String ):
client . poll ( )
var peer = peerstream_fs_1 . get_stream_peer ( )
var peer = peerstream . get_stream_peer ( )
# Проверяем, существует ли соединение
if not peer :
emit_signal ( " port_error " , ip_fs_1 )
emit_signal ( " port_error " , ip_fs )
return
# Проверяем состояние подключения
if client . get_status ( ) != StreamPeerTCP . STATUS_CONNECTED :
emit_signal ( " port_closed " , ip_fs_1 )
emit_signal ( " port_closed " , ip_fs )
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_1", rx_data)
emit_signal( " data_from_fs_2" , rx_data )
emit_signal ( " port_opened " , ip_fs_1 )
emit_signal( " data_from_fs_1" , rx_data )
# emit_signal(" data_from_fs_2", rx_data)
emit_signal ( " port_fs_ opened_1 " , ip_fs )
if state_fs == Constants . STATE . SEND :
state_fs = Constants . STATE . DONE
@@ -96,7 +106,8 @@ func _ready() -> void:
unit . connect ( ' line_changed ' , Callable ( self , ' on_line_changed ' ) )
unit . connect ( ' command_fail ' , Callable ( self , ' on_command_fail ' ) )
connect_fs( )
# connect_fs_1( )
connect_fs_2 ( )
read_port_isa ( [ 0x106 , 0x108 ] )
@@ -106,13 +117,16 @@ func _process(delta: float) -> void:
last_update_time_fs += delta
if client_fs_1 :
poll_receive_fs ( client_fs_1 )
poll_receive_fs ( client_fs_1 , peerstream_fs_1 , ip_fs_1 )
if client_fs_2 :
poll_receive_fs_2 ( client_fs_2 , peerstream_fs_2 , ip_fs_2 )
poll_receive_yau07 ( soc_brodcast )
poll_receive_yau07 ( soc_unicast )
state_machine_yau07 ( )
state_machine_fs( )
# state_machine_fs( )
state_machine_fs_2 ( )
match unit . process ( delta ) :
Error . OK : soc_unicast . send_to ( ip_address_yau , ip_port_yau , unit . tx_data . slice ( 0 , unit . tx_len ) )
@@ -169,9 +183,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_1( )
connect_fs_2 ( )
func state_machine_fs ( ) :
@@ -180,12 +195,12 @@ func state_machine_fs():
if ( state_fs == Constants . STATE . IDLE ) or ( state_fs == Constants . STATE . DONE ) :
if command_stack :
var pack : Array = command_stack . pop_front ( )
send_data ( pack )
send_fs_ data_1 ( pack )
state_fs = Constants . STATE . SEND
# Подключится к модулю ФС
func connect_fs ( ) :
func connect_fs_1 ( ) :
if client_fs_1 :
disconnect_fs ( client_fs_1 )
@@ -199,7 +214,7 @@ func connect_fs():
# Отправить команду для ФС
func send_data ( data_to_sand : PackedByteArray ) :
func send_fs_ data_1 ( data_to_sand : PackedByteArray ) :
if client_fs_1 . get_status ( ) == 2 :
var peer = peerstream_fs_1 . get_stream_peer ( )
if peer :
@@ -213,25 +228,110 @@ func disconnect_fs(client_for_leave):
state_fs = Constants . STATE . IDLE
command_stack = [ ]
func start_work_fs( ) :
unit_fs_1. start_session( )
unit_fs_1. base_get_current_temp( )
#
# func start_work_fs() :
# unit_fs_1. start_session( )
# unit_fs_1. base_get_current_temp( )
#
#
#func get_fs_gen_status(state_gen):
#unit_fs_1.set_gen_state(state_gen)
#unit_fs_1.get_gen_state()
#unit_fs_1.base_get_current_temp()
#
#
#func set_fs_ferq_carrier(freq: int):
#unit_fs_1.set_carrier(freq)
#unit_fs_1.base_get_current_temp()
#unit_fs_1.get_carrier()
#
#
#func set_fs_attenuation(attenuation: float):
#unit_fs_1.set_att_batch(attenuation)
#unit_fs_1.get_att_batch()
#unit_fs_1.base_get_current_temp()
func get_fs_gen_status ( state_gen ) :
unit_fs_1 . set_gen_state ( state_gen )
unit_fs_1 . get_gen_state ( )
unit_fs_1 . base_get_current_temp ( )
## 2 ФС коннект
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 :
print_debug ( ' Port error %s ' % ip_fs_2 )
#emit_signal("port_error", ip_fs_2)
else :
peerstream_fs_2 . set_stream_peer ( client_fs_2 )
func set_fs_ferq_carrier ( freq : int ) :
unit_fs_1 . set_carrier ( freq )
unit_fs_1 . base_get_current_temp ( )
unit_fs_1 . get_carrier ( )
# Разорвать соединение с ФС
func disconnect_fs_2 ( client_for_leave ) :
client_for_leave . disconnect_from_host ( )
state_fs_2 = Constants . STATE . IDLE
command_stack_2 = [ ]
# Отправить команду для ФС
func send_fs_data_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 set_fs_attenuation ( attenuation : float ) :
unit_fs_1 . set_att_batch ( attenuation )
unit_fs_1 . get_att_batch ( )
unit_fs_1 . base_get_current_temp ( )
func state_machine_fs_2 ( ) :
if client_fs_2 :
## State fs_2 machine
if ( state_fs_2 == Constants . STATE . IDLE ) or ( state_fs_2 == Constants . STATE . DONE ) :
if command_stack_2 :
var pack : Array = command_stack_2 . pop_front ( )
send_fs_data_2 ( pack )
state_fs_2 = Constants . STATE . SEND
func poll_receive_fs_2 ( client : StreamPeerTCP , peerstream : PacketPeer , ip_fs : String ) :
client . poll ( )
var peer = peerstream . get_stream_peer ( )
# Проверяем, существует ли соединение
if not peer :
emit_signal ( " port_error " , ip_fs )
return
# Проверяем состояние подключения
if client . get_status ( ) != StreamPeerTCP . STATUS_CONNECTED :
emit_signal ( " port_closed " , ip_fs )
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_fs_opened_2 " , ip_fs )
if state_fs_2 == Constants . STATE . SEND :
state_fs_2 = Constants . STATE . DONE
func start_work_fs_2 ( ) :
unit_fs_2 . start_session ( )
unit_fs_2 . base_get_current_temp ( )
func get_fs_gen_status_2 ( state_gen ) :
unit_fs_2 . set_gen_state ( state_gen )
unit_fs_2 . get_gen_state ( )
unit_fs_2 . base_get_current_temp ( )
func set_fs_ferq_carrier_2 ( freq : int ) :
unit_fs_2 . set_carrier ( freq )
unit_fs_2 . base_get_current_temp ( )
unit_fs_2 . get_carrier ( )
func set_fs_attenuation_2 ( attenuation : float ) :
unit_fs_2 . set_att_batch ( attenuation )
unit_fs_2 . get_att_batch ( )
unit_fs_2 . base_get_current_temp ( )