44from bluesky .protocols import Stageable
55from ophyd import Component , Device , EpicsSignalRO , Signal
66from ophyd .areadetector .cam import EigerDetectorCam
7+ from ophyd .signal import AttributeSignal
78from ophyd .status import AndStatus , Status , StatusBase , SubscriptionStatus
89
910from 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
0 commit comments