From 16f7b42533e857dd23dfe7a5cabfb006d13d23d8 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Mon, 7 Oct 2019 10:23:40 +0200 Subject: [PATCH] python --- python/sls_detector/experimental.py | 124 +++++++++++++++++----------- python/src/experimental.cpp | 37 ++++++++- 2 files changed, 110 insertions(+), 51 deletions(-) diff --git a/python/sls_detector/experimental.py b/python/sls_detector/experimental.py index a814ef54b..cd87b3c74 100755 --- a/python/sls_detector/experimental.py +++ b/python/sls_detector/experimental.py @@ -53,13 +53,28 @@ class ExperimentalDetector(CppDetectorApi): super().__init__(multi_id) # CONFIGURATION - def __len__(self): return self.size() def free(self): self.freeSharedMemory() + @property + def config(self): + return NotImplementedError("config is set only") + + @config.setter + def config(self, fname): + self.setConfig(fname) + + @property + def parameters(self): + return NotImplementedError("parameters is set only") + + @parameters.setter + def parameters(self, fname): + self.loadParameters(fname) + @property def hostname(self): return self.getHostname() @@ -74,9 +89,22 @@ class ExperimentalDetector(CppDetectorApi): raise ValueError("hostname needs to be string or list of strings") @property - def detectorversion(self): + def fw_version(self): return element_if_equal(self.getFirmwareVersion()) + @property + def server_version(self): + #TODO! handle hex print + return element_if_equal(self.getDetectorServerVersion()) + + @property + def client_version(self): + return element_if_equal(self.getClientVersion()) + + @property + def rx_version(self): + return element_if_equal(self.getReceiverVersion()) + @property def detector_type(self): return element_if_equal(self.getDetectorType()) @@ -110,6 +138,43 @@ class ExperimentalDetector(CppDetectorApi): def frames(self, n_frames): self.setNumberOfFrames(n_frames) + + @property + def exptime(self): + res = self.getExptime() + return element_if_equal([it.total_seconds() for it in res]) + + @exptime.setter + def exptime(self, t): + if isinstance(t, dt.timedelta): + self.setExptime(t) + else: + self.setExptime(dt.timedelta(seconds=t)) + + @property + def subexptime(self): + res = self.getSubExptime() + return element_if_equal([it.total_seconds() for it in res]) + + @subexptime.setter + def subexptime(self, t): + if isinstance(t, dt.timedelta): + self.setSubExptime(t) + else: + self.setSubExptime(dt.timedelta(seconds=t)) + + + @property + def period(self): + res = self.getPeriod() + return element_if_equal([it.total_seconds() for it in res]) + + @period.setter + def period(self, t): + if isinstance(t, dt.timedelta): + self.setPeriod(t) + else: + self.setPeriod(dt.timedelta(seconds=t)) # Acq @property def rx_status(self): @@ -162,21 +227,7 @@ class ExperimentalDetector(CppDetectorApi): self.setAcquiringFlag(value) # Configuration - @property - def startingfnum(self): - return element_if_equal(self.getStartingFrameNumber()) - - @startingfnum.setter - def startingfnum(self, value): - self.setStartingFrameNumber(value) - - @property - def config(self): - return NotImplementedError("config is set only") - - @config.setter - def config(self, fname): - self.setConfig(fname) + # File @property @@ -212,39 +263,14 @@ class ExperimentalDetector(CppDetectorApi): self.setFileOverWrite(value) # Time - @property - def exptime(self): - res = self.getExptime() - return element_if_equal([it.total_seconds() for it in res]) + - @exptime.setter - def exptime(self, t): - if isinstance(t, dt.timedelta): - self.setExptime(t) - else: - self.setExptime(dt.timedelta(seconds=t)) + @property - def subexptime(self): - res = self.getSubExptime() - return element_if_equal([it.total_seconds() for it in res]) - - @subexptime.setter - def subexptime(self, t): - if isinstance(t, dt.timedelta): - self.setSubExptime(t) - else: - self.setSubExptime(dt.timedelta(seconds=t)) - - @property - def period(self): - res = self.getPeriod() - return element_if_equal([it.total_seconds() for it in res]) - - @period.setter - def period(self, t): - if isinstance(t, dt.timedelta): - self.setPeriod(t) - else: - self.setPeriod(dt.timedelta(seconds=t)) + def startingfnum(self): + return element_if_equal(self.getStartingFrameNumber()) + @startingfnum.setter + def startingfnum(self, value): + self.setStartingFrameNumber(value) \ No newline at end of file diff --git a/python/src/experimental.cpp b/python/src/experimental.cpp index 0c46ab3aa..bf8113c9f 100644 --- a/python/src/experimental.cpp +++ b/python/src/experimental.cpp @@ -242,8 +242,41 @@ void init_experimental(py::module &m) { .def("setTransmissionDelayRight", &Detector::setTransmissionDelayRight, py::arg(), py::arg() = Positions{}) - - + .def("getUseReceiverFlag", &Detector::getUseReceiverFlag, + py::arg() = Positions{}) + .def("getRxHostname", &Detector::getRxHostname, py::arg() = Positions{}) + .def("setRxHostname", &Detector::setRxHostname, py::arg(), + py::arg() = Positions{}) + .def("getRxPort", &Detector::getRxPort, py::arg() = Positions{}) + .def("setRxPort", &Detector::setRxPort, py::arg(), + py::arg() = Positions{}) + .def("getRxFifoDepth", &Detector::getRxFifoDepth, + py::arg() = Positions{}) + .def("setRxFifoDepth", &Detector::setRxFifoDepth, py::arg(), + py::arg() = Positions{}) + .def("getRxSilentMode", &Detector::getRxSilentMode, + py::arg() = Positions{}) + .def("setRxSilentMode", &Detector::setRxSilentMode, py::arg(), + py::arg() = Positions{}) + .def("getRxFrameDiscardPolicy", &Detector::getRxFrameDiscardPolicy, + py::arg() = Positions{}) + .def("setRxFrameDiscardPolicy", &Detector::setRxFrameDiscardPolicy, + py::arg(), py::arg() = Positions{}) + .def("getPartialFramesPadding", &Detector::getPartialFramesPadding, + py::arg() = Positions{}) + .def("setPartialFramesPadding", &Detector::setPartialFramesPadding, + py::arg(), py::arg() = Positions{}) + .def("getRxUDPSocketBufferSize", &Detector::getRxUDPSocketBufferSize, + py::arg() = Positions{}) + .def("setRxUDPSocketBufferSize", &Detector::setRxUDPSocketBufferSize, + py::arg(), py::arg() = Positions{}) + .def("getRxRealUDPSocketBufferSize", + &Detector::getRxRealUDPSocketBufferSize, py::arg() = Positions{}) + .def("getRxLock", &Detector::getRxLock, py::arg() = Positions{}) + .def("setRxLock", &Detector::setRxLock, py::arg(), + py::arg() = Positions{}) + .def("getRxLastClientIP", &Detector::getRxLastClientIP, + py::arg() = Positions{}) // Bits and registers .def("setBit", &Detector::setBit, py::arg(), py::arg(),