Рефактор
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user