From e945834ea23db54424ab42b156b9c60ee6c04318 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 28 Jan 2025 22:50:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 1 + scripts/FS.gd | 26 ++++++----- scripts/modul_fs.gd | 109 +++++--------------------------------------- scripts/network.gd | 4 +- 4 files changed, 29 insertions(+), 111 deletions(-) diff --git a/project.godot b/project.godot index 524b24e..842c8be 100644 --- a/project.godot +++ b/project.godot @@ -20,6 +20,7 @@ config/icon="res://icon.svg" Constants="*res://scripts/constants.gd" Yau07="*res://scripts/yau07.gd" Network="*res://scripts/network.gd" +Fs="*res://scripts/FS.gd" [debug] diff --git a/scripts/FS.gd b/scripts/FS.gd index a3c1caf..2f3d68b 100644 --- a/scripts/FS.gd +++ b/scripts/FS.gd @@ -64,11 +64,11 @@ class FGOS: FAIL ## Команда не выполнена } - const INDEX_SIZE = 0xC - const GROUP_OFFSET = 0x0 - const CMD_OFFSET = 0x1 - const COUNTER_OFFSET = 0x4 - const PAYLOAD_OFFSET = 0x8 + const INDEX_SIZE: int = 0xC + const GROUP_OFFSET: int = 0x0 + const CMD_OFFSET: int = 0x1 + const COUNTER_OFFSET: int = 0x4 + const PAYLOAD_OFFSET: int = 0x8 var counter: int = 0 @@ -83,7 +83,7 @@ class FGOS: return final_crc - func _form_packet(group, cmd, index_size, data = null): + func _form_packet(group: int, cmd: int, index_size: int, data = null): var packet = PackedByteArray() packet.resize(index_size) packet.encode_u8(GROUP_OFFSET, group) @@ -95,13 +95,17 @@ class FGOS: return packet - func _send_packet(packet): + func _send_packet(packet: PackedByteArray): var crc = crc32(packet) packet.resize(packet.size() + 4) packet.encode_u32(packet.size() - 4, crc) Network.command_stack.append(packet) + func _parse_data(data: PackedByteArray): + pass + + func start_session(): counter = 0 var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.START_SESSION, 0xC) @@ -120,19 +124,19 @@ class FGOS: get_gen_state() - func set_carrier(wr_freq): + func set_carrier(installation_frequency: int): var index_size = 0x1C var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.SET_CARRIER, index_size) packet.encode_u16(0x8, 0x10) - packet.encode_u64(0xC, wr_freq) ## uint64_t freq low dword/high dword + packet.encode_u64(0xC, installation_frequency) ## uint64_t freq low dword/high dword _send_packet(packet) - func set_att_batch(att): + func set_att_batch(attenuation: float): var index_size = 0x1C var packet = _form_packet(Constants.GROUP.RF, Constants.CMD.SET_ATT, index_size) packet.encode_u16(0x8, 0x10) - packet.encode_float(0x18, att) + packet.encode_float(0x18, attenuation) _send_packet(packet) diff --git a/scripts/modul_fs.gd b/scripts/modul_fs.gd index bb6b381..50fc385 100644 --- a/scripts/modul_fs.gd +++ b/scripts/modul_fs.gd @@ -1,8 +1,8 @@ extends Node -var counter: int = 0 const INDEX_SIZE = 0xC - +var unit_fs = Fs.FGOS.new() +var counter: int = 0 func _ready() -> void: pass @@ -56,119 +56,32 @@ func _on_data_received(data: PackedByteArray): $read.text = str(data.hex_encode()) -const GROUP_OFFSET = 0x0 -const CMD_OFFSET = 0x1 -const COUNTER_OFFSET = 0x4 -const PAYLOAD_OFFSET = 0x8 - -func _form_packet(group, cmd, index_size, data = null): - var packet = PackedByteArray() - packet.resize(index_size) - packet.encode_u8(GROUP_OFFSET, group) - packet.encode_u8(CMD_OFFSET, cmd) - packet.encode_u32(COUNTER_OFFSET, counter) - counter += 1 - if data: - packet.encode_float(PAYLOAD_OFFSET, data) - return packet - - -func _send_packet(packet): - var crc = crc32(packet) - packet.resize(packet.size() + 4) - packet.encode_u32(packet.size() - 4, crc) - Network.command_stack.append(packet) - - -func start_session(): - counter = 0 - var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.START_SESSION, 0xC) - _send_packet(packet) - get_gen_state() - get_att_batch() - get_carrier() - - -func set_gen_state(button_state: bool): - var index_size = 0x1C - var packet = _form_packet(Constants.GROUP.GENERATOR, Constants.CMD.SET_GEN_STATUS, index_size) - packet.encode_u16(0x8, 0x0010) - packet.encode_u32(0xC, button_state) ## MODE GEN STATUS - _send_packet(packet) - get_gen_state() - - -func set_carrier(wr_freq): - var index_size = 0x1C - var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.SET_CARRIER, index_size) - packet.encode_u16(0x8, 0x10) - packet.encode_u64(0xC, wr_freq) ## uint64_t freq low dword/high dword - _send_packet(packet) - - -func set_att_batch(att): - var index_size = 0x1C - var packet = _form_packet(Constants.GROUP.RF, Constants.CMD.SET_ATT, index_size) - packet.encode_u16(0x8, 0x10) - packet.encode_float(0x18, att) - _send_packet(packet) - - -func get_carrier(): - var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.READ_CARRIER, INDEX_SIZE) - _send_packet(packet) - - -func get_att_batch(): - var packet = _form_packet(Constants.GROUP.RF, Constants.CMD.READ_ATT, INDEX_SIZE) - _send_packet(packet) - - -func get_gen_state(): - var packet = _form_packet(Constants.GROUP.GENERATOR, Constants.CMD.READ_GEN_STATUS, INDEX_SIZE) - _send_packet(packet) - - -func base_get_current_temp(): - var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.BASE_GET_CURRENT_TEMP, INDEX_SIZE) - _send_packet(packet) - - -func crc32(data: PackedByteArray) -> int: - var crc = Constants.INIT - for byte in data: - var index = (crc ^ byte) & 0xFF - crc = (Constants.CRC32_TABLE[index] ^ (crc >> 8)) & 0xFFFFFFFF - # Возвращаем только последние 4 байта в обратном порядке - var final_crc = crc ^ Constants.FINAL_XOR_VALUE - return final_crc - func _on_send_pressed() -> void: - get_carrier() + unit_fs.get_carrier() func _on_get_att() -> void: - get_att_batch() + unit_fs.get_att_batch() func _on_start(): - #if ServerNode.connect_fs(): - start_session() - base_get_current_temp() + #Network.disconnect_fs(Network.client_fs_1) + unit_fs.start_session() + unit_fs.base_get_current_temp() func _on_get_status(toggled_btn): var inverted_state = not toggled_btn - set_gen_state(inverted_state) - get_gen_state() + unit_fs.set_gen_state(inverted_state) + unit_fs.get_gen_state() func _on_set_ferq(): var freq = int($set_space/write_to_set_freq.get_text()) * 1_000_000 - set_carrier(freq) + unit_fs.set_carrier(freq) func _on_set_att(): var att = float($set_space/write_to_set_att.get_text()) - set_att_batch(att) + unit_fs.set_att_batch(att) diff --git a/scripts/network.gd b/scripts/network.gd index 3cb8ddb..e2737dd 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -173,7 +173,7 @@ func state_machine_fs(): ## State fs machine if (state_fs == Constants.STATE.IDLE) or (state_fs == Constants.STATE.DONE): if command_stack: - var pack = command_stack.pop_front() + var pack: Array = command_stack.pop_front() send_data(pack) state_fs = Constants.STATE.SEND @@ -193,7 +193,7 @@ func connect_fs(): # Отправить команду для ФС -func send_data(data_to_sand): +func send_data(data_to_sand: PackedByteArray): if client_fs_1.get_status() == 2: var peer = peerstream.get_stream_peer() if peer: