added 'export_as' for parameters and commands

the export argument of an accessible allows now to specify an other
external name than the attribute used internally.

export=True   (default, use defined name, or prefix with '_' when
               name not in predefined list)
export=False  (do not export)
export=<any string> (special cases only)

Change-Id: I6c6669cd502d9d6fd3aa40091673e5554fd961bd
Reviewed-on: https://forge.frm2.tum.de/review/19664
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
2018-12-19 15:35:02 +01:00
committed by Enrico Faulhaber
parent ef27fd1b54
commit feba5a1400
3 changed files with 68 additions and 30 deletions

View File

@ -29,6 +29,7 @@ from secop.lib import unset_value
EVENT_ONLY_ON_CHANGED_VALUES = False
class CountedObj(object):
ctr = [0]
def __init__(self):
@ -36,6 +37,7 @@ class CountedObj(object):
cl[0] += 1
self.ctr = cl[0]
class Accessible(CountedObj):
'''abstract base class for Parameter and Command'''
@ -73,6 +75,7 @@ class Accessible(CountedObj):
raise ProgrammingError('can not overrride property name %s' % name)
cls.valid_properties[name] = external
class Parameter(Accessible):
"""storage for Parameter settings + value + qualifiers
@ -219,3 +222,23 @@ class Command(Accessible):
def for_export(self):
# used for serialisation only
return self.exported_properties()
# list of predefined accessibles with their type
PREDEFINED_ACCESSIBLES = dict(
value = Parameter,
status = Parameter,
target = Parameter,
pollinterval = Parameter,
ramp = Parameter,
user_ramp = Parameter,
setpoint = Parameter,
time_to_target = Parameter,
unit = Parameter, # reserved name
loglevel = Parameter, # reserved name
mode = Parameter, # reserved name
stop = Command,
reset = Command,
go = Command,
abort = Command,
shutdown = Command,
)