summaryrefslogtreecommitdiff
path: root/src/sardana/tango
diff options
context:
space:
mode:
authortiagocoutinho <tiagocoutinho@users.sourceforge.net>2012-12-07 11:31:09 +0000
committertiagocoutinho <tiagocoutinho@users.sourceforge.net>2012-12-07 11:31:09 +0000
commit483c6abe2eba8868aaab2f3f071bca68751bf047 (patch)
tree9533851584e315b0286d3b72a992e58135808c9b /src/sardana/tango
parentf857421204e2278722ae77249fbc7284feb387c8 (diff)
added CalcPseudo and CalcAllPseudo to pseudo counters
git-svn-id: file:///home/cpascual/src/sdnongit/svnbck/sardana/trunk@21016 c480fdf4-a248-4bb0-8e4a-34cd1ef68f4f
Diffstat (limited to 'src/sardana/tango')
-rw-r--r--src/sardana/tango/pool/PseudoCounter.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/sardana/tango/pool/PseudoCounter.py b/src/sardana/tango/pool/PseudoCounter.py
index 39409fbe..6b2e98d3 100644
--- a/src/sardana/tango/pool/PseudoCounter.py
+++ b/src/sardana/tango/pool/PseudoCounter.py
@@ -33,13 +33,14 @@ import sys
import time
from PyTango import Except, READ, SCALAR, DevDouble, \
- DevVarStringArray, DevState, AttrQuality, DevFailed
+ DevVarStringArray, DevVarDoubleArray, DevState, AttrQuality, DevFailed
from taurus.core.util.log import DebugIt
from sardana import State, SardanaServer
from sardana.sardanaattribute import SardanaAttribute
-from sardana.tango.core.util import to_tango_type_format, exception_str
+from sardana.tango.core.util import to_tango_type_format, exception_str, \
+ throw_sardana_exception
from PoolDevice import PoolElementDevice, PoolElementDeviceClass
@@ -192,6 +193,24 @@ class PseudoCounter(PoolElementDevice):
is_Value_allowed = _is_allowed
+ def CalcPseudo(self, physical_values):
+ """Returns the pseudo counter value for the given physical counters"""
+ if not len(physical_values):
+ physical_values = None
+ result = self.pseudo_counter.calc(physical_values=physical_values)
+ if result.error:
+ throw_sardana_exception(result)
+ return result.value
+
+ def CalcAllPseudo(self, physical_values):
+ """Returns the pseudo counter values for the given physical counters"""
+ if not len(physical_values):
+ physical_values = None
+ result = self.pseudo_counter.calc(physical_values=physical_values)
+ if result.error:
+ throw_sardana_exception(result)
+ return result.value
+
class PseudoCounterClass(PoolElementDeviceClass):
@@ -207,6 +226,8 @@ class PseudoCounterClass(PoolElementDeviceClass):
# Command definitions
cmd_list = {
+ 'CalcPseudo' : [ [DevVarDoubleArray, "physical values"], [DevDouble, "pseudo counter"] ],
+ 'CalcAllPseudo' : [ [DevVarDoubleArray, "physical positions"], [DevVarDoubleArray, "pseudo counter values"] ],
}
cmd_list.update(PoolElementDeviceClass.cmd_list)