Source code for mxcubecore.HardwareObjects.SOLEIL.PX1.PX1Attenuator

from mxcubecore.BaseHardwareObjects import HardwareObject


[docs]class PX1Attenuator(HardwareObject): stateAttenuator = { "ALARM": "error", "OFF": "error", "RUNNING": "moving", "MOVING": "moving", "STANDBY": "ready", "UNKNOWN": "changed", "EXTRACT": "extract", "INSERT": "insert", }
[docs] def init(self): self.state_chan = self.get_channel_object("state") self.factor_chan = self.get_channel_object("parser") if self.state_chan is not None: self.state_chan.connect_signal("update", self.state_changed) if self.factor_chan is not None: self.factor_chan.connect_signal("update", self.factor_changed) self.connected()
def connected(self): self.set_is_ready(True) def disconnected(self): self.set_is_ready(False) def getAttState(self, value=None): if not self.state_chan: return if value is None: value = self.state_chan.get_value() try: state_str = str(value) retval = self.stateAttenuator[state_str] except Exception: value = None return retval def get_value(self): try: value = round(float(self.factor_chan.get_value()), 1) except Exception: value = None return value def state_changed(self, value=None): state_value = self.getAttState(value) self.emit("attStateChanged", (state_value,)) def factor_changed(self, channelValue): try: value = self.get_value() except Exception: self.log.error( "%s attFactorChanged : received value on channel is not a float value", str(self.name()), ) else: self.emit("attFactorChanged", (value,)) def _set_value(self, value): self.factor_chan.set_value(value)
def test_hwo(self): pass