refactor: moved burst_enable/disable, set_trigger to base class

This commit is contained in:
appel_c 2023-11-23 08:36:16 +01:00 committed by wakonig_k
parent 138d18168f
commit a73411646d

View File

@ -1,4 +1,5 @@
import time import time
import enum
from typing import Any, List from typing import Any, List
from ophyd import Device, Component, EpicsSignal, EpicsSignalRO, Kind from ophyd import Device, Component, EpicsSignal, EpicsSignalRO, Kind
from ophyd import PVPositioner, Signal, DeviceStatus from ophyd import PVPositioner, Signal, DeviceStatus
@ -31,6 +32,25 @@ class DelayGeneratorNotOkay(DelayGeneratorError):
"""Error when DDG is not okay""" """Error when DDG is not okay"""
class TriggerSource(enum.IntEnum):
"""
Class for trigger options of DG645
Used to set the trigger source of the DG645 by setting the value
e.g. source.put(TriggerSource.Internal)
Exp:
TriggerSource.Internal
"""
INTERNAL = 0
EXT_RISING_EDGE = 1
EXT_FALLING_EDGE = 2
SS_EXT_RISING_EDGE = 3
SS_EXT_FALLING_EDGE = 4
SINGLE_SHOT = 5
LINE = 6
class DelayStatic(Device): class DelayStatic(Device):
""" """
Static axis for the T0 output channel Static axis for the T0 output channel
@ -414,6 +434,37 @@ class PSIDelayGeneratorBase(Device):
if "io" in channel.component_names and signal in channel.io.component_names: if "io" in channel.component_names and signal in channel.io.component_names:
getattr(channel.io, signal).set(value) getattr(channel.io, signal).set(value)
def set_trigger(self, trigger_source: TriggerSource) -> None:
"""Set trigger source on DDG - possible values defined in TriggerSource enum"""
value = int(trigger_source)
self.source.put(value)
def burst_enable(self, count, delay, period, config="all"):
"""Enable the burst mode"""
# Validate inputs
count = int(count)
assert count > 0, "Number of bursts must be positive"
assert delay >= 0, "Burst delay must be larger than 0"
assert period > 0, "Burst period must be positive"
assert config in [
"all",
"first",
], "Supported burst configs are 'all' and 'first'"
self.burstMode.put(1)
self.burstCount.put(count)
self.burstDelay.put(delay)
self.burstPeriod.put(period)
if config == "all":
self.burstConfig.put(0)
elif config == "first":
self.burstConfig.put(1)
def burst_disable(self):
"""Disable burst mode"""
self.burstMode.put(0)
def stage(self) -> List[object]: def stage(self) -> List[object]:
""" """
Method to stage the device. Method to stage the device.