python for datastream

This commit is contained in:
Erik Frojdh 2021-07-21 16:31:32 +02:00
parent d052efbd23
commit a301e223e9
3 changed files with 39 additions and 3 deletions

View File

@ -8,6 +8,8 @@ speedLevel = slsDetectorDefs.speedLevel
dacIndex = slsDetectorDefs.dacIndex
detectorType = slsDetectorDefs.detectorType
defs = slsDetectorDefs
from .utils import element_if_equal, all_equal, get_set_bits, list_to_bitmask
from .utils import Geometry, to_geo, element, reduce_time, is_iterable
from _slsdet import xy
@ -1787,10 +1789,25 @@ class Detector(CppDetectorApi):
"""
<<<-----------------------Eiger specific----------------------->>>
<<<Eiger>>>
"""
@property
def datastream(self):
"""
datastream [left|right] [0, 1]
[Eiger] Enables or disables data streaming from left or/and right side of detector. 1 (enabled) by default.
"""
result = {}
for port in [defs.LEFT, defs.RIGHT]:
result[port] = element_if_equal(self.getDataStream(port))
return result
@datastream.setter
def datastream(self, value):
ut.set_using_dict(self.setDataStream, *value)
@property
@element
def quad(self):

View File

@ -401,7 +401,9 @@ void init_det(py::module &m) {
.def("startDetector", (void (Detector::*)()) & Detector::startDetector)
.def("startDetectorReadout",
(void (Detector::*)()) & Detector::startDetectorReadout)
.def("stopDetector", (void (Detector::*)()) & Detector::stopDetector)
.def("stopDetector",
(void (Detector::*)(sls::Positions)) & Detector::stopDetector,
py::arg() = Positions{})
.def("getDetectorStatus",
(Result<defs::runStatus>(Detector::*)(sls::Positions) const) &
Detector::getDetectorStatus,
@ -430,7 +432,7 @@ void init_det(py::module &m) {
.def("sendSoftwareTrigger",
(void (Detector::*)(const bool, sls::Positions)) &
Detector::sendSoftwareTrigger,
py::arg(), py::arg() = Positions{})
py::arg() = false, py::arg() = Positions{})
.def("getScan",
(Result<defs::scanParameters>(Detector::*)(sls::Positions) const) &
Detector::getScan,
@ -911,6 +913,16 @@ void init_det(py::module &m) {
py::arg() = Positions{})
.def("setQuad", (void (Detector::*)(const bool)) & Detector::setQuad,
py::arg())
.def("getDataStream",
(Result<bool>(Detector::*)(const defs::portPosition,
sls::Positions) const) &
Detector::getDataStream,
py::arg(), py::arg() = Positions{})
.def("setDataStream",
(void (Detector::*)(const defs::portPosition, const bool,
sls::Positions)) &
Detector::setDataStream,
py::arg(), py::arg(), py::arg() = Positions{})
.def("getThresholdTemperature",
(Result<int>(Detector::*)(sls::Positions) const) &
Detector::getThresholdTemperature,

View File

@ -281,4 +281,11 @@ void init_enums(py::module &m) {
.value("M3_C225ACsh", slsDetectorDefs::M3_GainCaps::M3_C225ACsh)
.value("M3_C15pre", slsDetectorDefs::M3_GainCaps::M3_C15pre)
.export_values();
py::enum_<slsDetectorDefs::portPosition>(Defs, "portPosition")
.value("LEFT", slsDetectorDefs::portPosition::LEFT)
.value("RIGHT", slsDetectorDefs::portPosition::RIGHT)
.value("TOP", slsDetectorDefs::portPosition::TOP)
.value("BOTTOM", slsDetectorDefs::portPosition::BOTTOM)
.export_values();
}