From 72c61adaee46edae90bac3d7edc034c1a71b084a Mon Sep 17 00:00:00 2001 From: jsouter <107045742+jsouter@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:34:33 +0100 Subject: [PATCH] add Capture mode signal to Panda DataBlock (#604) --- src/ophyd_async/fastcs/panda/_block.py | 7 +++++++ src/ophyd_async/fastcs/panda/_writer.py | 4 ++-- tests/fastcs/panda/test_panda_utils.py | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ophyd_async/fastcs/panda/_block.py b/src/ophyd_async/fastcs/panda/_block.py index 9deff70015..6e28b43f4e 100644 --- a/src/ophyd_async/fastcs/panda/_block.py +++ b/src/ophyd_async/fastcs/panda/_block.py @@ -7,6 +7,12 @@ from ._table import DatasetTable, SeqTable +class CaptureMode(str, Enum): + FIRST_N = "FIRST_N" + LAST_N = "LAST_N" + FOREVER = "FOREVER" + + class DataBlock(Device): # In future we may decide to make hdf_* optional hdf_directory: SignalRW[str] @@ -15,6 +21,7 @@ class DataBlock(Device): num_captured: SignalR[int] create_directory: SignalRW[int] directory_exists: SignalR[bool] + capture_mode: SignalRW[CaptureMode] capture: SignalRW[bool] flush_period: SignalRW[float] datasets: SignalR[DatasetTable] diff --git a/src/ophyd_async/fastcs/panda/_writer.py b/src/ophyd_async/fastcs/panda/_writer.py index 100af8b10e..f435b63ce8 100644 --- a/src/ophyd_async/fastcs/panda/_writer.py +++ b/src/ophyd_async/fastcs/panda/_writer.py @@ -17,7 +17,7 @@ wait_for_value, ) -from ._block import DataBlock +from ._block import CaptureMode, DataBlock class PandaHDFWriter(DetectorWriter): @@ -58,7 +58,7 @@ async def open(self, multiplier: int = 1) -> dict[str, DataKey]: self.panda_data_block.hdf_file_name.set( f"{info.filename}.h5", ), - self.panda_data_block.num_capture.set(0), + self.panda_data_block.capture_mode.set(CaptureMode.FOREVER), ) # Make sure that directory exists or has been created. diff --git a/tests/fastcs/panda/test_panda_utils.py b/tests/fastcs/panda/test_panda_utils.py index b10e076a0f..c099614981 100644 --- a/tests/fastcs/panda/test_panda_utils.py +++ b/tests/fastcs/panda/test_panda_utils.py @@ -71,6 +71,7 @@ def check_equal_with_seq_tables(actual, expected): } assert parsed_yaml[1] == { "data.capture": False, + "data.capture_mode": "FIRST_N", "data.create_directory": 0, "data.flush_period": 0.0, "data.hdf_directory": "",