From fcaf3e21f6e227f3119d090b8031b8ae96190211 Mon Sep 17 00:00:00 2001 From: appel_c Date: Tue, 17 Jun 2025 08:05:19 +0200 Subject: [PATCH] fix(dxp): fix multiple signals marked as trigger_signals for dxp Falcon, but ophyd only supports 1 trigger signal --- ophyd_devices/devices/dxp.py | 4 ++-- tests/test_dxp/test_dxp.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ophyd_devices/devices/dxp.py b/ophyd_devices/devices/dxp.py index 5b21533..d728fa8 100644 --- a/ophyd_devices/devices/dxp.py +++ b/ophyd_devices/devices/dxp.py @@ -158,7 +158,7 @@ class EpicsDXPFalconMultiElementSystem(EpicsDXPBaseSystem): # Acquisition control erase_all = Cpt(EpicsSignal, "EraseAll") erase_start = Cpt(EpicsSignal, "EraseStart", put_complete=True, trigger_value=1) - start_all = Cpt(EpicsSignal, "StartAll", put_complete=True, trigger_value=1) + start_all = Cpt(EpicsSignal, "StartAll", put_complete=True) stop_all = Cpt(EpicsSignal, "StopAll") # Status @@ -231,7 +231,7 @@ class EpicsDXPMultiElementSystem(_EpicsDXPMultiElementSystem): # Override some action signals, so calling `set`` method # returns a waitable Status object. Otherwise the Status object is immediately done. erase_start = Cpt(EpicsSignal, "EraseStart", put_complete=True, trigger_value=1) - start_all = Cpt(EpicsSignal, "StartAll", put_complete=True, trigger_value=1) + start_all = Cpt(EpicsSignal, "StartAll", put_complete=True) # mca.EpicsDXPMultiElementSystem maps the EPICS records under wrong names, i.e. # copy_adcp_ercent_rule, copy_roic_hannel and copy_roie_nergy diff --git a/tests/test_dxp/test_dxp.py b/tests/test_dxp/test_dxp.py index a90d752..195d03d 100644 --- a/tests/test_dxp/test_dxp.py +++ b/tests/test_dxp/test_dxp.py @@ -99,6 +99,18 @@ def test_falcon(mock_falcon): ] +def test_falcon_trigger(mock_falcon): + """Test the Falcon device trigger method.""" + mock_falcon: TestFalcon + mock_falcon.erase_start.put(0) + assert mock_falcon.erase_start.get() == 0 + status = mock_falcon.trigger() + # Tagged trigger value, should be set to 1 when trigger is called + assert mock_falcon.erase_start.get() == 1 + assert status.success is True + assert status.done is True + + def test_xmap(mock_xmap): """Test the xMAP device.""" # Test the default values