Skip to content

Commit 21226d2

Browse files
authored
Merge pull request #9 from catheybl/main
Server Key Argument
2 parents 48bf2bb + 3302a89 commit 21226d2

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

virtaccl/beam_line.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,13 @@ def add_noise(self, x):
131131

132132
class Parameter:
133133
def __init__(self, reason: str, definition=None, default=0, setting_reason=None, transform=None, noise=None,
134-
server_key: str = None):
134+
server_key_override: str = None):
135135
self.reason = reason
136136
self.definition = definition
137137
self.default_value = default
138138
self.setting_reason = setting_reason
139139
self.transform, self.noise = self._default(transform, noise)
140-
self.server_key = server_key
140+
self.server_key = server_key_override
141141

142142
self.current_value = default
143143

@@ -149,9 +149,12 @@ def _default(cls, transform, noise):
149149
noise = noise if noise else Noise()
150150
return transform, noise
151151

152-
def get_server_key(self):
152+
def get_server_key(self) -> str:
153153
return self.server_key
154154

155+
def set_server_key(self, server_key: str):
156+
self.server_key = server_key
157+
155158
def get_definition(self):
156159
return self.definition
157160

@@ -209,39 +212,36 @@ def __init__(self, server_name: str, model_name: Optional[Union[str, List[str]]]
209212
self.readbacks: Set[str] = set()
210213

211214
def register_parameter(self, reason: str, definition=None, default=0, setting_reason: str = None, transform=None,
212-
noise=None, key_override: str = None) -> Parameter:
215+
noise=None, server_key_override: str = None) -> Parameter:
213216
if definition is None:
214217
definition = {}
215-
if key_override is not None:
216-
parameter_key = key_override
217-
else:
218-
parameter_key = self.name + ':' + reason
219-
param = Parameter(reason, definition, default, setting_reason, transform, noise, parameter_key)
218+
param = Parameter(reason, definition, default, setting_reason, transform, noise, server_key_override)
220219
self.parameters[reason] = param
221220
return param
222221

223222
def register_measurement(self, reason: str, definition=None, transform=None, noise=None,
224-
key_override: str = None) -> Parameter:
225-
param = self.register_parameter(reason, definition, transform=transform, noise=noise, key_override=key_override)
223+
server_key_override: str = None) -> Parameter:
224+
param = self.register_parameter(reason, definition, transform=transform, noise=noise,
225+
server_key_override=server_key_override)
226226
self.measurements.add(reason)
227227
return param
228228

229229
def register_setting(self, reason: str, definition=None, default=0, transform=None, noise=None,
230-
key_override: str = None) -> Parameter:
230+
server_key_override: str = None) -> Parameter:
231231
param = self.register_parameter(reason, definition, default=default, transform=transform, noise=noise,
232-
key_override=key_override)
232+
server_key_override=server_key_override)
233233
self.settings.add(reason)
234234
return param
235235

236236
def register_readback(self, reason: str, setting: str = None, definition=None, transform=None, noise=None,
237-
key_override: str = None) -> Parameter:
237+
server_key_override: str = None) -> Parameter:
238238
rb_def = {}
239239
if definition is not None:
240240
rb_def = definition
241241
elif setting is not None and setting in self.settings:
242242
rb_def = self.get_parameter(setting).get_definition()
243243
param = self.register_parameter(reason, definition=rb_def, setting_reason=setting, transform=transform,
244-
noise=noise, key_override=key_override)
244+
noise=noise, server_key_override=server_key_override)
245245
self.readbacks.add(reason)
246246
return param
247247

@@ -318,8 +318,9 @@ def build_db(self) -> Dict[str, Parameter]:
318318

319319
class BeamLine:
320320

321-
def __init__(self):
321+
def __init__(self, server_key_joiner: str = ':'):
322322
self.devices: Dict[str, Device] = {}
323+
self.server_key_joiner = server_key_joiner
323324

324325
self.setting_keys = set()
325326
self.measurement_keys = set()
@@ -329,6 +330,10 @@ def add_device(self, device: Device) -> Device:
329330
self.devices[device.name] = device
330331
for reason, parameter in device.get_parameters().items():
331332
server_key = parameter.get_server_key()
333+
if server_key is None:
334+
server_key = device.name + self.server_key_joiner + reason
335+
parameter.set_server_key(server_key)
336+
332337
if reason in device.settings:
333338
self.setting_keys.add(server_key)
334339
elif reason in device.measurements:

virtaccl/site/SNS_Linac/virtual_devices_SNS.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ def __init__(self, name: str, model_name: str = None, initial_dict: Dict[str, An
3939
mps_name = name.replace('FCM', 'HPM', 1) + ':' + SNS_Cavity.MPS_pv
4040

4141
if 'SCL' not in name:
42-
self.register_readback(SNS_Cavity.net_power_pv, Cavity.amp_pv, key_override=net_pwr_name)
42+
self.register_readback(SNS_Cavity.net_power_pv, Cavity.amp_pv, server_key_override=net_pwr_name)
4343
self.register_setting(SNS_Cavity.mode_pv, default=0.0)
4444
self.register_setting(SNS_Cavity.reset_pv, default=0.0)
45-
self.register_setting(SNS_Cavity.MPS_pv, default=0.0, key_override=mps_name)
45+
self.register_setting(SNS_Cavity.MPS_pv, default=0.0, server_key_override=mps_name)
4646

4747

4848
class SNS_Dummy_BCM(Device):

0 commit comments

Comments
 (0)