Source code for mxcubecore.HardwareObjects.PlateManipulatorMaintenance

"""
Plate Manipulator maintenance.
"""

from mxcubecore import HardwareRepository as HWR
from mxcubecore.BaseHardwareObjects import HardwareObject


[docs]class PlateManipulatorMaintenance(HardwareObject): __TYPE__ = "PlateManipulatorMaintenance" """ Actual implementation of the Plate Manipulator MAINTENANCE, COMMANDS ONLY """ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._sc = None
[docs] def init(self): self._sc = HWR.beamline.sample_changer self._scan_limits = ""
def _do_abort(self): """ Abort current command :returns: None :rtype: None """ return self._sc._do_abort() def _move_to_crystal_position(self, args): """ command to move MD head to x, y crystal position argrs: crystall uuid or none for current drop position :returns: None if exception :rtype: None """ return self._sc.move_to_crystal_position(args) def _do_change_mode(self, args): self._sc._do_change_mode(args)
[docs] def set_plate_barcode(self, args): """ Plate barcode is set in config, but can be update here :returns: None :rtype: None """ ret = self._sc.change_plate_barcode(args) if ret: self._update_global_state()
def _update_global_state(self): state_dict, cmd_state, message = self.get_global_state() self.emit("globalStateChanged", (state_dict, cmd_state, message)) def get_global_state(self): """ """ state = self._sc._read_state().upper() scan_limits = self._scan_limits running = state in ("RUNNING",) plate_info_dict = self._sc.get_plate_info() state_dict = { "running": running, "scan_limits": scan_limits, "state": state, "plate_info": plate_info_dict, } cmd_state = { "abort": True, } return state_dict, cmd_state, ""
[docs] def get_cmd_info(self): """return information about existing commands for this object the information is organized as a list with each element contains [cmd_id, cmd_display_name, nb_args, cmd_category, description ]""" cmd_list = [ [ "Actions", [ ["abort", "Abort", "Actions", None], ], ], ] return cmd_list
def send_command(self, cmdname, args=None): if cmdname in ["getOmegaMotorDynamicScanLimits"]: self._get_scan_limits(args) if cmdname in ["moveToCrystalPosition"]: self._move_to_crystal_position(args) if cmdname == "abort": self._do_abort() if cmdname == "setPlateBarcode": self.set_plate_barcode(args) return True