From: Philipp Klaus Date: Fri, 25 Aug 2017 13:11:14 +0000 (+0200) Subject: OPUS20: rm monkey-patched adel/mdel support (now built-in) X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=a3197ac23917ef693adc38020b97bc4ba93d5442;p=mvd_epics.git OPUS20: rm monkey-patched adel/mdel support (now built-in) --- diff --git a/LUFFT_OPUS20/lufft_opus20_driver.py b/LUFFT_OPUS20/lufft_opus20_driver.py index 4e1dfe7..4fbfaf4 100644 --- a/LUFFT_OPUS20/lufft_opus20_driver.py +++ b/LUFFT_OPUS20/lufft_opus20_driver.py @@ -1,28 +1,10 @@ from pcaspy import Driver, Alarm, Severity from pcaspy.driver import manager -from pcaspy import PVInfo -from pcaspy import cas -import pcaspy from opus20 import Opus20, OPUS20_CHANNEL_SPEC, Opus20ConnectionException import time, threading -class ExtendedPVInfo(PVInfo): - """ - Derived class from PVInfo - Aim: monkey patching PVInfo to support MDEL/ADEL - """ - def __init__(self, info): - # initialize from info dict with defaults - self.mdel = info.get('mdel', None) - self.adel = info.get('adel', None) - PVInfo.__init__(self, info) - -# apply PVInfo monkey patch: -pcaspy.PVInfo = ExtendedPVInfo -pcaspy.driver.PVInfo = ExtendedPVInfo - class Opus20Driver(Driver): def __init__(self, hostname, opus20_port=None, opus20_timeout=0.1, scan_period=5.0): self.hostname = hostname @@ -34,32 +16,6 @@ class Opus20Driver(Driver): super(Opus20Driver, self).__init__() - def setParamValue(self, reason, value): - """ - overriding Driver.setParamValue() - - Made to support the ADEL/MDEL fields - """ - # check whether update is needed - same = self.pvDB[reason].value == value - if (type(same) == bool and not same) or (hasattr(same, 'all') and not same.all()): - # make a copy of mutable objects, list, numpy.ndarray - if isinstance(value, list): - value = value[:] - elif 'numpy.ndarray' in str(type(value)): - value = value.copy() - mask = 0 - pv = manager.pvs[self.port][reason] - abs_delta = abs(value-self.pvDB[reason].value) - if not pv.info.mdel or (abs_delta > pv.info.mdel): - mask |= cas.DBE_VALUE - if not pv.info.adel or (abs_delta > pv.info.adel): - mask |= cas.DBE_LOG - self.pvDB[reason].value = value - self.pvDB[reason].flag = True - self.pvDB[reason].mask = mask - self.pvDB[reason].time = cas.epicsTimeStamp() - def connect_opus20(self): kwargs = {} if self.opus20_port: kwargs['port'] = self.opus20_port diff --git a/LUFFT_OPUS20/requirements.txt b/LUFFT_OPUS20/requirements.txt index 8c4f5e0..1350af2 100644 --- a/LUFFT_OPUS20/requirements.txt +++ b/LUFFT_OPUS20/requirements.txt @@ -1,2 +1,3 @@ -PCASpy +#PCASpy +https://github.com/paulscherrerinstitute/pcaspy/archive/master.zip opus20