diff --git a/python/scripts/basic.py b/python/scripts/basic.py index b4808fb66..561ce38e4 100755 --- a/python/scripts/basic.py +++ b/python/scripts/basic.py @@ -17,7 +17,7 @@ e = ExperimentalDetector() -a = read_my302_file('/home/l_frojdh/Downloads/run_d0_5.raw', 104, 24) +# a = read_my302_file('/home/l_frojdh/Downloads/run_d0_5.raw', 104, 24) # ncols = 192 # start = 600 # end = 1800 diff --git a/python/sls_detector/detector.py b/python/sls_detector/detector.py index 3a6a7a366..389cb57ed 100755 --- a/python/sls_detector/detector.py +++ b/python/sls_detector/detector.py @@ -1355,6 +1355,38 @@ class Detector: self._api.configureNetworkParameters() + #TODO! can we make this one function? + @property + def patnloop0(self): + return self._api.getPatternLoops(0, -1) + + @patnloop0.setter + def patnloop0(self, n): + self._api.setPatternLoops(0, -1, -1, n, -1) + + @property + def patnloop1(self): + return self._api.getPatternLoops(1, -1) + + @patnloop1.setter + def patnloop1(self, n): + self._api.setPatternLoops(1, -1, -1, n, -1) + + @property + def patnloop2(self): + return self._api.getPatternLoops(2, -1) + + @patnloop2.setter + def patnloop2(self, n): + self._api.setPatternLoops(2, -1, -1, n, -1) + + def setPatternWord(self, addr, word, det_id = -1): + self._api.setPatternWord(addr, word, det_id) + + def setPatternLoops(self, level, start, stop, n, det_id=-1): + self._api.setPatternLoops(level, start, stop, n, det_id) + + def free_shared_memory(multi_id=0): """ Function to free the shared memory but do not initialize with new diff --git a/python/src/Detector.h b/python/src/Detector.h index 9dc574bc6..28fca8053 100755 --- a/python/src/Detector.h +++ b/python/src/Detector.h @@ -1,12 +1,12 @@ #ifndef DETECTOR_H #define DETECTOR_H +#include #include #include +#include #include #include -#include - #include "error_defs.h" #include "multiSlsDetector.h" #include "slsDetector.h" @@ -244,6 +244,21 @@ class Detector { std::vector getRateCorrection(); + + + void setPatternLoops(uint64_t level, uint64_t start, uint64_t stop, + uint64_t n, int detPos) { + det.setPatternLoops(level, start, stop, n, detPos); + } + + std::array getPatternLoops(uint64_t level, int detPos) { + return det.getPatternLoops(level, detPos); + } + + void setPatternWord(int addr, uint64_t word, int detPos){ + det.setPatternWord(addr, word, detPos); + } + bool getFlippedDataX(int i) { return det.getFlippedData(slsDetectorDefs::dimension::X, i); } diff --git a/python/src/main.cpp b/python/src/main.cpp index f2a591c5e..0d8babd75 100755 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -262,6 +262,10 @@ PYBIND11_MODULE(_sls_detector, m) .def("getTenGigabitEthernet", &Detector::getTenGigabitEthernet) .def("setTenGigabitEthernet", &Detector::setTenGigabitEthernet) + .def("getPatternLoops", &Detector::getPatternLoops) + .def("setPatternLoops", &Detector::setPatternLoops) + .def("setPatternWord", &Detector::setPatternWord) + .def("getImageSize", &Detector::getImageSize) .def("setImageSize", &Detector::setImageSize) .def("getNumberOfDetectors", &Detector::getNumberOfDetectors) @@ -269,6 +273,7 @@ PYBIND11_MODULE(_sls_detector, m) + //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"); @@ -283,6 +288,9 @@ py::class_ multiDetectorApi(m, "multiDetectorApi"); py::cpp_function(&multiSlsDetector::getDetectorNumber)) .def("_getReceiverUDPIP", &multiSlsDetector::getReceiverUDPIP) .def("_setReceiverUDPIP", &multiSlsDetector::setReceiverUDPIP) + .def("_getPatternLoops", &multiSlsDetector::getPatternLoops) + .def("_setPatternLoops", &multiSlsDetector::setPatternLoops) + .def("_setPatternWord", &multiSlsDetector::setPatternWord) ; py::module io = m.def_submodule("io", "Submodule for io");