Source code for fastcs.transport.epics.pva.adapter

from fastcs.controller_api import ControllerAPI
from fastcs.transport.adapter import TransportAdapter
from fastcs.transport.epics.docs import EpicsDocs
from fastcs.transport.epics.gui import PvaEpicsGUI
from fastcs.transport.epics.pva.options import EpicsPVAOptions

from .ioc import P4PIOC


[docs] class EpicsPVATransport(TransportAdapter): """PV access transport.""" def __init__( self, controller_api: ControllerAPI, options: EpicsPVAOptions | None = None, ) -> None: self._controller_api = controller_api self._options = options or EpicsPVAOptions() self._pv_prefix = self.options.pva_ioc.pv_prefix self._ioc = P4PIOC(self.options.pva_ioc.pv_prefix, controller_api) @property def options(self) -> EpicsPVAOptions: return self._options async def serve(self) -> None: print(f"Running FastCS IOC: {self._pv_prefix}") await self._ioc.run() def create_docs(self) -> None: EpicsDocs(self._controller_api).create_docs(self.options.docs) def create_gui(self) -> None: PvaEpicsGUI(self._controller_api, self._pv_prefix).create_gui(self.options.gui)