From cb42abb20f76e744d178ba0157324b094e64e95b Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 28 Jan 2025 22:10:56 +0300 Subject: [PATCH] new class fs --- scripts/FS.gd | 164 +++++++++++++------------------------------- scripts/modul_fs.gd | 125 ++++++++++++--------------------- 2 files changed, 91 insertions(+), 198 deletions(-) diff --git a/scripts/FS.gd b/scripts/FS.gd index adaffab..a3c1caf 100644 --- a/scripts/FS.gd +++ b/scripts/FS.gd @@ -64,6 +64,12 @@ class FGOS: FAIL ## Команда не выполнена } + const INDEX_SIZE = 0xC + const GROUP_OFFSET = 0x0 + const CMD_OFFSET = 0x1 + const COUNTER_OFFSET = 0x4 + const PAYLOAD_OFFSET = 0x8 + var counter: int = 0 @@ -77,21 +83,29 @@ class FGOS: return final_crc + 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 index_size = 0xC - var GROUP = Constants.GROUP.BASE - var CMD = Constants.CMD.START_SESSION - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - Network.command_stack.append(prep_pack) + var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.START_SESSION, 0xC) + _send_packet(packet) get_gen_state() get_att_batch() get_carrier() @@ -99,126 +113,44 @@ class FGOS: func set_gen_state(button_state: bool): var index_size = 0x1C - var GROUP = Constants.GROUP.GENERATOR - var CMD = Constants.CMD.SET_GEN_STATUS - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - prep_pack.encode_u16(0x8, 0x0010) - prep_pack.encode_u32(0xC, button_state) ## MODE GEN STATUS - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - - Network.command_stack.append(prep_pack) + 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 GROUP = Constants.GROUP.BASE - var CMD = Constants.CMD.SET_CARRIER - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - prep_pack.encode_u16(0x8, 0x10) - prep_pack.encode_u64(0xC, wr_freq) ## uint64_t freq low dword/high dword - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - - Network.command_stack.append(prep_pack) + 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 GROUP = Constants.GROUP.RF - var CMD = Constants.CMD.SET_ATT - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - prep_pack.encode_u16(0x8, 0x10) - prep_pack.encode_float(0x18, att) - - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - - Network.command_stack.append(prep_pack) + 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 index_size = 0xC - var GROUP = Constants.GROUP.BASE - var CMD = Constants.CMD.READ_CARRIER - var prep_pack: PackedByteArray = [] - prep_pack.resize(index_size) ## 12 в int - prep_pack.encode_u8(0x0,GROUP) - prep_pack.encode_u8(0x1,CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) ## 16 в int - prep_pack.encode_u32(index_size, crc) - Network.command_stack.append(prep_pack) + var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.READ_CARRIER, INDEX_SIZE) + _send_packet(packet) func get_att_batch(): - var index_size = 0xC - var GROUP = Constants.GROUP.RF - var CMD = Constants.CMD.READ_ATT - var prep_pack: PackedByteArray - prep_pack.resize(index_size) ## 12 в int - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) ## 16 в int - prep_pack.encode_u32(index_size, crc) - Network.command_stack.append(prep_pack) - + var packet = _form_packet(Constants.GROUP.RF, Constants.CMD.READ_ATT, INDEX_SIZE) + _send_packet(packet) + func get_gen_state(): - var index_size = 0xC - var GROUP = Constants.GROUP.GENERATOR - var CMD = Constants.CMD.READ_GEN_STATUS - var prep_pack: PackedByteArray - prep_pack.resize(index_size) ## 12 в int - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) ## 16 в int - prep_pack.encode_u32(index_size, crc) - Network.command_stack.append(prep_pack) + var packet = _form_packet(Constants.GROUP.GENERATOR, Constants.CMD.READ_GEN_STATUS, INDEX_SIZE) + _send_packet(packet) func base_get_current_temp(): - var index_size = 0xC - var GROUP = Constants.GROUP.BASE - var CMD = Constants.CMD.BASE_GET_CURRENT_TEMP - var prep_pack: PackedByteArray - prep_pack.resize(index_size) ## 12 в int - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) ## 16 в int - prep_pack.encode_u32(index_size, crc) - Network.command_stack.append(prep_pack) - + var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.BASE_GET_CURRENT_TEMP, INDEX_SIZE) + _send_packet(packet) diff --git a/scripts/modul_fs.gd b/scripts/modul_fs.gd index 9a43d5f..bb6b381 100644 --- a/scripts/modul_fs.gd +++ b/scripts/modul_fs.gd @@ -50,42 +50,40 @@ func _on_data_received(data: PackedByteArray): $manage_panel/get_gen_status/status_ind.modulate = Color.RED Constants.CMD.BASE_GET_CURRENT_TEMP: if GRP == Constants.GROUP.BASE: - $temp_1.text = '%.2f' % data.decode_float(0xC) + ' C°' - $temp_2.text = str(data.decode_float(0x10)) + ' C°' - $temp_3.text = str(data.decode_float(0x14)) + ' C°' + $temp_1.text = '%.2f' % data.decode_float(0xC) + ' °C' + $temp_2.text = str(data.decode_float(0x10)) + ' °C' + $temp_3.text = str(data.decode_float(0x14)) + ' °C' $read.text = str(data.hex_encode()) -func _form_packet(group, cmd, data = null): +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(0, group) - packet.encode_u8(1, cmd) - packet.encode_u32(4, counter) + 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(8, data) - var crc = crc32(packet) - packet.resize(INDEX_SIZE + 4) - packet.encode_u32(INDEX_SIZE, crc) + 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 index_size = 0xC - var GROUP = Constants.GROUP.BASE - var CMD = Constants.CMD.START_SESSION - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - Network.command_stack.append(prep_pack) + var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.START_SESSION, 0xC) + _send_packet(packet) get_gen_state() get_att_batch() get_carrier() @@ -93,84 +91,47 @@ func start_session(): func set_gen_state(button_state: bool): var index_size = 0x1C - var GROUP = Constants.GROUP.GENERATOR - var CMD = Constants.CMD.SET_GEN_STATUS - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - prep_pack.encode_u16(0x8, 0x0010) - prep_pack.encode_u32(0xC, button_state) ## MODE GEN STATUS - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - - Network.command_stack.append(prep_pack) + 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 GROUP = Constants.GROUP.BASE - var CMD = Constants.CMD.SET_CARRIER - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - prep_pack.encode_u16(0x8, 0x10) - prep_pack.encode_u64(0xC, wr_freq) ## uint64_t freq low dword/high dword - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - - Network.command_stack.append(prep_pack) + 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 GROUP = Constants.GROUP.RF - var CMD = Constants.CMD.SET_ATT - var prep_pack: PackedByteArray = PackedByteArray() - prep_pack.resize(index_size) - - prep_pack.encode_u8(0x0, GROUP) - prep_pack.encode_u8(0x1, CMD) - prep_pack.encode_u32(0x4, counter) - counter += 1 - prep_pack.encode_u16(0x8, 0x10) - prep_pack.encode_float(0x18, att) - - var crc = crc32(prep_pack) - prep_pack.resize(index_size + 4) - prep_pack.encode_u32(index_size, crc) - - Network.command_stack.append(prep_pack) + 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) - Network.command_stack.append(packet) + 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) - Network.command_stack.append(packet) + 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) - Network.command_stack.append(packet) + 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) - Network.command_stack.append(packet) + var packet = _form_packet(Constants.GROUP.BASE, Constants.CMD.BASE_GET_CURRENT_TEMP, INDEX_SIZE) + _send_packet(packet) func crc32(data: PackedByteArray) -> int: