Source code for mxcubecore.HardwareObjects.SOLEIL.SOLEILSafetyShutter
import logging
from mxcubecore.BaseHardwareObjects import HardwareObject
[docs]class SOLEILSafetyShutter(HardwareObject):
def __init__(self, name):
HardwareObject.__init__(self, name)
self.pss = None
self.shutter = None
[docs] def init(self):
try:
self.shutter = self.get_object_by_role("shutter")
self.pss = self.get_object_by_role("pss")
logging.debug("shutter is " + str(self.shutter))
logging.debug("pss is " + str(self.pss))
self.connect(self.shutter, "shutterStateChanged", self.shutterStateChanged)
self.connect(self.pss, "wagoStateChanged", self.shutterStateChanged)
except Exception:
logging.exception("")
logging.getLogger().warning("pss device not configured")
def getShutterState(self):
logging.debug(" shutter is %s " % str(self.shutter))
if self.pss.getWagoState() != "ready":
return "disabled"
if self.shutter is None:
return "unknown"
return self.shutter.getShutterState()
def shutterStateChanged(self, value):
if self.shutter is None:
return
#
# emit signal
#
self.shutterStateValue = value # str(value)
self.emit("shutterStateChanged", (self.getShutterState(),))
self.emit("stateChanged", (self.getShutterState(),))
def openShutter(self):
if self.shutter is None:
return
if self.pss is None:
logging.error("no pss device for safety shutter. check configuration")
return
if self.pss.getWagoState() == "ready":
self.shutter.openShutter()
logging.info("Opening shutter ok")
else:
logging.warning("cannot open safety shutter. Check interlock")
def closeShutter(self):
if self.shutter is None:
return
self.shutter.closeShutter()