fix: make filepath a signal
This commit is contained in:
parent
57b323e647
commit
e9aaa0383e
@ -10,9 +10,10 @@ import time
|
|||||||
from bec_lib import messages
|
from bec_lib import messages
|
||||||
from bec_lib.endpoints import MessageEndpoints
|
from bec_lib.endpoints import MessageEndpoints
|
||||||
from bec_lib.file_utils import FileWriter
|
from bec_lib.file_utils import FileWriter
|
||||||
from ophyd import Device, DeviceStatus
|
from ophyd import Component, Device, DeviceStatus, Kind
|
||||||
from ophyd.device import Staged
|
from ophyd.device import Staged
|
||||||
|
|
||||||
|
from ophyd_devices.sim.sim_signals import SetableSignal
|
||||||
from ophyd_devices.utils import bec_utils
|
from ophyd_devices.utils import bec_utils
|
||||||
from ophyd_devices.utils.bec_scaninfo_mixin import BecScaninfoMixin
|
from ophyd_devices.utils.bec_scaninfo_mixin import BecScaninfoMixin
|
||||||
|
|
||||||
@ -111,10 +112,15 @@ class CustomDetectorMixin:
|
|||||||
"""
|
"""
|
||||||
pipe = self.parent.connector.pipeline()
|
pipe = self.parent.connector.pipeline()
|
||||||
if successful is None:
|
if successful is None:
|
||||||
msg = messages.FileMessage(file_path=self.parent.filepath, done=done, metadata=metadata)
|
msg = messages.FileMessage(
|
||||||
|
file_path=self.parent.filepath.get(), done=done, metadata=metadata
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
msg = messages.FileMessage(
|
msg = messages.FileMessage(
|
||||||
file_path=self.parent.filepath, done=done, successful=successful, metadata=metadata
|
file_path=self.parent.filepath.get(),
|
||||||
|
done=done,
|
||||||
|
successful=successful,
|
||||||
|
metadata=metadata,
|
||||||
)
|
)
|
||||||
self.parent.connector.set_and_publish(
|
self.parent.connector.set_and_publish(
|
||||||
MessageEndpoints.public_file(self.parent.scaninfo.scan_id, self.parent.name),
|
MessageEndpoints.public_file(self.parent.scaninfo.scan_id, self.parent.name),
|
||||||
@ -186,6 +192,8 @@ class PSIDetectorBase(Device):
|
|||||||
**kwargs: keyword arguments
|
**kwargs: keyword arguments
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
filepath = Component(SetableSignal, value="", kind=Kind.config)
|
||||||
|
|
||||||
custom_prepare_cls = CustomDetectorMixin
|
custom_prepare_cls = CustomDetectorMixin
|
||||||
|
|
||||||
def __init__(self, prefix="", *, name, kind=None, parent=None, device_manager=None, **kwargs):
|
def __init__(self, prefix="", *, name, kind=None, parent=None, device_manager=None, **kwargs):
|
||||||
|
@ -128,9 +128,10 @@ class SimCameraSetup(CustomDetectorMixin):
|
|||||||
FYI: No data is written to disk in the simulation, but upon each trigger it
|
FYI: No data is written to disk in the simulation, but upon each trigger it
|
||||||
is published to the device_monitor endpoint in REDIS.
|
is published to the device_monitor endpoint in REDIS.
|
||||||
"""
|
"""
|
||||||
self.parent.filepath = self.parent.filewriter.compile_full_filename(f"{self.parent.name}")
|
self.parent.filepath.set(
|
||||||
|
self.parent.filewriter.compile_full_filename(f"{self.parent.name}")
|
||||||
|
).wait()
|
||||||
|
|
||||||
self.parent.file_path.set(self.parent.filepath)
|
|
||||||
self.parent.frames.set(
|
self.parent.frames.set(
|
||||||
self.parent.scaninfo.num_points * self.parent.scaninfo.frames_per_trigger
|
self.parent.scaninfo.num_points * self.parent.scaninfo.frames_per_trigger
|
||||||
)
|
)
|
||||||
@ -138,7 +139,7 @@ class SimCameraSetup(CustomDetectorMixin):
|
|||||||
self.parent.burst.set(self.parent.scaninfo.frames_per_trigger)
|
self.parent.burst.set(self.parent.scaninfo.frames_per_trigger)
|
||||||
if self.parent.write_to_disk.get():
|
if self.parent.write_to_disk.get():
|
||||||
self.parent.h5_writer.prepare(
|
self.parent.h5_writer.prepare(
|
||||||
file_path=self.parent.filepath, h5_entry="/entry/data/data"
|
file_path=self.parent.filepath.get(), h5_entry="/entry/data/data"
|
||||||
)
|
)
|
||||||
self.publish_file_location(done=False)
|
self.publish_file_location(done=False)
|
||||||
self.parent.stopped = False
|
self.parent.stopped = False
|
||||||
@ -182,7 +183,6 @@ class SimCamera(PSIDetectorBase):
|
|||||||
_default_sub = SUB_MONITOR
|
_default_sub = SUB_MONITOR
|
||||||
|
|
||||||
exp_time = Cpt(SetableSignal, name="exp_time", value=1, kind=Kind.config)
|
exp_time = Cpt(SetableSignal, name="exp_time", value=1, kind=Kind.config)
|
||||||
file_path = Cpt(SetableSignal, name="file_path", value="", kind=Kind.config)
|
|
||||||
file_pattern = Cpt(SetableSignal, name="file_pattern", value="", kind=Kind.config)
|
file_pattern = Cpt(SetableSignal, name="file_pattern", value="", kind=Kind.config)
|
||||||
frames = Cpt(SetableSignal, name="frames", value=1, kind=Kind.config)
|
frames = Cpt(SetableSignal, name="frames", value=1, kind=Kind.config)
|
||||||
burst = Cpt(SetableSignal, name="burst", value=1, kind=Kind.config)
|
burst = Cpt(SetableSignal, name="burst", value=1, kind=Kind.config)
|
||||||
@ -204,7 +204,6 @@ class SimCamera(PSIDetectorBase):
|
|||||||
self._registered_proxies = {}
|
self._registered_proxies = {}
|
||||||
self.sim = self.sim_cls(parent=self, **kwargs)
|
self.sim = self.sim_cls(parent=self, **kwargs)
|
||||||
self.h5_writer = H5Writer()
|
self.h5_writer = H5Writer()
|
||||||
self.filepath = None
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
name=name, parent=parent, kind=kind, device_manager=device_manager, **kwargs
|
name=name, parent=parent, kind=kind, device_manager=device_manager, **kwargs
|
||||||
)
|
)
|
||||||
|
@ -73,6 +73,12 @@ def test_unstage(detector_base):
|
|||||||
mock_on_unstage.assert_called_once()
|
mock_on_unstage.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
|
def test_complete(detector_base):
|
||||||
|
with mock.patch.object(detector_base.custom_prepare, "on_complete") as mock_on_complete:
|
||||||
|
detector_base.complete()
|
||||||
|
mock_on_complete.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
def test_stop(detector_base):
|
def test_stop(detector_base):
|
||||||
with mock.patch.object(detector_base.custom_prepare, "on_stop") as mock_on_stop:
|
with mock.patch.object(detector_base.custom_prepare, "on_stop") as mock_on_stop:
|
||||||
detector_base.stop()
|
detector_base.stop()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user