From 8b7023d9a3ce2f63240f688046033ad9ed0b52eb Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Tue, 1 Dec 2020 18:40:45 +0100 Subject: [PATCH 1/4] added scanParameters in Python --- python/CMakeLists.txt | 1 + python/examples/using_scan.py | 19 ++++++++++++++ python/slsdet/__init__.py | 1 + python/src/main.cpp | 2 ++ python/src/scan.cpp | 48 +++++++++++++++++++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 python/examples/using_scan.py create mode 100644 python/src/scan.cpp diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 7120d0ca3..d20e87c85 100755 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -4,6 +4,7 @@ pybind11_add_module(_slsdet src/enums.cpp src/detector.cpp src/network.cpp + src/scan.cpp ) target_link_libraries(_slsdet PUBLIC diff --git a/python/examples/using_scan.py b/python/examples/using_scan.py new file mode 100644 index 000000000..612cae754 --- /dev/null +++ b/python/examples/using_scan.py @@ -0,0 +1,19 @@ + +from slsdet import Mythen3, scanParameters, dacIndex + +#Configure scan +sp = scanParameters() +sp.enable = 1 +sp.dacInd = dacIndex.VTH1 +sp.startOffset = 0 +sp.stopOffset = 1000 +sp.stepSize = 100 +sp.dacSettleTime_ns = int(1e9) + + +# Send scan to detector +d = Mythen3() +d.setScan(sp) + + + diff --git a/python/slsdet/__init__.py b/python/slsdet/__init__.py index f6df36332..2fcf08713 100755 --- a/python/slsdet/__init__.py +++ b/python/slsdet/__init__.py @@ -18,3 +18,4 @@ from .enums import * IpAddr = _slsdet.IpAddr MacAddr = _slsdet.MacAddr +scanParameters = _slsdet.scanParameters \ No newline at end of file diff --git a/python/src/main.cpp b/python/src/main.cpp index e199d6efd..98f1e76ca 100755 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -19,6 +19,7 @@ void init_enums(py::module &); void init_experimental(py::module &); void init_det(py::module &); void init_network(py::module &); +void init_scan(py::module &); PYBIND11_MODULE(_slsdet, m) { m.doc() = R"pbdoc( C/C++ API @@ -33,6 +34,7 @@ PYBIND11_MODULE(_slsdet, m) { init_enums(m); init_det(m); init_network(m); + init_scan(m); // init_experimental(m); diff --git a/python/src/scan.cpp b/python/src/scan.cpp new file mode 100644 index 000000000..75fcf16d4 --- /dev/null +++ b/python/src/scan.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include +#include +#include "sls/sls_detector_defs.h" +namespace py = pybind11; +void init_scan(py::module &m) { + + using sp = slsDetectorDefs::scanParameters; + py::class_ scanParameters(m, "scanParameters"); + + scanParameters.def(py::init()); + scanParameters.def_readwrite("enable", &sp::enable); + scanParameters.def_readwrite("dacInd", &sp::dacInd); + scanParameters.def_readwrite("startOffset", &sp::startOffset); + scanParameters.def_readwrite("stopOffset", &sp::stopOffset); + scanParameters.def_readwrite("stepSize", &sp::stepSize); + scanParameters.def_readwrite("dacSettleTime_ns", &sp::dacSettleTime_ns); + scanParameters.def("__repr__", [](const sp &a){ + std::ostringstream oss; + auto indent = " "; + oss << "\n"; + oss << indent << "enable: " << a.enable << '\n'; + oss << indent << "dacInd: " << a.dacInd << '\n'; + oss << indent << "startOffset: " << a.startOffset << '\n'; + oss << indent << "stopOffset: " << a.stopOffset << '\n'; + oss << indent << "stepSize: " << a.stepSize << '\n'; + oss << indent << "dacSettleTime_ns: " << a.dacSettleTime_ns; + return oss.str(); + }); + // dacIndex dacInd; + // int startOffset; + // int stopOffset; + // int stepSize; + // int64_t dacSettleTime_ns; + // patternParameters.def("numpy_view", [](py::object &obj) { + // pat &o = obj.cast(); + // return py::array_t(1, &o, obj); + // }); + + // py::class_ Pattern(m, "Pattern"); + // Pattern.def(py::init()); + // Pattern.def("load", &sls::Pattern::load); + // Pattern.def("data", (pat * (sls::Pattern::*)()) & sls::Pattern::data, + // py::return_value_policy::reference); +} From a5ab5c1fa08d929b0b4821a530ec1c6c3943c97c Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Fri, 4 Dec 2020 13:50:08 +0100 Subject: [PATCH 2/4] additional constructors for scanPrameters in python --- python/src/scan.cpp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/python/src/scan.cpp b/python/src/scan.cpp index 75fcf16d4..afd83832b 100644 --- a/python/src/scan.cpp +++ b/python/src/scan.cpp @@ -12,6 +12,9 @@ void init_scan(py::module &m) { py::class_ scanParameters(m, "scanParameters"); scanParameters.def(py::init()); + + scanParameters.def(py::init()); + scanParameters.def(py::init()); scanParameters.def_readwrite("enable", &sp::enable); scanParameters.def_readwrite("dacInd", &sp::dacInd); scanParameters.def_readwrite("startOffset", &sp::startOffset); @@ -30,19 +33,7 @@ void init_scan(py::module &m) { oss << indent << "dacSettleTime_ns: " << a.dacSettleTime_ns; return oss.str(); }); - // dacIndex dacInd; - // int startOffset; - // int stopOffset; - // int stepSize; - // int64_t dacSettleTime_ns; - // patternParameters.def("numpy_view", [](py::object &obj) { - // pat &o = obj.cast(); - // return py::array_t(1, &o, obj); - // }); - // py::class_ Pattern(m, "Pattern"); - // Pattern.def(py::init()); - // Pattern.def("load", &sls::Pattern::load); - // Pattern.def("data", (pat * (sls::Pattern::*)()) & sls::Pattern::data, - // py::return_value_policy::reference); + + } From 511f5a7ca5d60d1004317a15e9be0c4d068b6b1f Mon Sep 17 00:00:00 2001 From: Dhanya Thattil <33750417+thattil@users.noreply.github.com> Date: Fri, 4 Dec 2020 14:33:11 +0100 Subject: [PATCH 3/4] Update RELEASE.txt --- RELEASE.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RELEASE.txt b/RELEASE.txt index 0206a5556..81982ae4b 100755 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -28,7 +28,9 @@ This document describes the differences between 5.0.2 and 5.0.1 releases. Receiver -------- - 1. Potentital Memory Leak if one called Implementation::setDetectorType + 1. Current code only calls Implementation::setDetectorType from constructor, + but potential memory leak if called out of constructor context. Fixed. + From f147c7bfcbfebce2e06c1192ed5bc9218fe89fbc Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Fri, 4 Dec 2020 14:36:08 +0100 Subject: [PATCH 4/4] updated RELEASE.txt --- RELEASE.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE.txt b/RELEASE.txt index 0206a5556..18f9d5578 100755 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -29,6 +29,7 @@ This document describes the differences between 5.0.2 and 5.0.1 releases. -------- 1. Potentital Memory Leak if one called Implementation::setDetectorType + 2. scanParameters missing in Python