This commit is contained in:
Erik Frojdh
2019-10-18 12:24:17 +02:00
parent 3822258dfa
commit 97d1c520e6
3 changed files with 137 additions and 17 deletions

View File

@ -9,5 +9,6 @@ import _sls_detector
defs = _sls_detector.slsDetectorDefs
runStatus = _sls_detector.slsDetectorDefs.runStatus
speedLevel = _sls_detector.slsDetectorDefs.speedLevel
detectorType = _sls_detector.slsDetectorDefs.detectorType
detectorSettings = _sls_detector.slsDetectorDefs.detectorSettings

View File

@ -2,6 +2,7 @@ from _sls_detector import CppDetectorApi
from _sls_detector import slsDetectorDefs
runStatus = slsDetectorDefs.runStatus
speedLevel = slsDetectorDefs.speedLevel
from .utils import element_if_equal, all_equal
from .utils import Geometry, to_geo
import datetime as dt
@ -9,6 +10,20 @@ import datetime as dt
from functools import wraps
from collections import namedtuple
class Register:
"""
Helper class to read and write to registers using a
more Pythonic syntax
"""
def __init__(self, detector):
self._detector = detector
def __getitem__(self, key):
return self._detector.readRegister(key)
def __setitem__(self, key, value):
self._detector.writeRegister(key, value)
def freeze(cls):
cls.__frozen = False
@ -51,6 +66,7 @@ class ExperimentalDetector(CppDetectorApi):
slsDetectorPackage. Default value is 0.
"""
super().__init__(multi_id)
self._register = Register(self)
# CONFIGURATION
def __len__(self):
@ -73,7 +89,7 @@ class ExperimentalDetector(CppDetectorApi):
@config.setter
def config(self, fname):
self.setConfig(fname)
self.loadConfig(fname)
@property
def parameters(self):
@ -373,10 +389,10 @@ class ExperimentalDetector(CppDetectorApi):
# ZMQ Streaming Parameters (Receiver<->Client)
@property
def rx_zmqdatastream(self):
def rx_datastream(self):
return element_if_equal(self.getRxZmqDataStream())
@rx_zmqdatastream.setter
@rx_datastream.setter
def rx_zmqdatastream(self, enable):
self.setRxZmqDataStream(enable)
@ -412,10 +428,74 @@ class ExperimentalDetector(CppDetectorApi):
def zmqip(self, ip):
self.setClientZmqIp(ip)
#TODO! Change to dst
@property
def rx_udpip(self):
return element_if_equal(self.getDestinationUDPIP())
@rx_udpip.setter
def rx_udpip(self, ip):
self.getDestinationUDPIP(ip)
@property
def vhighvoltage(self):
return element_if_equal(self.getHighVoltage())
@vhighvoltage.setter
def vhighvoltage(self, v):
self.setHighVoltage(v)
self.setHighVoltage(v)
@property
def trimbits(self):
return NotImplementedError('trimbits are set only')
@trimbits.setter
def trimbits(self, fname):
self.loadTrimbits(fname)
@property
def lock(self):
return element_if_equal(self.getDetectorLock())
@lock.setter
def lock(self, value):
self.setDetectorLock(value)
@property
def rx_lock(self):
return element_if_equal(self.getRxLock())
@rx_lock.setter
def rx_lock(self, value):
self.setRxLock(value)
@property
def lastclient(self):
return element_if_equal(self.getLastClientIP())
@property
def reg(self):
return self._register
@property
def ratecorr(self):
""" tau in ns """
return element_if_equal(self.getRateCorrection())
@ratecorr.setter
def ratecorr(self, tau):
self.setRateCorrection(tau)
@property
def clkdivider(self):
res = [int(value) for value in self.getSpeed()]
return element_if_equal(res)
@clkdivider.setter
def clkdivider(self, value):
self.setSpeed(speedLevel(value))
@property
def frameindex(self):
return self.getRxCurrentFrameIndex()