Настройки редактора
This commit is contained in:
@@ -4,7 +4,7 @@ const ONLINE_TIMEOUT = 5.0 ## Время ожидания пакета от я
|
||||
const RETRY_COUNT = 5 ## Количество повторных отправок
|
||||
|
||||
|
||||
## Блок управления ФС
|
||||
## Блок управления ФС
|
||||
class FGOS:
|
||||
## Коды выполняемых команд
|
||||
enum CmdCode {
|
||||
@@ -21,13 +21,13 @@ class FGOS:
|
||||
BASE_CAN_MACRO_READ = 0x33, ## Команда для чтения последовательности CAN-команд
|
||||
BASE_GET_CURRENT_TEMP = 0x36, ## Команда получения температуры
|
||||
}
|
||||
|
||||
|
||||
enum GROUP {
|
||||
BASE = 0x00,
|
||||
GENERATOR = 0x03,
|
||||
RF = 0x06,
|
||||
}
|
||||
|
||||
|
||||
## Состояние автомата выполнения команды
|
||||
enum CmdState {
|
||||
UNCK, ## Номер команды не ининциирован
|
||||
@@ -36,7 +36,7 @@ class FGOS:
|
||||
DONE, ## Команда выполнена
|
||||
FAIL ## Команда не выполнена
|
||||
}
|
||||
|
||||
|
||||
const CRC32_TABLE: Array = [
|
||||
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
|
||||
0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
|
||||
@@ -70,7 +70,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
|
||||
@@ -78,14 +78,14 @@ class FGOS:
|
||||
const PAYLOAD_OFFSET: int = 0x8
|
||||
const INIT: int = 0xFFFFFFFF
|
||||
const FINAL_XOR_VALUE: int = 0x00000000
|
||||
|
||||
|
||||
signal line_changed(unit: FGOS) ## Вызывается когда меняется состояние связи с ячейкой
|
||||
|
||||
|
||||
var online: bool = false ## Состояние связи с ячейкой
|
||||
var status: = PackedByteArray() ## Поле "состояние прибора"
|
||||
#var fgos_data = {} ## Результат выполнения команды "читать порт"
|
||||
|
||||
|
||||
|
||||
|
||||
func crc32(data: PackedByteArray) -> int:
|
||||
var crc = INIT
|
||||
for byte in data:
|
||||
@@ -94,8 +94,8 @@ class FGOS:
|
||||
# Возвращаем только последние 4 байта в обратном порядке
|
||||
var final_crc = crc ^ FINAL_XOR_VALUE
|
||||
return final_crc
|
||||
|
||||
|
||||
|
||||
|
||||
func _form_packet(group: int, cmd: int, index_size: int, counter: int, data = null):
|
||||
var packet = PackedByteArray()
|
||||
packet.resize(index_size)
|
||||
@@ -119,14 +119,14 @@ class FGOS:
|
||||
elif client == Network.client_fs_3:
|
||||
Network.command_stack_3.append(packet)
|
||||
online = true
|
||||
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
||||
func start_session(counter: int, client: StreamPeer):
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, INDEX_SIZE, counter)
|
||||
@@ -139,8 +139,8 @@ class FGOS:
|
||||
packet.encode_u8(0x3, 0x09)
|
||||
packet.encode_u16(0x8, 0x0014)
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
|
||||
func set_configure_state_msk_modul_2(counter: int, client: StreamPeer):
|
||||
var index_size = 0x20
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size, counter)
|
||||
@@ -157,7 +157,7 @@ class FGOS:
|
||||
packet.encode_u8(0x1C, 0x0f)
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
func set_gen_state(button_state: bool, counter: int, client: StreamPeer):
|
||||
var index_size = 0x1C
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_GEN_STATUS, index_size, counter)
|
||||
@@ -165,15 +165,15 @@ class FGOS:
|
||||
packet.encode_u32(0xC, button_state) ## MODE GEN STATUS
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
func status_can_macro_exec(button_state: bool, counter: int, client: StreamPeer):
|
||||
var index_size = 0x1C
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.STATUS_CAN_MACRO, index_size, counter)
|
||||
packet.encode_u16(0x8, 0x0010)
|
||||
packet.encode_u32(0xC, button_state) ## mode can status
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
|
||||
func set_carrier(installation_frequency: int, counter: int, client: StreamPeer):
|
||||
var index_size = 0x1C
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size, counter)
|
||||
@@ -189,7 +189,7 @@ class FGOS:
|
||||
packet.encode_float(0x18, attenuation)
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
func set_base_can_macro(installation_can_frequency: int, counter: int, client: StreamPeer):
|
||||
var index_size = 0x34
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_WRITE, index_size, counter)
|
||||
@@ -201,8 +201,8 @@ class FGOS:
|
||||
packet.encode_u16(0x28, 0x2aff)
|
||||
packet.encode_u8(0x2B, 0x04)
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
|
||||
func get_carrier(counter: int, client: StreamPeer):
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE, counter)
|
||||
send_packet_to(packet, client)
|
||||
@@ -211,7 +211,7 @@ class FGOS:
|
||||
func get_att_batch(counter: int, client: StreamPeer):
|
||||
var packet = _form_packet(GROUP.RF, CmdCode.READ_ATT, INDEX_SIZE, counter)
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
func get_gen_state(counter: int, client: StreamPeer):
|
||||
var packet = _form_packet(GROUP.GENERATOR, CmdCode.READ_GEN_STATUS, INDEX_SIZE, counter)
|
||||
@@ -221,13 +221,13 @@ class FGOS:
|
||||
func get_base_current_temp(counter: int, client: StreamPeer):
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE, counter)
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
|
||||
func get_base_can_macro(counter: int, client: StreamPeer):
|
||||
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_READ, INDEX_SIZE, counter)
|
||||
send_packet_to(packet, client)
|
||||
|
||||
|
||||
|
||||
|
||||
# Разорвать соединение с ФС
|
||||
func disconnect_fs(client_for_leave: StreamPeer):
|
||||
client_for_leave.disconnect_from_host()
|
||||
|
||||
Reference in New Issue
Block a user