Source code for mxcubeweb.core.adapter.energy_adapter

from typing import ClassVar

from mxcubecore import HardwareRepository as HWR
from mxcubecore.HardwareObjects.abstract import AbstractEnergy

from mxcubeweb.core.adapter.actuator_adapter import ActuatorAdapter
from mxcubeweb.core.adapter.wavelength_adapter import WavelengthAdapter
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel

resource_handler_config = ResourceHandlerConfigModel(
    commands=["set_value", "stop", "get_resolution_limits_for_energy"],
    attributes=["data", "get_value"],
)


[docs]class EnergyAdapter(ActuatorAdapter): """Adapter for Energy Hardware Object. A web socket is used to communicate information on longer running processes. """ SUPPORTED_TYPES: ClassVar[list[object]] = [AbstractEnergy.AbstractEnergy] def __init__( # noqa: D417 self, ho, role, app ): """Initialize. Args: ho (object): Hardware object. """ super().__init__(ho, role, app, resource_handler_config) self._add_adapter("wavelength", self._ho, WavelengthAdapter) self._type = "ENERGY" def get_resolution_limits_for_energy(self, energy: float) -> tuple: return HWR.beamline.resolution.get_limits_for_wavelength( self._ho.calculate_wavelength(energy) )