дорабтока отслеживания счетчика команда фс
This commit is contained in:
@@ -93,6 +93,8 @@ class ClientFs extends Node:
|
||||
var command_stack: Array
|
||||
var status: = PackedByteArray() ## Поле "состояние прибора"
|
||||
var counter: int = 0
|
||||
var send_count: int = 0
|
||||
var missed_packets: int = 0
|
||||
var online: bool = false ## Состояние связи с ФС
|
||||
|
||||
func _init(nm):
|
||||
@@ -145,6 +147,7 @@ class ClientFs extends Node:
|
||||
_status = _stream.STATUS_NONE
|
||||
command_stack = []
|
||||
counter = 0
|
||||
send_count = 0
|
||||
if _stream.connect_to_host(host, port) != OK:
|
||||
print_debug("Error connecting to host.")
|
||||
emit_signal("error_connect")
|
||||
@@ -160,6 +163,16 @@ class ClientFs extends Node:
|
||||
return final_crc
|
||||
|
||||
func _form_packet(group: int, cmd: int, index_size: int, data = null) -> PackedByteArray:
|
||||
var previous_count = send_count
|
||||
send_count = counter
|
||||
print([self_name, previous_count, counter])
|
||||
if previous_count != 0 && (counter - previous_count) != 1:
|
||||
var skipped = counter - previous_count - 1
|
||||
missed_packets += skipped
|
||||
print_debug("ALARM: Пропущено %d пакетов (было: %d, стало: %d)" % [skipped, previous_count, counter])
|
||||
print_debug("Группа: %d, Команда: %d" % [group, cmd])
|
||||
|
||||
# Формируем пакет
|
||||
var packet = PackedByteArray()
|
||||
packet.resize(index_size)
|
||||
packet.encode_u8(GROUP_OFFSET, group)
|
||||
@@ -176,6 +189,7 @@ class ClientFs extends Node:
|
||||
packet.encode_u32(packet.size() - 4, crc)
|
||||
command_stack.append(packet)
|
||||
|
||||
|
||||
func send_fs_data() -> bool:
|
||||
if _status != _stream.STATUS_CONNECTED:
|
||||
print("Send_fs_data Error: Stream is not currently connected.")
|
||||
@@ -196,13 +210,14 @@ class ClientFs extends Node:
|
||||
func start_session():
|
||||
command_stack = []
|
||||
counter = 0
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, INDEX_SIZE, counter)
|
||||
send_count = 0
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, INDEX_SIZE)
|
||||
send_packet_to(packet)
|
||||
|
||||
## MSK модуляция
|
||||
func set_configure_state_msk_modul_1() -> void:
|
||||
var index_size = 0x20
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size, counter)
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size)
|
||||
packet.encode_u8(0x3, 0x09)
|
||||
packet.encode_u16(0x8, 0x0014)
|
||||
send_packet_to(packet)
|
||||
@@ -210,7 +225,7 @@ class ClientFs extends Node:
|
||||
## Constant модуляция
|
||||
func set_configure_state_msk_const():
|
||||
var index_size = 0x20
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size, counter)
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size)
|
||||
packet.encode_u8(0x3, 0x09)
|
||||
packet.encode_u16(0x8, 0x0014)
|
||||
packet.encode_u8(0x1C, 0x0f)
|
||||
@@ -218,35 +233,35 @@ class ClientFs extends Node:
|
||||
|
||||
func set_gen_state(button_state: bool):
|
||||
var index_size = 0x1C
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_GEN_STATUS, index_size, counter)
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_GEN_STATUS, index_size)
|
||||
packet.encode_u16(0x8, 0x0010)
|
||||
packet.encode_u32(0xC, button_state) ## MODE GEN STATUS
|
||||
send_packet_to(packet)
|
||||
|
||||
func status_can_macro_exec(button_state: bool):
|
||||
var index_size = 0x1C
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.STATUS_CAN_MACRO, index_size, counter)
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.STATUS_CAN_MACRO, index_size)
|
||||
packet.encode_u16(0x8, 0x0010)
|
||||
packet.encode_u32(0xC, button_state) ## mode can status
|
||||
send_packet_to(packet)
|
||||
|
||||
func set_carrier(installation_frequency: int):
|
||||
var index_size = 0x1C
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size, counter)
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size)
|
||||
packet.encode_u16(0x8, 0x10)
|
||||
packet.encode_u64(0xC, installation_frequency) ## uint64_t freq low dword/high dword
|
||||
send_packet_to(packet)
|
||||
|
||||
func set_att_batch(attenuation: float):
|
||||
var index_size = 0x1C
|
||||
var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size, counter)
|
||||
var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size)
|
||||
packet.encode_u16(0x8, 0x10)
|
||||
packet.encode_float(0x18, attenuation)
|
||||
send_packet_to(packet)
|
||||
|
||||
func set_base_can_macro(installation_can_frequency: int):
|
||||
var index_size = 0x34
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_WRITE, index_size, counter)
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_WRITE, index_size)
|
||||
packet.encode_u16(0x08, 0x28)
|
||||
packet.encode_u8(0x1C, 0x01)
|
||||
packet.encode_u8(0x1D, 0x42)
|
||||
@@ -257,23 +272,23 @@ class ClientFs extends Node:
|
||||
send_packet_to(packet)
|
||||
|
||||
func get_carrier():
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE, counter)
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE)
|
||||
send_packet_to(packet)
|
||||
|
||||
func get_att_batch():
|
||||
var packet = _form_packet(GROUP.RF, CmdCode.READ_ATT, INDEX_SIZE, counter)
|
||||
var packet = _form_packet(GROUP.RF, CmdCode.READ_ATT, INDEX_SIZE)
|
||||
send_packet_to(packet)
|
||||
|
||||
func get_gen_state():
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.READ_GEN_STATUS, INDEX_SIZE, counter)
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.READ_GEN_STATUS, INDEX_SIZE)
|
||||
send_packet_to(packet)
|
||||
|
||||
func get_base_current_temp():
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE, counter)
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE)
|
||||
send_packet_to(packet)
|
||||
|
||||
func get_base_can_macro():
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_READ, INDEX_SIZE, counter)
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_READ, INDEX_SIZE)
|
||||
send_packet_to(packet)
|
||||
|
||||
# Разорвать соединение с ФС
|
||||
|
||||
Reference in New Issue
Block a user