Skip to content

Commit

Permalink
replace-ad_rw (#274)
Browse files Browse the repository at this point in the history
* replace-ad_rw

* replaced ad_r

* added _RBV for ad_rw and ad_r

* code formatting

* removed _RBV where not required

* removed suffix from epics_signal_rw_rbv

---------

Co-authored-by: Tom C (DLS) <[email protected]>
  • Loading branch information
ZohebShaikh and coretl authored May 9, 2024
1 parent 09b4867 commit ce5d585
Show file tree
Hide file tree
Showing 9 changed files with 71 additions and 69 deletions.
4 changes: 0 additions & 4 deletions src/ophyd_async/epics/areadetector/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
ImageMode,
NDAttributeDataType,
NDAttributesXML,
ad_r,
ad_rw,
)
from .vimba import VimbaDetector

Expand All @@ -19,8 +17,6 @@
"SingleTriggerDet",
"FileWriteMode",
"ImageMode",
"ad_r",
"ad_rw",
"NDAttributeDataType",
"NDAttributesXML",
"PilatusDetector",
Expand Down
22 changes: 12 additions & 10 deletions src/ophyd_async/epics/areadetector/drivers/ad_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
set_and_wait_for_value,
)

from ...signal.signal import epics_signal_rw
from ..utils import ImageMode, ad_r, ad_rw
from ...signal.signal import epics_signal_r, epics_signal_rw, epics_signal_rw_rbv
from ..utils import ImageMode
from ..writers.nd_plugin import NDArrayBase


Expand Down Expand Up @@ -43,14 +43,16 @@ class DetectorState(str, Enum):
class ADBase(NDArrayBase):
def __init__(self, prefix: str, name: str = "") -> None:
# Define some signals
self.acquire = ad_rw(bool, prefix + "Acquire")
self.acquire_time = ad_rw(float, prefix + "AcquireTime")
self.num_images = ad_rw(int, prefix + "NumImages")
self.image_mode = ad_rw(ImageMode, prefix + "ImageMode")
self.array_counter = ad_rw(int, prefix + "ArrayCounter")
self.array_size_x = ad_r(int, prefix + "ArraySizeX")
self.array_size_y = ad_r(int, prefix + "ArraySizeY")
self.detector_state = ad_r(DetectorState, prefix + "DetectorState")
self.acquire = epics_signal_rw_rbv(bool, prefix + "Acquire")
self.acquire_time = epics_signal_rw_rbv(float, prefix + "AcquireTime")
self.num_images = epics_signal_rw_rbv(int, prefix + "NumImages")
self.image_mode = epics_signal_rw_rbv(ImageMode, prefix + "ImageMode")
self.array_counter = epics_signal_rw_rbv(int, prefix + "ArrayCounter")
self.array_size_x = epics_signal_r(int, prefix + "ArraySizeX_RBV")
self.array_size_y = epics_signal_r(int, prefix + "ArraySizeY_RBV")
self.detector_state = epics_signal_r(
DetectorState, prefix + "DetectorState_RBV"
)
# There is no _RBV for this one
self.wait_for_plugins = epics_signal_rw(bool, prefix + "WaitForPlugins")
super().__init__(prefix, name=name)
Expand Down
12 changes: 7 additions & 5 deletions src/ophyd_async/epics/areadetector/drivers/aravis_driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from typing import Callable, Dict, Literal, Optional, Tuple

from ophyd_async.epics.areadetector.drivers import ADBase
from ophyd_async.epics.areadetector.utils import ad_r, ad_rw
from ophyd_async.epics.signal.signal import epics_signal_r, epics_signal_rw_rbv


