Source code for ophyd_async.panda._common_blocks
from __future__ import annotations
from enum import Enum
from ophyd_async.core import Device, DeviceVector, SignalR, SignalRW
from ophyd_async.core.signal_backend import SubsetEnum
from ophyd_async.panda._table import DatasetTable, SeqTable
[docs]
class DataBlock(Device):
# In future we may decide to make hdf_* optional
hdf_directory: SignalRW[str]
hdf_file_name: SignalRW[str]
num_capture: SignalRW[int]
num_captured: SignalR[int]
capture: SignalRW[bool]
flush_period: SignalRW[float]
datasets: SignalR[DatasetTable]
[docs]
class PulseBlock(Device):
delay: SignalRW[float]
width: SignalRW[float]
[docs]
class PcompDirectionOptions(str, Enum):
positive = "Positive"
negative = "Negative"
either = "Either"
EnableDisableOptions = SubsetEnum["ZERO", "ONE"]
[docs]
class PcompBlock(Device):
active: SignalR[bool]
dir: SignalRW[PcompDirectionOptions]
enable: SignalRW[EnableDisableOptions]
pulses: SignalRW[int]
start: SignalRW[int]
step: SignalRW[int]
width: SignalRW[int]
[docs]
class TimeUnits(str, Enum):
min = "min"
s = "s"
ms = "ms"
us = "us"
[docs]
class SeqBlock(Device):
table: SignalRW[SeqTable]
active: SignalRW[bool]
repeats: SignalRW[int]
prescale: SignalRW[float]
prescale_units: SignalRW[TimeUnits]
enable: SignalRW[EnableDisableOptions]
[docs]
class PcapBlock(Device):
active: SignalR[bool]
arm: SignalRW[bool]
[docs]
class CommonPandaBlocks(Device):
pulse: DeviceVector[PulseBlock]
seq: DeviceVector[SeqBlock]
pcomp: DeviceVector[PcompBlock]
pcap: PcapBlock
data: DataBlock