improve readability be renaming PARAMS,PROPS,CMDS
and others. Change-Id: Ie37768ed813acdf0cb0707c70ff63397ec8bfbf1 Reviewed-on: https://forge.frm2.tum.de/review/17320 Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de> Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
import random
|
||||
from time import sleep
|
||||
|
||||
from secop.modules import Module, Readable, Writable, Drivable, PARAM
|
||||
from secop.modules import Module, Readable, Writable, Drivable, Param
|
||||
from secop.lib import mkthread
|
||||
from secop.protocol import status
|
||||
from secop.datatypes import FloatRange
|
||||
@@ -32,20 +32,30 @@ from secop.datatypes import FloatRange
|
||||
|
||||
class SimBase(object):
|
||||
def __init__(self, cfgdict):
|
||||
# spice up PARAMS if requested by extra property
|
||||
# spice up parameters if requested by extra property
|
||||
# hint: us a comma-separated list if mor than one extra_param
|
||||
# BIG FAT WARNING: changing extra params will NOT generate events!
|
||||
# XXX: implement default read_* and write_* methods to handle
|
||||
# read and change messages correctly
|
||||
if '.extra_params' in cfgdict:
|
||||
extra_params = cfgdict.pop('.extra_params')
|
||||
# make a copy of self.PARAMS
|
||||
self.PARAMS=dict((k,v.copy()) for k,v in self.PARAMS.items())
|
||||
# make a copy of self.parameter
|
||||
self.parameters = dict((k,v.copy()) for k,v in self.parameters.items())
|
||||
for k in extra_params.split(','):
|
||||
k = k.strip()
|
||||
self.PARAMS[k] = PARAM('extra_param: %s' % k.strip(),
|
||||
self.parameters[k] = Param('extra_param: %s' % k.strip(),
|
||||
datatype=FloatRange(),
|
||||
default=0.0)
|
||||
def reader(maxage=0, pname=k):
|
||||
self.log.debug('simulated reading %s' % pname)
|
||||
return self.parameters[pname].value
|
||||
setattr(self, 'read_' + k, reader)
|
||||
def writer(newval, pname=k):
|
||||
self.log.debug('simulated writing %r to %s' % (newval, pname))
|
||||
self.parameters[pname].value = newval
|
||||
return newval
|
||||
setattr(self, 'write_' + k, writer)
|
||||
|
||||
def late_init(self):
|
||||
self._sim_thread = mkthread(self._sim)
|
||||
|
||||
@@ -61,7 +71,7 @@ class SimBase(object):
|
||||
return True
|
||||
|
||||
def read_value(self, maxage=0):
|
||||
if 'jitter' in self.PARAMS:
|
||||
if 'jitter' in self.parameters:
|
||||
return self._value + self.jitter*(0.5-random.random())
|
||||
return self._value
|
||||
|
||||
@@ -76,14 +86,14 @@ class SimReadable(SimBase, Readable):
|
||||
def __init__(self, logger, cfgdict, devname, dispatcher):
|
||||
SimBase.__init__(self, cfgdict)
|
||||
Readable.__init__(self, logger, cfgdict, devname, dispatcher)
|
||||
self._value = self.PARAMS['value'].default
|
||||
self._value = self.parameters['value'].default
|
||||
|
||||
|
||||
class SimWritable(SimBase, Writable):
|
||||
def __init__(self, logger, cfgdict, devname, dispatcher):
|
||||
SimBase.__init__(self, cfgdict)
|
||||
Writable.__init__(self, logger, cfgdict, devname, dispatcher)
|
||||
self._value = self.PARAMS['value'].default
|
||||
self._value = self.parameters['value'].default
|
||||
def read_value(self, maxage=0):
|
||||
return self.target
|
||||
def write_target(self, value):
|
||||
@@ -94,16 +104,16 @@ class SimDrivable(SimBase, Drivable):
|
||||
def __init__(self, logger, cfgdict, devname, dispatcher):
|
||||
SimBase.__init__(self, cfgdict)
|
||||
Drivable.__init__(self, logger, cfgdict, devname, dispatcher)
|
||||
self._value = self.PARAMS['value'].default
|
||||
self._value = self.parameters['value'].default
|
||||
|
||||
def sim(self):
|
||||
while self._value == self.target:
|
||||
sleep(0.3)
|
||||
self.status = status.BUSY, 'MOVING'
|
||||
speed = 0
|
||||
if 'ramp' in self.PARAMS:
|
||||
if 'ramp' in self.parameters:
|
||||
speed = self.ramp / 60. # ramp is per minute!
|
||||
elif 'speed' in self.PARAMS:
|
||||
elif 'speed' in self.parameters:
|
||||
speed = self.speed
|
||||
if speed == 0:
|
||||
self._value = self.target
|
||||
|
||||
Reference in New Issue
Block a user