class AravisTriggerMode(str, Enum):
Expand Down Expand Up @@ -138,10 +138,12 @@ class AravisDriver(ADBase):
"""

def __init__(self, prefix: str, name: str = "") -> None:
self.trigger_mode = ad_rw(AravisTriggerMode, prefix + "TriggerMode")
self.trigger_source = ad_rw(str, prefix + "TriggerSource")
self.model = ad_r(str, prefix + "Model")
self.pixel_format = ad_rw(str, prefix + "PixelFormat")
self.trigger_mode = epics_signal_rw_rbv(
AravisTriggerMode, prefix + "TriggerMode"
)
self.trigger_source = epics_signal_rw_rbv(str, prefix + "TriggerSource")
self.model = epics_signal_r(str, prefix + "Model_RBV")
self.pixel_format = epics_signal_rw_rbv(str, prefix + "PixelFormat")
self.dead_time: Optional[float] = None
super().__init__(prefix, name=name)

Expand Down
11 changes: 7 additions & 4 deletions src/ophyd_async/epics/areadetector/drivers/kinetix_driver.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from enum import Enum

from ..utils import ad_rw
from ophyd_async.epics.signal.signal import epics_signal_rw_rbv

from .ad_base import ADBase


Expand All @@ -18,7 +19,9 @@ class KinetixReadoutMode(str, Enum):

class KinetixDriver(ADBase):
def __init__(self, prefix: str, name: str = "") -> None:
# self.pixel_format = ad_rw(PixelFormat, prefix + "PixelFormat")
self.trigger_mode = ad_rw(KinetixTriggerMode, prefix + "TriggerMode")
self.mode = ad_rw(KinetixReadoutMode, prefix + "ReadoutPortIdx")
# self.pixel_format = epics_signal_rw_rbv(PixelFormat, prefix + "PixelFormat")
self.trigger_mode = epics_signal_rw_rbv(
KinetixTriggerMode, prefix + "TriggerMode"
)
self.mode = epics_signal_rw_rbv(KinetixReadoutMode, prefix + "ReadoutPortIdx")
super().__init__(prefix, name)
7 changes: 5 additions & 2 deletions src/ophyd_async/epics/areadetector/drivers/pilatus_driver.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from enum import Enum

from ..utils import ad_rw
from ophyd_async.epics.signal.signal import epics_signal_rw_rbv

from .ad_base import ADBase


Expand All @@ -14,5 +15,7 @@ class PilatusTriggerMode(str, Enum):

class PilatusDriver(ADBase):
def __init__(self, prefix: str, name: str = "") -> None:
self.trigger_mode = ad_rw(PilatusTriggerMode, prefix + "TriggerMode")
self.trigger_mode = epics_signal_rw_rbv(
PilatusTriggerMode, prefix + "TriggerMode"
)
super().__init__(prefix, name)
19 changes: 12 additions & 7 deletions src/ophyd_async/epics/areadetector/drivers/vimba_driver.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from enum import Enum

from ..utils import ad_rw
from ophyd_async.epics.signal.signal import epics_signal_rw_rbv

from .ad_base import ADBase


Expand Down Expand Up @@ -47,12 +48,16 @@ class VimbaExposeOutMode(str, Enum):

class VimbaDriver(ADBase):
def __init__(self, prefix: str, name: str = "") -> None:
# self.pixel_format = ad_rw(PixelFormat, prefix + "PixelFormat")
self.convert_format = ad_rw(
# self.pixel_format = epics_signal_rw_rbv(PixelFormat, prefix + "PixelFormat")
self.convert_format = epics_signal_rw_rbv(
VimbaConvertFormat, prefix + "ConvertPixelFormat"
) # Pixel format of data outputted to AD
self.trig_source = ad_rw(VimbaTriggerSource, prefix + "TriggerSource")
self.trigger_mode = ad_rw(VimbaOnOff, prefix + "TriggerMode")
self.overlap = ad_rw(VimbaOverlap, prefix + "TriggerOverlap")
self.expose_mode = ad_rw(VimbaExposeOutMode, prefix + "ExposureMode")
self.trig_source = epics_signal_rw_rbv(
VimbaTriggerSource, prefix + "TriggerSource"
)
self.trigger_mode = epics_signal_rw_rbv(VimbaOnOff, prefix + "TriggerMode")
self.overlap = epics_signal_rw_rbv(VimbaOverlap, prefix + "TriggerOverlap")
self.expose_mode = epics_signal_rw_rbv(
VimbaExposeOutMode, prefix + "ExposureMode"
)
super().__init__(prefix, name)
14 changes: 2 additions & 12 deletions src/ophyd_async/epics/areadetector/utils.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
from enum import Enum
from typing import Optional, Type
from typing import Optional
from xml.etree import cElementTree as ET

from ophyd_async.core import DEFAULT_TIMEOUT, SignalR, SignalRW, T, wait_for_value

from ..signal.signal import epics_signal_r, epics_signal_rw


def ad_rw(datatype: Type[T], prefix: str) -> SignalRW[T]:
return epics_signal_rw(datatype, prefix + "_RBV", prefix)


def ad_r(datatype: Type[T], prefix: str) -> SignalR[T]:
return epics_signal_r(datatype, prefix + "_RBV")
from ophyd_async.core import DEFAULT_TIMEOUT, SignalRW, T, wait_for_value


class FileWriteMode(str, Enum):
Expand Down
40 changes: 21 additions & 19 deletions src/ophyd_async/epics/areadetector/writers/nd_file_hdf.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from enum import Enum

from ...signal.signal import epics_signal_rw
from ..utils import FileWriteMode, ad_r, ad_rw
from ...signal.signal import epics_signal_r, epics_signal_rw, epics_signal_rw_rbv
from ..utils import FileWriteMode
from .nd_plugin import NDPluginBase


Expand All @@ -19,22 +19,24 @@ class Compression(str, Enum):
class NDFileHDF(NDPluginBase):
def __init__(self, prefix: str, name="") -> None:
# Define some signals
self.position_mode = ad_rw(bool, prefix + "PositionMode")
self.compression = ad_rw(Compression, prefix + "Compression")
self.num_extra_dims = ad_rw(int, prefix + "NumExtraDims")
self.file_path = ad_rw(str, prefix + "FilePath")
self.file_name = ad_rw(str, prefix + "FileName")
self.file_path_exists = ad_r(bool, prefix + "FilePathExists")
self.file_template = ad_rw(str, prefix + "FileTemplate")
self.full_file_name = ad_r(str, prefix + "FullFileName")
self.file_write_mode = ad_rw(FileWriteMode, prefix + "FileWriteMode")
self.num_capture = ad_rw(int, prefix + "NumCapture")
self.num_captured = ad_r(int, prefix + "NumCaptured")
self.swmr_mode = ad_rw(bool, prefix + "SWMRMode")
self.lazy_open = ad_rw(bool, prefix + "LazyOpen")
self.capture = ad_rw(bool, prefix + "Capture")
self.position_mode = epics_signal_rw_rbv(bool, prefix + "PositionMode")
self.compression = epics_signal_rw_rbv(Compression, prefix + "Compression")
self.num_extra_dims = epics_signal_rw_rbv(int, prefix + "NumExtraDims")
self.file_path = epics_signal_rw_rbv(str, prefix + "FilePath")
self.file_name = epics_signal_rw_rbv(str, prefix + "FileName")
self.file_path_exists = epics_signal_r(bool, prefix + "FilePathExists_RBV")
self.file_template = epics_signal_rw_rbv(str, prefix + "FileTemplate")
self.full_file_name = epics_signal_r(str, prefix + "FullFileName_RBV")
self.file_write_mode = epics_signal_rw_rbv(
FileWriteMode, prefix + "FileWriteMode"
)
self.num_capture = epics_signal_rw_rbv(int, prefix + "NumCapture")
self.num_captured = epics_signal_r(int, prefix + "NumCaptured_RBV")
self.swmr_mode = epics_signal_rw_rbv(bool, prefix + "SWMRMode")
self.lazy_open = epics_signal_rw_rbv(bool, prefix + "LazyOpen")
self.capture = epics_signal_rw_rbv(bool, prefix + "Capture")
self.flush_now = epics_signal_rw(bool, prefix + "FlushNow")
self.array_size0 = ad_r(int, prefix + "ArraySize0")
self.array_size1 = ad_r(int, prefix + "ArraySize1")
self.xml_file_name = ad_rw(str, prefix + "XMLFileName")
self.array_size0 = epics_signal_r(int, prefix + "ArraySize0_RBV")
self.array_size1 = epics_signal_r(int, prefix + "ArraySize1_RBV")
self.xml_file_name = epics_signal_rw_rbv(str, prefix + "XMLFileName")
super().__init__(prefix, name)
11 changes: 5 additions & 6 deletions src/ophyd_async/epics/areadetector/writers/nd_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from ophyd_async.core import Device
from ophyd_async.epics.signal import epics_signal_rw

from ..utils import ad_r, ad_rw
from ophyd_async.epics.signal.signal import epics_signal_r, epics_signal_rw_rbv


class Callback(str, Enum):
Expand All @@ -13,16 +12,16 @@ class Callback(str, Enum):

class NDArrayBase(Device):
def __init__(self, prefix: str, name: str = "") -> None:
self.unique_id = ad_r(int, prefix + "UniqueId")
self.unique_id = epics_signal_r(int, prefix + "UniqueId_RBV")
self.nd_attributes_file = epics_signal_rw(str, prefix + "NDAttributesFile")
super().__init__(name)


class NDPluginBase(NDArrayBase):
def __init__(self, prefix: str, name: str = "") -> None:
self.nd_array_port = ad_rw(str, prefix + "NDArrayPort")
self.enable_callback = ad_rw(Callback, prefix + "EnableCallbacks")
self.nd_array_address = ad_rw(int, prefix + "NDArrayAddress")
self.nd_array_port = epics_signal_rw_rbv(str, prefix + "NDArrayPort")
self.enable_callback = epics_signal_rw_rbv(Callback, prefix + "EnableCallbacks")
self.nd_array_address = epics_signal_rw_rbv(int, prefix + "NDArrayAddress")
super().__init__(prefix, name)


Expand Down

0 comments on commit ce5d585

Please sign in to comment.