Skip to content

Commit a3cd1eb

Browse files
Merge branch 'main' into updated-jungfrau-rotation-devices
2 parents 50e7221 + 63cc644 commit a3cd1eb

File tree

6 files changed

+53
-8
lines changed

6 files changed

+53
-8
lines changed

src/dodal/beamlines/i02_1.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ def eiger(mock: bool = False) -> EigerDetector:
5050
wait=False,
5151
fake=mock,
5252
name="eiger",
53+
beamline="i02-1",
54+
ispyb_detector_id=101,
5355
)
5456

5557

src/dodal/beamlines/i03.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ def detector_motion() -> DetectorMotion:
159159

160160
@devices.v1_init(EigerDetector, prefix="BL03I-EA-EIGER-01:", wait=False)
161161
def eiger(eiger: EigerDetector) -> EigerDetector:
162+
eiger.detector_id = 78
162163
return eiger
163164

164165

src/dodal/beamlines/i04.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,12 @@ def set_params(eiger: EigerDetector):
213213
return device_instantiation(
214214
device_factory=EigerDetector,
215215
name="eiger",
216+
beamline="i04",
216217
prefix="-EA-EIGER-01:",
217218
wait=False,
218219
fake=mock,
219220
post_create=set_params,
221+
ispyb_detector_id=72,
220222
)
221223

222224

src/dodal/devices/eiger.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from bluesky.protocols import Stageable
55
from ophyd import Component, Device, EpicsSignalRO, Signal
66
from ophyd.areadetector.cam import EigerDetectorCam
7+
from ophyd.signal import AttributeSignal
78
from ophyd.status import AndStatus, Status, StatusBase, SubscriptionStatus
89

910
from dodal.devices.detector import DetectorParams, TriggerMode
@@ -55,17 +56,31 @@ def set(self, value, *, timeout=None, settle_time=None, **kwargs):
5556

5657
stale_params = Component(EpicsSignalRO, "CAM:StaleParameters_RBV")
5758
bit_depth = Component(EpicsSignalRO, "CAM:BitDepthImage_RBV")
58-
5959
filewriters_finished: StatusBase
6060

6161
detector_params: DetectorParams | None = None
6262

6363
arming_status = Status()
6464
arming_status.set_finished()
6565

66-
def __init__(self, beamline: str = "i03", *args, **kwargs):
66+
def __init__(
67+
self,
68+
beamline: str = "i03",
69+
ispyb_detector_id: int | None = None,
70+
*args,
71+
**kwargs,
72+
):
6773
super().__init__(*args, **kwargs)
6874
self.beamline = beamline
75+
76+
self.detector_id = ispyb_detector_id
77+
self.ispyb_detector_id = AttributeSignal(
78+
attr="detector_id",
79+
parent=self,
80+
name="eiger-ispyb_detector_id",
81+
write_access=False,
82+
)
83+
6984
# using i03 timeouts as default
7085
self.timeouts = AVAILABLE_TIMEOUTS.get(beamline, AVAILABLE_TIMEOUTS["i03"])
7186
self.disarming_status = None
@@ -74,10 +89,11 @@ def __init__(self, beamline: str = "i03", *args, **kwargs):
7489
def with_params(
7590
cls,
7691
params: DetectorParams,
77-
name: str = "EigerDetector",
7892
beamline: str = "i03",
93+
ispyb_detector_id: int | None = None,
94+
name: str = "EigerDetector",
7995
):
80-
det = cls(name=name, beamline=beamline)
96+
det = cls(name=name, beamline=beamline, ispyb_detector_id=ispyb_detector_id)
8197
det.set_detector_parameters(params)
8298
return det
8399

tests/common/beamlines/test_beamline_utils.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,14 @@ def test_instantiating_different_device_with_same_name():
6464

6565
def test_instantiate_v1_function_fake_makes_fake():
6666
eiger: EigerDetector = beamline_utils.device_instantiation(
67-
EigerDetector, "eiger", "", True, True, None
67+
EigerDetector,
68+
"eiger",
69+
"",
70+
True,
71+
True,
72+
None,
73+
beamline="test",
74+
ispyb_detector_id=0,
6875
)
6976
assert isinstance(eiger, Device)
7077
assert isinstance(eiger.stale_params, FakeEpicsSignal)
@@ -191,7 +198,14 @@ def _skip() -> bool:
191198

192199
def test_clear_devices_destroys_ophyd_v1_devices():
193200
dev1 = beamline_utils.device_instantiation(
194-
EigerDetector, "eiger", "", True, True, None
201+
EigerDetector,
202+
"eiger",
203+
"",
204+
True,
205+
True,
206+
None,
207+
beamline="test",
208+
ispyb_detector_id=0,
195209
)
196210
dev1.destroy = MagicMock()
197211

@@ -202,7 +216,14 @@ def test_clear_devices_destroys_ophyd_v1_devices():
202216

203217
def test_clear_device_destroys_ophyd_v1_device():
204218
dev1 = beamline_utils.device_instantiation(
205-
EigerDetector, "eiger", "", True, True, None
219+
EigerDetector,
220+
"eiger",
221+
"",
222+
True,
223+
True,
224+
None,
225+
beamline="test",
226+
ispyb_detector_id=0,
206227
)
207228
dev1.destroy = MagicMock()
208229

tests/devices/test_eiger.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ class StatusError(Exception):
3333
def fake_eiger(request, eiger_params: DetectorParams):
3434
fake_eiger_class = make_fake_device(EigerDetector)
3535
fake_eiger: EigerDetector = fake_eiger_class.with_params(
36-
params=eiger_params, name=f"test fake Eiger: {request.node.name}"
36+
params=eiger_params,
37+
name=f"test fake Eiger: {request.node.name}",
38+
beamline="i03",
39+
ispyb_detector_id=78,
3740
)
3841
return fake_eiger
3942

0 commit comments

Comments
 (0)