31 lines
2.1 KiB
GDScript
31 lines
2.1 KiB
GDScript
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) ## Вызывается по приёму данных
|
|
|
|
var cmd_state = CmdState.UNCK ## Состояние выполнения команды
|
|
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: StringName = '<без имени>' ## Уникальное имя устройства
|
|
func _init(nm) -> void: self.name = nm
|
|
func _to_string() -> String:
|
|
return String('Unit(\"%s\", %s)' % [self.name, 'на связи' if online else 'отключен'])
|