Source code for siriushlacon.regatron.regatron

import logging
import json

from pydm import Display
from pydm.utilities import IconFont
from pydm.widgets.channel import PyDMChannel

from siriushlacon.regatron.consts import (
    COMPLETE_UI,
    ERR_MAIN,
    WARN_MAIN,
    EXTENDED_MAP,
    STANDARD_MAP,
    ALARM_MAIN,
)

logger = logging.getLogger()


[docs]def get_report(value, map_, msg): erros = [] for k, v in map_.items(): if value & 1 << k: erros.append(v) logger.info("{} {}".format(msg, erros)) return erros
[docs]class Regatron(Display): def __init__(self, parent=None, macros=None, **kwargs): super().__init__(parent=parent, macros=macros, ui_filename=COMPLETE_UI) self.setup_icons() self.btnErr.filenames = [ERR_MAIN] self.btnWarn.filenames = [WARN_MAIN] self.btnSysHistory.filenames = [ALARM_MAIN] self.btnSysHistory.macros = json.dumps({"P": macros["P"], "T": "Sys"}) self.btnModHistory.filenames = [ALARM_MAIN] self.btnModHistory.macros = json.dumps({"P": macros["P"], "T": "Mod"}) # Warning Groups self.ch_mod_std_warn_report = PyDMChannel( address="ca://" + macros["P"] + ":Mod-StdWarnGroup-Mon", value_slot=self.get_mod_std_warn_report, ) self.ch_mod_std_warn_report.connect() self.ch_sys_std_warn_report = PyDMChannel( address="ca://" + macros["P"] + ":Sys-StdWarnGroup-Mon", value_slot=self.get_sys_std_warn_report, ) self.ch_sys_std_warn_report.connect() self.ch_mod_ext_warn_report = PyDMChannel( address="ca://" + macros["P"] + ":Mod-ExtWarnGroup-Mon", value_slot=self.get_mod_ext_warn_report, ) self.ch_mod_ext_warn_report.connect() self.ch_sys_ext_warn_report = PyDMChannel( address="ca://" + macros["P"] + ":Sys-ExtWarnGroup-Mon", value_slot=self.get_sys_ext_warn_report, ) self.ch_sys_ext_warn_report.connect() # Error Groups self.ch_mod_std_error_report = PyDMChannel( address="ca://" + macros["P"] + ":Mod-StdErrGroup-Mon", value_slot=self.get_mod_std_error_report, ) self.ch_mod_std_error_report.connect() self.ch_sys_std_error_report = PyDMChannel( address="ca://" + macros["P"] + ":Sys-StdErrGroup-Mon", value_slot=self.get_sys_std_error_report, ) self.ch_sys_std_error_report.connect() self.ch_mod_ext_error_report = PyDMChannel( address="ca://" + macros["P"] + ":Mod-ExtErrGroup-Mon", value_slot=self.get_mod_ext_error_report, ) self.ch_mod_std_error_report.connect() self.ch_sys_ext_error_report = PyDMChannel( address="ca://" + macros["P"] + ":Sys-ExtErrGroup-Mon", value_slot=self.get_sys_ext_error_report, ) self.ch_sys_ext_error_report.connect() # Warning
[docs] def get_mod_ext_warn_report(self, value): self.lblModGenWarnExt.setText( "\n".join(get_report(value, EXTENDED_MAP, "Module extended")) )
[docs] def get_sys_ext_warn_report(self, value): self.lblSysGenWarnExt.setText( "\n".join(get_report(value, EXTENDED_MAP, "System extended")) )
[docs] def get_mod_std_warn_report(self, value): self.lblModGenWarnStd.setText( "\n".join(get_report(value, STANDARD_MAP, "Module standard")) )
[docs] def get_sys_std_warn_report(self, value): self.lblSysGenWarnStd.setText( "\n".join(get_report(value, STANDARD_MAP, "System standard")) )
# Error
[docs] def get_mod_std_error_report(self, value): self.lblModGenErrStd.setText( "\n".join(get_report(value, STANDARD_MAP, "Module standard")) )
[docs] def get_mod_ext_error_report(self, value): self.lblModGenErrExt.setText( "\n".join(get_report(value, EXTENDED_MAP, "Module extended")) )
[docs] def get_sys_std_error_report(self, value): self.lblSysGenErrStd.setText( "\n".join(get_report(value, STANDARD_MAP, "System standard")) )
[docs] def get_sys_ext_error_report(self, value): self.lblSysGenErrExt.setText( "\n".join(get_report(value, EXTENDED_MAP, "System extended")) )
[docs] def setup_icons(self): REFRESH_ICON = IconFont().icon("refresh") # Overview self.btnSstate.setIcon(REFRESH_ICON) self.btnSCtrlMode.setIcon(REFRESH_ICON) self.btnMState.setIcon(REFRESH_ICON) self.btnMCtrlMode.setIcon(REFRESH_ICON) self.btnActIFace.setIcon(REFRESH_ICON) self.btnSave.setIcon(IconFont().icon("download")) self.btnClear.setIcon(IconFont().icon("eraser")) # Module self.btnMMV.setIcon(REFRESH_ICON) self.btnMMC.setIcon(REFRESH_ICON) self.btnMMinC.setIcon(REFRESH_ICON) self.btnMMP.setIcon(REFRESH_ICON) self.btnMMinV.setIcon(REFRESH_ICON) self.btnMMinP.setIcon(REFRESH_ICON) self.btnMRes.setIcon(REFRESH_ICON) self.btnNomDCV.setIcon(REFRESH_ICON) self.btnDCV.setIcon(REFRESH_ICON) self.btnMOV.setIcon(REFRESH_ICON) self.btnMOC.setIcon(REFRESH_ICON) self.btnMOP.setIcon(REFRESH_ICON) self.btnMVPRb.setIcon(REFRESH_ICON) self.btnMVLQ4Rb.setIcon(REFRESH_ICON) self.btnMCPRb.setIcon(REFRESH_ICON) self.btnMCQLRb.setIcon(REFRESH_ICON) self.btnMPPRb.setIcon(REFRESH_ICON) self.btnMPLQRb.setIcon(REFRESH_ICON) self.btnMRPRb.setIcon(REFRESH_ICON) # System self.PyDMPushButton_17.setIcon(REFRESH_ICON) self.PyDMPushButton_18.setIcon(REFRESH_ICON) self.PyDMPushButton_19.setIcon(REFRESH_ICON) self.PyDMPushButton_20.setIcon(REFRESH_ICON) self.PyDMPushButton_21.setIcon(REFRESH_ICON) self.PyDMPushButton_22.setIcon(REFRESH_ICON) self.PyDMPushButton_23.setIcon(REFRESH_ICON) self.PyDMPushButton_28.setIcon(REFRESH_ICON) self.PyDMPushButton_29.setIcon(REFRESH_ICON) self.PyDMPushButton_45.setIcon(REFRESH_ICON) self.PyDMPushButton_46.setIcon(REFRESH_ICON) self.PyDMPushButton_47.setIcon(REFRESH_ICON) self.PyDMPushButton_48.setIcon(REFRESH_ICON) self.PyDMPushButton_49.setIcon(REFRESH_ICON) self.PyDMPushButton_57.setIcon(REFRESH_ICON) self.PyDMPushButton_71.setIcon(REFRESH_ICON) self.PyDMPushButton_73.setIcon(REFRESH_ICON) # Advanced self.PyDMPushButton_41.setIcon(REFRESH_ICON) self.PyDMPushButton_50.setIcon(REFRESH_ICON) self.PyDMPushButton_51.setIcon(REFRESH_ICON) self.PyDMPushButton_52.setIcon(REFRESH_ICON)