module fs 4

This commit is contained in:
2025-02-07 04:14:27 +03:00
parent 2f93972202
commit c342115adf
5 changed files with 1150 additions and 144 deletions

View File

@@ -66,6 +66,7 @@ class FGOS:
0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D]
const INDEX_SIZE: int = 0xC
const GROUP_OFFSET: int = 0x0
const CMD_OFFSET: int = 0x1
@@ -76,7 +77,6 @@ class FGOS:
signal line_changed(unit: FGOS) ## Вызывается когда меняется состояние связи с ячейкой
var counter: int = 0
var online: bool = false ## Состояние связи с ячейкой
var status: = PackedByteArray() ## Поле "состояние прибора"
#var fgos_data = {} ## Результат выполнения команды "читать порт"
@@ -92,7 +92,7 @@ class FGOS:
return final_crc
func _form_packet(group: int, cmd: int, index_size: int, data = null):
func _form_packet(group: int, cmd: int, index_size: int, counter: int, data = null):
var packet = PackedByteArray()
packet.resize(index_size)
packet.encode_u8(GROUP_OFFSET, group)
@@ -108,79 +108,80 @@ class FGOS:
var crc = crc32(packet)
packet.resize(packet.size() + 4)
packet.encode_u32(packet.size() - 4, crc)
#Network.command_stack.append(packet)
Network.command_stack_2.append(packet)
func _parse(rx_data: PackedByteArray):
if not online:
online = true
emit_signal('line_changed', self)
var status_len = rx_data.decode_u16(6) # Длина массива байтового "состояние прибора"
var i: = 0
var len_rx_data: = rx_data.size()
status.resize(status_len)
while i < status_len:
var byte_i = i + 8
if byte_i < len_rx_data:
status[i] = rx_data[byte_i] # Массив байтовый "состояние прибора"
i += 1
emit_signal('data_received', self)
Network.command_stack.append(packet)
func send_fs_data(data_to_sand: PackedByteArray, client_fs: StreamPeer, peerstream_fs: PacketPeer):
if client_fs.get_status() == 2:
var peer = peerstream_fs.get_stream_peer()
if peer:
peer.put_data(data_to_sand)
else:
print_debug('client_fs.get_status != 2 !!!')
#func _parse(rx_data: PackedByteArray):
#if not online:
#online = true
#emit_signal('line_changed', self)
#
#var status_len = rx_data.decode_u16(6) # Длина массива байтового "состояние прибора"
#
#var i: = 0
#var len_rx_data: = rx_data.size()
#status.resize(status_len)
#while i < status_len:
#var byte_i = i + 8
#if byte_i < len_rx_data:
#status[i] = rx_data[byte_i] # Массив байтовый "состояние прибора"
#i += 1
#emit_signal('data_received', self)
func start_session():
counter = 0
var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, 0xC)
func start_session(counter: int):
var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, INDEX_SIZE, counter)
_send_packet(packet)
get_gen_state()
get_att_batch()
get_carrier()
func set_gen_state(button_state: bool):
func set_gen_state(button_state: bool, counter: int):
var index_size = 0x1C
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_GEN_STATUS, index_size)
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_GEN_STATUS, index_size, counter)
packet.encode_u16(0x8, 0x0010)
packet.encode_u32(0xC, button_state) ## MODE GEN STATUS
_send_packet(packet)
get_gen_state()
func set_carrier(installation_frequency: int):
func set_carrier(installation_frequency: int, counter: int):
var index_size = 0x1C
var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size)
var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size, counter)
packet.encode_u16(0x8, 0x10)
packet.encode_u64(0xC, installation_frequency) ## uint64_t freq low dword/high dword
_send_packet(packet)
func set_att_batch(attenuation: float):
func set_att_batch(attenuation: float, counter: int):
var index_size = 0x1C
var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size)
var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size, counter)
packet.encode_u16(0x8, 0x10)
packet.encode_float(0x18, attenuation)
_send_packet(packet)
func get_carrier():
var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE)
func get_carrier(counter: int):
var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE, counter)
_send_packet(packet)
func get_att_batch():
var packet = _form_packet(GROUP.RF, CmdCode.READ_ATT, INDEX_SIZE)
func get_att_batch(counter: int):
var packet = _form_packet(GROUP.RF, CmdCode.READ_ATT, INDEX_SIZE, counter)
_send_packet(packet)
func get_gen_state():
var packet = _form_packet(GROUP.GENERATOR, CmdCode.READ_GEN_STATUS, INDEX_SIZE)
func get_gen_state(counter: int):
var packet = _form_packet(GROUP.GENERATOR, CmdCode.READ_GEN_STATUS, INDEX_SIZE, counter)
_send_packet(packet)
func base_get_current_temp():
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE)
func base_get_current_temp(counter: int):
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE, counter)
_send_packet(packet)