107 lines
4.0 KiB
GDScript
107 lines
4.0 KiB
GDScript
extends "res://scenes/контроль/прибор.gd"
|
||
|
||
enum STATE_VAL {
|
||
NONE = 0,
|
||
GOOD = 1,
|
||
ERROR = 2 }
|
||
|
||
var timer = Timer.new()
|
||
|
||
var DEV_LIST = ['00:1f.6', '07:00.0', '08:00.0', '0b:00.0']
|
||
var USB_TRACKERBALL = '046d:c31c'
|
||
var REVFF = '(rev ff)'
|
||
|
||
|
||
func _ready() -> void:
|
||
var unit_key = settings.get_unit_key('уарэп-эмс')
|
||
var unit_uf = network.units[unit_key]
|
||
|
||
var unit_key_5p28 = settings.get_unit_key('уарэп-5п28')
|
||
var unit_5p28 = network.units[unit_key_5p28]
|
||
|
||
self.add_child(timer)
|
||
timer.connect('timeout', Callable(self, 'on_timer').bind(unit_uf, unit_5p28))
|
||
timer.start(1)
|
||
|
||
|
||
func on_timer(unit_uf, unit_5p28):
|
||
Control_VK() # проверка трекбола и pci
|
||
if unit_5p28.online: # проверка внешнего коммутатора
|
||
$ref_uf/ref_bu1/ref_A13_MKEG.state = STATE_VAL.GOOD
|
||
else:
|
||
$ref_uf/ref_bu1/ref_A13_MKEG.state = STATE_VAL.NONE
|
||
|
||
if unit_uf.online: # проверка ЯУ, внутреннего коммутатора и ИП-5Б
|
||
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.GOOD
|
||
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.GOOD
|
||
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.GOOD
|
||
Control_EMS(unit_uf.status) # проверка ЭМС ячеек
|
||
else:
|
||
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A5_EMS.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A6_EMS.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.NONE
|
||
status_uf() # отслеживание состояния прибора
|
||
|
||
func Control_VK() -> void:
|
||
var out_usb_str = ''
|
||
var out_pci_str = ''
|
||
var out_usb = []
|
||
var out_pci = []
|
||
|
||
OS.execute('lsusb', [], out_usb)
|
||
for element in out_usb:
|
||
out_usb_str += element
|
||
|
||
OS.execute('lspci', [], out_pci)
|
||
for element in out_pci:
|
||
out_pci_str += element
|
||
|
||
out_usb_str = out_usb_str.split("\n")
|
||
out_pci_str = out_pci_str.split("\n")
|
||
|
||
var i: int = 0
|
||
|
||
for string in out_usb_str:
|
||
if USB_TRACKERBALL in string:
|
||
i += 1
|
||
break
|
||
for string in out_pci_str:
|
||
for item in DEV_LIST:
|
||
if item in string:
|
||
i += 1
|
||
if REVFF in string:
|
||
i -= 1
|
||
break
|
||
|
||
if i == (len(DEV_LIST) + 1):
|
||
$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.GOOD
|
||
else:
|
||
$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.ERROR
|
||
|
||
|
||
func Control_EMS(status:Array) -> void:
|
||
$ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.GOOD if ((status[0] >> 0) & 1) and ((status[0] >> 3) & 1) else STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A5_EMS.state = STATE_VAL.GOOD if ((status[0] >> 1) & 1) and ((status[0] >> 4) & 1) else STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A6_EMS.state = STATE_VAL.GOOD if ((status[0] >> 2) & 1) and ((status[0] >> 5) & 1) else STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.GOOD if ((status[2] >> 6) & 1) else STATE_VAL.ERROR
|
||
|
||
|
||
func status_uf() -> void:
|
||
var status_bu:int = $ref_uf/ref_bu1/ref_A8_BU.state
|
||
var status_yay:int = $ref_uf/ref_kassetav13/ref_A7_YAU07.state
|
||
var status_kems:int = $ref_uf/ref_kassetav13/ref_A4_KEMS.state
|
||
var status_ems0:int = $ref_uf/ref_kassetav13/ref_A5_EMS.state
|
||
var status_ems1:int = $ref_uf/ref_kassetav13/ref_A6_EMS.state
|
||
|
||
if (status_yay == 1) and (status_bu == 1) and (status_kems == 1) and (status_ems0 == 1) and (status_ems1 == 1):
|
||
$lbl_header2.text = "Прибор исправен"
|
||
$lbl_header2.modulate = Color(0,1,0,1)
|
||
else:
|
||
$lbl_header2.text = "Прибор не исправен"
|
||
$lbl_header2.modulate = Color(1,0,0,1)
|
||
$lbl_header2.visible = true
|