class_name base_unit extends Node ## Базовый класс для управления подключаемыми устройствами class Unit extends Object: ## Состояние автомата выполнения команды. enum CmdState { UNCK, ## Номер команды не ининциирован. SEND, ## Буфер готов для отправки. WAIT, ## Ожидание выполнения. DONE, ## Команда выполнена. FAIL, ## Команда не выполнена. } signal line_changed(unit) ## Вызывается при изменении состояния связи signal command_done(unit) ## Вызывается после успешного выполнения команды. signal command_fail(unit) ## Вызывается если возникла ошибка при выполнении команды и команда не выполнена. signal parse_failed(unit) ## Вызывается при обнаружении ошибки во входных данных signal data_received(data: PackedByteArray) ## Вызывается по приёму данных var tx_data: = PackedByteArray() ## Буфер для отправки. var tx_len: int = 0 ## Длина последнего отправленного пакета. var tx_tick: int = 0 ## Тик-время отправки буфера var rx_tick: int = 0 ## Тик-время последнего приёма данных var online: bool = false ## Состояние подключения устройства var name: String = '<без имени>' ## Уникальное имя устройства func _init(nm) -> void: self.name = nm func _to_string() -> String: return String('<\"%s\", %s>' % [self.name, ['отключен', 'на связи'][int(online)]])