Source code for psj_lib.devices.nv_family.capabilities.nv_modulation_source

"""NV-specific modulation source capability and source enum."""

from ...base.capabilities import ModulationSource, ModulationSourceTypes

[docs] class NVModulationSourceTypes(ModulationSourceTypes): """NV modulation source selection. Defines available control sources for setpoint modulation on NV devices. Attributes: ENCODER_ANALOG: Front-panel encoder + analog control path. SERIAL: Serial command path. Example: >>> from psj_lib import NVModulationSourceTypes >>> await channel.modulation_source.set_source(NVModulationSourceTypes.SERIAL) >>> source = await channel.modulation_source.get_source() >>> print(source.name) """ ENCODER_ANALOG = 0 SERIAL = 1
[docs] class NVModulationSource(ModulationSource): """Modulation source capability with client-side readback cache. NV devices do not expose readback for modulation source, therefore the last written value is returned by :meth:`get_source`. """
[docs] def __init__(self, *args, **kwargs): """Initialize modulation source capability. Args: *args: Positional arguments forwarded to :class:`ModulationSource`. **kwargs: Keyword arguments forwarded to :class:`ModulationSource`. """ super().__init__(*args, **kwargs) self._source_cache: NVModulationSourceTypes = NVModulationSourceTypes.ENCODER_ANALOG
[docs] async def set_source(self, source: NVModulationSourceTypes) -> None: """Set modulation source. Args: source: Desired NV modulation source. Returns: None """ await super().set_source(source) self._source_cache = source
[docs] async def get_source(self) -> NVModulationSourceTypes: """Get current modulation source. NV hardware does not provide source readback. This returns the last value set via :meth:`set_source`. Returns: Last configured :class:`NVModulationSourceTypes` value. """ return self._source_cache