66from pyaml .bpm .bpm_simple_model import BPMSimpleModel
77
88from ..common .element import __pyaml_repr__
9+ from ..configuration .catalog import Catalog
910from ..control .deviceaccess import DeviceAccess
1011
1112# Define the main class name for this module
@@ -20,27 +21,18 @@ class ConfigModel(BaseModel):
2021
2122 Parameters
2223 ----------
23- x_pos : DeviceAccess, optional
24- Horizontal position device
25- y_pos : DeviceAccess, optional
26- Vertical position device
27- x_offset : DeviceAccess, optional
28- Horizontal BPM offset device
29- y_offset : DeviceAccess, optional
30- Vertical BPM offset device
31- tilt : DeviceAccess, optional
32- BPM tilt device
24+ x_pos_index : int, optional
25+ Index in the array when specified, otherwise scalar
26+ value is expected
27+ y_pos_index : int, optional
28+ Index in the array when specified, otherwise scalar
29+ value is expected
3330 """
3431
3532 model_config = ConfigDict (arbitrary_types_allowed = True , extra = "forbid" )
3633
37- x_pos : DeviceAccess | None
38- y_pos : DeviceAccess | None
3934 x_pos_index : int | None = None
4035 y_pos_index : int | None = None
41- x_offset : DeviceAccess | None
42- y_offset : DeviceAccess | None
43- tilt : DeviceAccess | None
4436
4537
4638class BPMTiltOffsetModel (BPMSimpleModel ):
@@ -51,44 +43,34 @@ class BPMTiltOffsetModel(BPMSimpleModel):
5143
5244 def __init__ (self , cfg : ConfigModel ):
5345 super ().__init__ (cfg )
54- self .__x_pos = cfg .x_pos
55- self .__y_pos = cfg .y_pos
56- self .__x_offset = cfg .x_offset
57- self .__y_offset = cfg .y_offset
58- self .__tilt = cfg .tilt
5946
60- def get_pos_devices (self ) -> list [DeviceAccess | None ]:
61- """
62- Get device handles used for position reading
63-
64- Returns
65- -------
66- list[DeviceAccess]
67- Array of DeviceAcess
68- """
69- return [self .__x_pos , self .__y_pos ]
70-
71- def get_tilt_device (self ) -> DeviceAccess | None :
47+ def get_tilt_device (self , name : str , catalog : Catalog ) -> DeviceAccess | None :
7248 """
7349 Get device handle used for tilt access
7450
7551 Returns
7652 -------
7753 DeviceAccess
78- DeviceAcess
54+ The DeviceAccess for tilt
7955 """
80- return self .__tilt
56+ if catalog .has_reference (name + "/tilt" ):
57+ return catalog .get_one (name + "/tilt" )
58+ return None
8159
82- def get_offset_devices (self ) -> list [DeviceAccess | None ]:
60+ def get_offset_devices (
61+ self , name : str , catalog : Catalog
62+ ) -> list [DeviceAccess | None ]:
8363 """
8464 Get device handles used for offset access
8565
8666 Returns
8767 -------
8868 list[DeviceAccess]
89- Array of DeviceAcess
69+ Array of 2 DeviceAccess: [x_offset, y_offset]
9070 """
91- return [self .__x_offset , self .__y_offset ]
71+ if catalog .has_reference (name + "/offsets" ):
72+ return catalog .get_many (name + "/offsets" )[:2 ]
73+ return [None , None ]
9274
9375 def __repr__ (self ):
9476 return __pyaml_repr__ (self )
0 commit comments