From 833ca071c412509db34824095d9d48276424dce9 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 18 Apr 2019 15:40:20 +0200 Subject: [PATCH 1/2] fix --- python/src/Detector.h | 2 +- python/src/main.cpp | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/python/src/Detector.h b/python/src/Detector.h index 4833772ed..58dd3ef9a 100755 --- a/python/src/Detector.h +++ b/python/src/Detector.h @@ -250,7 +250,7 @@ class Detector { } - std::array getPatternLoops(uint64_t level, int detPos) { + std::array getPatternLoops(int level, int detPos) { return det.getPatternLoops(level, detPos); } diff --git a/python/src/main.cpp b/python/src/main.cpp index bc2aacc2d..b83c522cd 100755 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -300,17 +300,21 @@ PYBIND11_MODULE(_sls_detector, m) { .def("getNumberOfDetectors", &Detector::getNumberOfDetectors) .def("getDetectorGeometry", &Detector::getDetectorGeometry); + + // Experimental API to use the multi directly and inherit from to reduce // code duplication need to investigate how to handle documentation py::class_ multiDetectorApi(m, "multiDetectorApi"); multiDetectorApi.def(py::init()) .def("acquire", &multiSlsDetector::acquire) - .def_property("online", - py::cpp_function(&multiSlsDetector::setOnline, py::arg(), py::arg()=-1, py::arg("det_id")=-1), - py::cpp_function(&multiSlsDetector::setOnline, py::arg(), py::arg("flag"), py::arg("det_id")=-1) - ) - // .def("_setOnline", &multiSlsDetector::setOnline, py::arg("flag") = -1, + .def_property("online", + py::cpp_function(&multiSlsDetector::setOnline, py::arg(), + py::arg() = -1, py::arg("det_id") = -1), + py::cpp_function(&multiSlsDetector::setOnline, py::arg(), + py::arg("flag"), py::arg("det_id") = -1)) + // .def("_setOnline", &multiSlsDetector::setOnline, py::arg("flag") = + // -1, // py::arg("det_id") = -1) .def_property_readonly( @@ -328,7 +332,8 @@ PYBIND11_MODULE(_sls_detector, m) { py::cpp_function(&multiSlsDetector::getReceiverUDPIP, py::arg(), py::arg("det_id") = -1), py::cpp_function(&multiSlsDetector::setReceiverUDPIP, - py::arg(), py::arg("ip"), py::arg("det_id") = -1) ) + py::arg(), py::arg("ip"), + py::arg("det_id") = -1)) .def("_getReceiverUDPIP", &multiSlsDetector::getReceiverUDPIP) .def("_setReceiverUDPIP", &multiSlsDetector::setReceiverUDPIP) .def("getPatternLoops", &multiSlsDetector::getPatternLoops, From 83c2775d6c66f895ddcc5bab8016969ea4c64396 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 18 Apr 2019 15:57:59 +0200 Subject: [PATCH 2/2] fixed python --- python/sls_detector/detector.py | 10 +++++----- python/src/Detector.h | 8 ++++++++ python/src/main.cpp | 3 +++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/python/sls_detector/detector.py b/python/sls_detector/detector.py index 2e0b2e5fe..512437d18 100755 --- a/python/sls_detector/detector.py +++ b/python/sls_detector/detector.py @@ -1480,15 +1480,15 @@ class Detector: @property def patioctrl(self): - return self._api.getPatternWord(-1) + return self._api.setPatternIOControl(np.uint64(-1)) @patioctrl.setter def patioctrl(self, word): - self._api.setPatternWord(-1, np.uint64(word)) + self._api.setPatternIOControl(np.uint64(word)) @property def patlimits(self): - return self._api.getPatternLoops(np.uint64(-1),-1)[0:2] + return self._api.getPatternLoops(-1,-1)[0:2] @patlimits.setter def patlimits(self, value): @@ -1506,11 +1506,11 @@ class Detector: @property def patclkctrl(self): - return self._api.getPatternWord(-2) + return self._api.setPatternClockControl(np.uint64(-1)) @patclkctrl.setter def patclkctrl(self, value): - self._api.setPatternWord(-2, value) + self._api.setPatternClockControl(value) def free_shared_memory(multi_id=0): diff --git a/python/src/Detector.h b/python/src/Detector.h index 58dd3ef9a..bb11b1a27 100755 --- a/python/src/Detector.h +++ b/python/src/Detector.h @@ -262,6 +262,14 @@ class Detector { return det.setPatternWord(addr, -1, detPos); } + uint64_t setPatternIOControl(uint64_t word, int detPos){ + return det.setPatternIOControl(word, detPos); + } + + uint64_t setPatternClockControl(uint64_t word, int detPos){ + return det.setPatternClockControl(word, detPos); + } + void setPatternWaitAddr(int level, int addr, int detPos){ det.setPatternWaitAddr(level, addr, detPos); } diff --git a/python/src/main.cpp b/python/src/main.cpp index b83c522cd..76f395bea 100755 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -284,6 +284,9 @@ PYBIND11_MODULE(_sls_detector, m) { .def("getPatternWord", &Detector::getPatternWord, py::arg("addr"), py::arg("det_id") = -1) + .def("setPatternIOControl", &Detector::setPatternIOControl, py::arg("word"), py::arg("det_id") = -1) + .def("setPatternClockControl", &Detector::setPatternClockControl, py::arg("word"), py::arg("det_id") = -1) + .def("setPatternWaitAddr", &Detector::setPatternWaitAddr, py::arg("level"), py::arg("addr"), py::arg("det_id") = -1) .def("getPatternWaitAddr", &Detector::getPatternWaitAddr,