diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 1d62158cf..6601641c9 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -301,6 +301,28 @@ class Detector(CppDetectorApi): def rx_arping(self, value): ut.set_using_dict(self.setRxArping, value) + @property + def rx_roi(self): + """Gets the list of ROIs configured in the receiver. + + Note + ----- + Each ROI is represented as a tuple of (x_start, y_start, x_end, y_end). \n + If no ROIs are configured, returns an empty list. + """ + return self.getRxROI() #vector of Roi structs how represented? + + @rx_roi.setter + def rx_roi(self, rois): + """Sets the list of ROIs in the receiver. + + Note + ----- + Each ROI should be represented as a tuple of (x_start, y_start, x_end, y_end). \n + Example: [(0, 100, 50, 100)] \n + """ + self.setRxROI(rois) + @property @element diff --git a/python/src/detector.cpp b/python/src/detector.cpp index 6c202eaba..4b41c636a 100644 --- a/python/src/detector.cpp +++ b/python/src/detector.cpp @@ -32,15 +32,15 @@ void init_det(py::module &m) { CppDetectorApi.def(py::init()); CppDetectorApi.def("loadConfig", - (void (Detector::*)(const std::string &)) & + (void(Detector::*)(const std::string &)) & Detector::loadConfig, py::arg()); CppDetectorApi.def("loadParameters", - (void (Detector::*)(const std::string &)) & + (void(Detector::*)(const std::string &)) & Detector::loadParameters, py::arg()); CppDetectorApi.def("loadParameters", - (void (Detector::*)(const std::vector &)) & + (void(Detector::*)(const std::vector &)) & Detector::loadParameters, py::arg()); CppDetectorApi.def( @@ -49,15 +49,15 @@ void init_det(py::module &m) { Detector::getHostname, py::arg() = Positions{}); CppDetectorApi.def("setHostname", - (void (Detector::*)(const std::vector &)) & + (void(Detector::*)(const std::vector &)) & Detector::setHostname, py::arg()); CppDetectorApi.def("setVirtualDetectorServers", - (void (Detector::*)(int, uint16_t)) & + (void(Detector::*)(int, uint16_t)) & Detector::setVirtualDetectorServers, py::arg(), py::arg()); CppDetectorApi.def("getShmId", - (int (Detector::*)() const) & Detector::getShmId); + (int(Detector::*)() const) & Detector::getShmId); CppDetectorApi.def("getPackageVersion", (std::string(Detector::*)() const) & Detector::getPackageVersion); CppDetectorApi.def("getClientVersion", (std::string(Detector::*)() const) & @@ -104,8 +104,8 @@ void init_det(py::module &m) { (Result(Detector::*)(sls::Positions) const) & Detector::getDetectorType, py::arg() = Positions{}); - CppDetectorApi.def("size", (int (Detector::*)() const) & Detector::size); - CppDetectorApi.def("empty", (bool (Detector::*)() const) & Detector::empty); + CppDetectorApi.def("size", (int(Detector::*)() const) & Detector::size); + CppDetectorApi.def("empty", (bool(Detector::*)() const) & Detector::empty); CppDetectorApi.def("getModuleGeometry", (defs::xy(Detector::*)() const) & Detector::getModuleGeometry); CppDetectorApi.def("getModuleSize", @@ -122,7 +122,7 @@ void init_det(py::module &m) { CppDetectorApi.def("getDetectorSize", (defs::xy(Detector::*)() const) & Detector::getDetectorSize); CppDetectorApi.def("setDetectorSize", - (void (Detector::*)(const defs::xy)) & + (void(Detector::*)(const defs::xy)) & Detector::setDetectorSize, py::arg()); CppDetectorApi.def("getSettingsList", (std::vector( @@ -135,7 +135,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setSettings", - (void (Detector::*)(defs::detectorSettings, sls::Positions)) & + (void(Detector::*)(defs::detectorSettings, sls::Positions)) & Detector::setSettings, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getThresholdEnergy", @@ -147,16 +147,16 @@ void init_det(py::module &m) { (Result>(Detector::*)(sls::Positions) const) & Detector::getAllThresholdEnergy, py::arg() = Positions{}); - CppDetectorApi.def("setThresholdEnergy", - (void (Detector::*)(int, defs::detectorSettings, bool, - sls::Positions)) & - Detector::setThresholdEnergy, - py::arg(), py::arg() = defs::STANDARD, py::arg() = true, - py::arg() = Positions{}); CppDetectorApi.def( "setThresholdEnergy", - (void (Detector::*)(std::array, defs::detectorSettings, bool, - sls::Positions)) & + (void(Detector::*)(int, defs::detectorSettings, bool, sls::Positions)) & + Detector::setThresholdEnergy, + py::arg(), py::arg() = defs::STANDARD, py::arg() = true, + py::arg() = Positions{}); + CppDetectorApi.def( + "setThresholdEnergy", + (void(Detector::*)(std::array, defs::detectorSettings, bool, + sls::Positions)) & Detector::setThresholdEnergy, py::arg(), py::arg() = defs::STANDARD, py::arg() = true, py::arg() = Positions{}); @@ -167,17 +167,17 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setSettingsPath", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::setSettingsPath, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "loadTrimbits", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::loadTrimbits, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "saveTrimbits", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::saveTrimbits, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getAllTrimbits", @@ -185,7 +185,7 @@ void init_det(py::module &m) { Detector::getAllTrimbits, py::arg() = Positions{}); CppDetectorApi.def("setAllTrimbits", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setAllTrimbits, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -194,14 +194,14 @@ void init_det(py::module &m) { Detector::getTrimEnergies, py::arg() = Positions{}); CppDetectorApi.def("setTrimEnergies", - (void (Detector::*)(std::vector, sls::Positions)) & + (void(Detector::*)(std::vector, sls::Positions)) & Detector::setTrimEnergies, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getGapPixelsinCallback", - (bool (Detector::*)() const) & + (bool(Detector::*)() const) & Detector::getGapPixelsinCallback); CppDetectorApi.def("setGapPixelsinCallback", - (void (Detector::*)(const bool)) & + (void(Detector::*)(const bool)) & Detector::setGapPixelsinCallback, py::arg()); CppDetectorApi.def("getFlipRows", @@ -209,7 +209,7 @@ void init_det(py::module &m) { Detector::getFlipRows, py::arg() = Positions{}); CppDetectorApi.def("setFlipRows", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setFlipRows, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getMaster", @@ -217,23 +217,23 @@ void init_det(py::module &m) { Detector::getMaster, py::arg() = Positions{}); CppDetectorApi.def("setMaster", - (void (Detector::*)(bool, int)) & Detector::setMaster, + (void(Detector::*)(bool, int)) & Detector::setMaster, py::arg(), py::arg()); CppDetectorApi.def("getSynchronization", (Result(Detector::*)(sls::Positions) const) & Detector::getSynchronization, py::arg() = Positions{}); - CppDetectorApi.def( - "setSynchronization", - (void (Detector::*)(bool)) & Detector::setSynchronization, py::arg()); + CppDetectorApi.def("setSynchronization", + (void(Detector::*)(bool)) & Detector::setSynchronization, + py::arg()); CppDetectorApi.def( "getBadChannels", - (void (Detector::*)(const std::string &, sls::Positions) const) & + (void(Detector::*)(const std::string &, sls::Positions) const) & Detector::getBadChannels, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setBadChannels", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::setBadChannels, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -243,12 +243,12 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setBadChannels", - (void (Detector::*)(const std::vector, sls::Positions)) & + (void(Detector::*)(const std::vector, sls::Positions)) & Detector::setBadChannels, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setBadChannels", - (void (Detector::*)(const std::vector>)) & + (void(Detector::*)(const std::vector>)) & Detector::setBadChannels, py::arg()); CppDetectorApi.def("getRow", @@ -256,7 +256,7 @@ void init_det(py::module &m) { Detector::getRow, py::arg() = Positions{}); CppDetectorApi.def("setRow", - (void (Detector::*)(const int, sls::Positions)) & + (void(Detector::*)(const int, sls::Positions)) & Detector::setRow, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getColumn", @@ -264,7 +264,7 @@ void init_det(py::module &m) { Detector::getColumn, py::arg() = Positions{}); CppDetectorApi.def("setColumn", - (void (Detector::*)(const int, sls::Positions)) & + (void(Detector::*)(const int, sls::Positions)) & Detector::setColumn, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("isVirtualDetectorServer", @@ -273,13 +273,13 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "registerAcquisitionFinishedCallback", - (void (Detector::*)(void (*)(double, int, void *), void *)) & + (void(Detector::*)(void (*)(double, int, void *), void *)) & Detector::registerAcquisitionFinishedCallback, py::arg(), py::arg()); CppDetectorApi.def("registerDataCallback", - (void (Detector::*)(void (*)(sls::detectorData *, - uint64_t, uint32_t, void *), - void *)) & + (void(Detector::*)(void (*)(sls::detectorData *, + uint64_t, uint32_t, void *), + void *)) & Detector::registerDataCallback, py::arg(), py::arg()); CppDetectorApi.def("getNumberOfFrames", @@ -288,13 +288,13 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setNumberOfFrames", - (void (Detector::*)(int64_t)) & Detector::setNumberOfFrames, py::arg()); + (void(Detector::*)(int64_t)) & Detector::setNumberOfFrames, py::arg()); CppDetectorApi.def("getNumberOfTriggers", (Result(Detector::*)(sls::Positions) const) & Detector::getNumberOfTriggers, py::arg() = Positions{}); CppDetectorApi.def("setNumberOfTriggers", - (void (Detector::*)(int64_t)) & + (void(Detector::*)(int64_t)) & Detector::setNumberOfTriggers, py::arg()); CppDetectorApi.def("getExptime", @@ -302,7 +302,7 @@ void init_det(py::module &m) { Detector::getExptime, py::arg() = Positions{}); CppDetectorApi.def("setExptime", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setExptime, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPeriod", @@ -310,7 +310,7 @@ void init_det(py::module &m) { Detector::getPeriod, py::arg() = Positions{}); CppDetectorApi.def("setPeriod", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setPeriod, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDelayAfterTrigger", @@ -318,7 +318,7 @@ void init_det(py::module &m) { Detector::getDelayAfterTrigger, py::arg() = Positions{}); CppDetectorApi.def("setDelayAfterTrigger", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setDelayAfterTrigger, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfFramesLeft", @@ -342,7 +342,7 @@ void init_det(py::module &m) { Detector::getDynamicRange, py::arg() = Positions{}); CppDetectorApi.def("setDynamicRange", - (void (Detector::*)(int)) & Detector::setDynamicRange, + (void(Detector::*)(int)) & Detector::setDynamicRange, py::arg()); CppDetectorApi.def("getDynamicRangeList", (std::vector(Detector::*)() const) & @@ -353,7 +353,7 @@ void init_det(py::module &m) { Detector::getTimingMode, py::arg() = Positions{}); CppDetectorApi.def("setTimingMode", - (void (Detector::*)(defs::timingMode, sls::Positions)) & + (void(Detector::*)(defs::timingMode, sls::Positions)) & Detector::setTimingMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTimingModeList", @@ -365,7 +365,7 @@ void init_det(py::module &m) { Detector::getReadoutSpeed, py::arg() = Positions{}); CppDetectorApi.def("setReadoutSpeed", - (void (Detector::*)(defs::speedLevel, sls::Positions)) & + (void(Detector::*)(defs::speedLevel, sls::Positions)) & Detector::setReadoutSpeed, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getReadoutSpeedList", @@ -376,7 +376,7 @@ void init_det(py::module &m) { Detector::getADCPhase, py::arg() = Positions{}); CppDetectorApi.def("setADCPhase", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setADCPhase, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getMaxADCPhaseShift", @@ -388,7 +388,7 @@ void init_det(py::module &m) { Detector::getADCPhaseInDegrees, py::arg() = Positions{}); CppDetectorApi.def("setADCPhaseInDegrees", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setADCPhaseInDegrees, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDBITPhase", @@ -396,7 +396,7 @@ void init_det(py::module &m) { Detector::getDBITPhase, py::arg() = Positions{}); CppDetectorApi.def("setDBITPhase", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setDBITPhase, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getMaxDBITPhaseShift", @@ -408,7 +408,7 @@ void init_det(py::module &m) { Detector::getDBITPhaseInDegrees, py::arg() = Positions{}); CppDetectorApi.def("setDBITPhaseInDegrees", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setDBITPhaseInDegrees, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getClockFrequency", @@ -420,7 +420,7 @@ void init_det(py::module &m) { Detector::getClockPhase, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setClockPhase", - (void (Detector::*)(int, int, sls::Positions)) & + (void(Detector::*)(int, int, sls::Positions)) & Detector::setClockPhase, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getMaxClockPhaseShift", @@ -432,7 +432,7 @@ void init_det(py::module &m) { Detector::getClockPhaseinDegrees, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setClockPhaseinDegrees", - (void (Detector::*)(int, int, sls::Positions)) & + (void(Detector::*)(int, int, sls::Positions)) & Detector::setClockPhaseinDegrees, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getClockDivider", @@ -440,7 +440,7 @@ void init_det(py::module &m) { Detector::getClockDivider, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setClockDivider", - (void (Detector::*)(int, int, sls::Positions)) & + (void(Detector::*)(int, int, sls::Positions)) & Detector::setClockDivider, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getHighVoltage", @@ -448,7 +448,7 @@ void init_det(py::module &m) { Detector::getHighVoltage, py::arg() = Positions{}); CppDetectorApi.def("setHighVoltage", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setHighVoltage, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPowerChip", @@ -456,7 +456,7 @@ void init_det(py::module &m) { Detector::getPowerChip, py::arg() = Positions{}); CppDetectorApi.def("setPowerChip", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setPowerChip, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getImageTestMode", @@ -464,7 +464,7 @@ void init_det(py::module &m) { Detector::getImageTestMode, py::arg() = Positions{}); CppDetectorApi.def("setImageTestMode", - (void (Detector::*)(const int, sls::Positions)) & + (void(Detector::*)(const int, sls::Positions)) & Detector::setImageTestMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTemperatureList", @@ -485,7 +485,7 @@ void init_det(py::module &m) { py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setDefaultDac", - (void (Detector::*)(defs::dacIndex, int, sls::Positions)) & + (void(Detector::*)(defs::dacIndex, int, sls::Positions)) & Detector::setDefaultDac, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -496,12 +496,12 @@ void init_det(py::module &m) { py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setDefaultDac", - (void (Detector::*)(defs::dacIndex, int, defs::detectorSettings, - sls::Positions)) & + (void(Detector::*)(defs::dacIndex, int, defs::detectorSettings, + sls::Positions)) & Detector::setDefaultDac, py::arg(), py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("resetToDefaultDacs", - (void (Detector::*)(const bool, sls::Positions)) & + (void(Detector::*)(const bool, sls::Positions)) & Detector::resetToDefaultDacs, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -511,7 +511,7 @@ void init_det(py::module &m) { py::arg(), py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def( "setDAC", - (void (Detector::*)(defs::dacIndex, int, bool, sls::Positions)) & + (void(Detector::*)(defs::dacIndex, int, bool, sls::Positions)) & Detector::setDAC, py::arg(), py::arg(), py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def( @@ -521,7 +521,7 @@ void init_det(py::module &m) { py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setOnChipDAC", - (void (Detector::*)(defs::dacIndex, int, int, sls::Positions)) & + (void(Detector::*)(defs::dacIndex, int, int, sls::Positions)) & Detector::setOnChipDAC, py::arg(), py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getExternalSignalFlags", @@ -531,7 +531,7 @@ void init_det(py::module &m) { py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setExternalSignalFlags", - (void (Detector::*)(int, defs::externalSignalFlag, sls::Positions)) & + (void(Detector::*)(int, defs::externalSignalFlag, sls::Positions)) & Detector::setExternalSignalFlags, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getParallelMode", @@ -539,7 +539,7 @@ void init_det(py::module &m) { Detector::getParallelMode, py::arg() = Positions{}); CppDetectorApi.def("setParallelMode", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setParallelMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getFilterResistor", @@ -547,7 +547,7 @@ void init_det(py::module &m) { Detector::getFilterResistor, py::arg() = Positions{}); CppDetectorApi.def("setFilterResistor", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setFilterResistor, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getCurrentSource", @@ -557,7 +557,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setCurrentSource", - (void (Detector::*)(defs::currentSrcParameters, sls::Positions)) & + (void(Detector::*)(defs::currentSrcParameters, sls::Positions)) & Detector::setCurrentSource, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDBITPipeline", @@ -565,7 +565,7 @@ void init_det(py::module &m) { Detector::getDBITPipeline, py::arg() = Positions{}); CppDetectorApi.def("setDBITPipeline", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setDBITPipeline, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getReadNRows", @@ -573,24 +573,24 @@ void init_det(py::module &m) { Detector::getReadNRows, py::arg() = Positions{}); CppDetectorApi.def("setReadNRows", - (void (Detector::*)(const int, sls::Positions)) & + (void(Detector::*)(const int, sls::Positions)) & Detector::setReadNRows, py::arg(), py::arg() = Positions{}); - CppDetectorApi.def("acquire", (void (Detector::*)()) & Detector::acquire); + CppDetectorApi.def("acquire", (void(Detector::*)()) & Detector::acquire); CppDetectorApi.def("clearAcquiringFlag", - (void (Detector::*)()) & Detector::clearAcquiringFlag); + (void(Detector::*)()) & Detector::clearAcquiringFlag); CppDetectorApi.def("startReceiver", - (void (Detector::*)()) & Detector::startReceiver); + (void(Detector::*)()) & Detector::startReceiver); CppDetectorApi.def("stopReceiver", - (void (Detector::*)()) & Detector::stopReceiver); + (void(Detector::*)()) & Detector::stopReceiver); CppDetectorApi.def("startDetector", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::startDetector, py::arg() = Positions{}); CppDetectorApi.def("startDetectorReadout", - (void (Detector::*)()) & Detector::startDetectorReadout); + (void(Detector::*)()) & Detector::startDetectorReadout); CppDetectorApi.def("stopDetector", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::stopDetector, py::arg() = Positions{}); CppDetectorApi.def( @@ -623,11 +623,11 @@ void init_det(py::module &m) { Detector::getNextFrameNumber, py::arg() = Positions{}); CppDetectorApi.def("setNextFrameNumber", - (void (Detector::*)(uint64_t, sls::Positions)) & + (void(Detector::*)(uint64_t, sls::Positions)) & Detector::setNextFrameNumber, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("sendSoftwareTrigger", - (void (Detector::*)(const bool, sls::Positions)) & + (void(Detector::*)(const bool, sls::Positions)) & Detector::sendSoftwareTrigger, py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def( @@ -636,7 +636,7 @@ void init_det(py::module &m) { Detector::getScan, py::arg() = Positions{}); CppDetectorApi.def("setScan", - (void (Detector::*)(const defs::scanParameters)) & + (void(Detector::*)(const defs::scanParameters)) & Detector::setScan, py::arg()); CppDetectorApi.def( @@ -649,7 +649,7 @@ void init_det(py::module &m) { Detector::getNumberofUDPInterfaces, py::arg() = Positions{}); CppDetectorApi.def("setNumberofUDPInterfaces", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setNumberofUDPInterfaces, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getSelectedUDPInterface", @@ -657,7 +657,7 @@ void init_det(py::module &m) { Detector::getSelectedUDPInterface, py::arg() = Positions{}); CppDetectorApi.def("selectUDPInterface", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::selectUDPInterface, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -666,7 +666,7 @@ void init_det(py::module &m) { Detector::getSourceUDPIP, py::arg() = Positions{}); CppDetectorApi.def("setSourceUDPIP", - (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + (void(Detector::*)(const sls::IpAddr, sls::Positions)) & Detector::setSourceUDPIP, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -675,7 +675,7 @@ void init_det(py::module &m) { Detector::getSourceUDPIP2, py::arg() = Positions{}); CppDetectorApi.def("setSourceUDPIP2", - (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + (void(Detector::*)(const sls::IpAddr, sls::Positions)) & Detector::setSourceUDPIP2, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -683,21 +683,19 @@ void init_det(py::module &m) { (Result(Detector::*)(sls::Positions) const) & Detector::getSourceUDPMAC, py::arg() = Positions{}); - CppDetectorApi.def( - "setSourceUDPMAC", - (void (Detector::*)(const sls::MacAddr, sls::Positions)) & - Detector::setSourceUDPMAC, - py::arg(), py::arg() = Positions{}); + CppDetectorApi.def("setSourceUDPMAC", + (void(Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setSourceUDPMAC, + py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "getSourceUDPMAC2", (Result(Detector::*)(sls::Positions) const) & Detector::getSourceUDPMAC2, py::arg() = Positions{}); - CppDetectorApi.def( - "setSourceUDPMAC2", - (void (Detector::*)(const sls::MacAddr, sls::Positions)) & - Detector::setSourceUDPMAC2, - py::arg(), py::arg() = Positions{}); + CppDetectorApi.def("setSourceUDPMAC2", + (void(Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setSourceUDPMAC2, + py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDestinationUDPList", (Result(Detector::*)( const uint32_t, sls::Positions) const) & @@ -705,7 +703,7 @@ void init_det(py::module &m) { py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setDestinationUDPList", - (void (Detector::*)(const sls::UdpDestination, const int)) & + (void(Detector::*)(const sls::UdpDestination, const int)) & Detector::setDestinationUDPList, py::arg(), py::arg()); CppDetectorApi.def("getNumberofUDPDestinations", @@ -713,7 +711,7 @@ void init_det(py::module &m) { Detector::getNumberofUDPDestinations, py::arg() = Positions{}); CppDetectorApi.def("clearUDPDestinations", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::clearUDPDestinations, py::arg() = Positions{}); CppDetectorApi.def("getFirstUDPDestination", @@ -721,7 +719,7 @@ void init_det(py::module &m) { Detector::getFirstUDPDestination, py::arg() = Positions{}); CppDetectorApi.def("setFirstUDPDestination", - (void (Detector::*)(const int, sls::Positions)) & + (void(Detector::*)(const int, sls::Positions)) & Detector::setFirstUDPDestination, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -730,7 +728,7 @@ void init_det(py::module &m) { Detector::getDestinationUDPIP, py::arg() = Positions{}); CppDetectorApi.def("setDestinationUDPIP", - (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + (void(Detector::*)(const sls::IpAddr, sls::Positions)) & Detector::setDestinationUDPIP, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -739,7 +737,7 @@ void init_det(py::module &m) { Detector::getDestinationUDPIP2, py::arg() = Positions{}); CppDetectorApi.def("setDestinationUDPIP2", - (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + (void(Detector::*)(const sls::IpAddr, sls::Positions)) & Detector::setDestinationUDPIP2, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -747,27 +745,25 @@ void init_det(py::module &m) { (Result(Detector::*)(sls::Positions) const) & Detector::getDestinationUDPMAC, py::arg() = Positions{}); - CppDetectorApi.def( - "setDestinationUDPMAC", - (void (Detector::*)(const sls::MacAddr, sls::Positions)) & - Detector::setDestinationUDPMAC, - py::arg(), py::arg() = Positions{}); + CppDetectorApi.def("setDestinationUDPMAC", + (void(Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setDestinationUDPMAC, + py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "getDestinationUDPMAC2", (Result(Detector::*)(sls::Positions) const) & Detector::getDestinationUDPMAC2, py::arg() = Positions{}); - CppDetectorApi.def( - "setDestinationUDPMAC2", - (void (Detector::*)(const sls::MacAddr, sls::Positions)) & - Detector::setDestinationUDPMAC2, - py::arg(), py::arg() = Positions{}); + CppDetectorApi.def("setDestinationUDPMAC2", + (void(Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setDestinationUDPMAC2, + py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDestinationUDPPort", (Result(Detector::*)(sls::Positions) const) & Detector::getDestinationUDPPort, py::arg() = Positions{}); CppDetectorApi.def("setDestinationUDPPort", - (void (Detector::*)(uint16_t, int)) & + (void(Detector::*)(uint16_t, int)) & Detector::setDestinationUDPPort, py::arg(), py::arg() = -1); CppDetectorApi.def("getDestinationUDPPort2", @@ -775,15 +771,15 @@ void init_det(py::module &m) { Detector::getDestinationUDPPort2, py::arg() = Positions{}); CppDetectorApi.def("setDestinationUDPPort2", - (void (Detector::*)(uint16_t, int)) & + (void(Detector::*)(uint16_t, int)) & Detector::setDestinationUDPPort2, py::arg(), py::arg() = -1); CppDetectorApi.def("reconfigureUDPDestination", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::reconfigureUDPDestination, py::arg() = Positions{}); CppDetectorApi.def("validateUDPConfiguration", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::validateUDPConfiguration, py::arg() = Positions{}); CppDetectorApi.def( @@ -796,7 +792,7 @@ void init_det(py::module &m) { Detector::getTenGiga, py::arg() = Positions{}); CppDetectorApi.def("setTenGiga", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setTenGiga, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTenGigaFlowControl", @@ -804,7 +800,7 @@ void init_det(py::module &m) { Detector::getTenGigaFlowControl, py::arg() = Positions{}); CppDetectorApi.def("setTenGigaFlowControl", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setTenGigaFlowControl, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTransmissionDelayFrame", @@ -812,7 +808,7 @@ void init_det(py::module &m) { Detector::getTransmissionDelayFrame, py::arg() = Positions{}); CppDetectorApi.def("setTransmissionDelayFrame", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setTransmissionDelayFrame, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTransmissionDelayLeft", @@ -820,7 +816,7 @@ void init_det(py::module &m) { Detector::getTransmissionDelayLeft, py::arg() = Positions{}); CppDetectorApi.def("setTransmissionDelayLeft", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setTransmissionDelayLeft, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTransmissionDelayRight", @@ -828,15 +824,15 @@ void init_det(py::module &m) { Detector::getTransmissionDelayRight, py::arg() = Positions{}); CppDetectorApi.def("setTransmissionDelayRight", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setTransmissionDelayRight, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTransmissionDelay", - (int (Detector::*)() const) & + (int(Detector::*)() const) & Detector::getTransmissionDelay); CppDetectorApi.def( "setTransmissionDelay", - (void (Detector::*)(int)) & Detector::setTransmissionDelay, py::arg()); + (void(Detector::*)(int)) & Detector::setTransmissionDelay, py::arg()); CppDetectorApi.def("getUseReceiverFlag", (Result(Detector::*)(sls::Positions) const) & Detector::getUseReceiverFlag, @@ -848,26 +844,26 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setRxHostname", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::setRxHostname, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setRxHostname", - (void (Detector::*)(const std::vector &)) & + (void(Detector::*)(const std::vector &)) & Detector::setRxHostname, py::arg()); CppDetectorApi.def("getRxPort", (Result(Detector::*)(sls::Positions) const) & Detector::getRxPort, py::arg() = Positions{}); - CppDetectorApi.def( - "setRxPort", (void (Detector::*)(uint16_t, int)) & Detector::setRxPort, - py::arg(), py::arg() = -1); + CppDetectorApi.def("setRxPort", + (void(Detector::*)(uint16_t, int)) & Detector::setRxPort, + py::arg(), py::arg() = -1); CppDetectorApi.def("getRxFifoDepth", (Result(Detector::*)(sls::Positions) const) & Detector::getRxFifoDepth, py::arg() = Positions{}); CppDetectorApi.def("setRxFifoDepth", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setRxFifoDepth, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxSilentMode", @@ -875,7 +871,7 @@ void init_det(py::module &m) { Detector::getRxSilentMode, py::arg() = Positions{}); CppDetectorApi.def("setRxSilentMode", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setRxSilentMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -885,7 +881,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setRxFrameDiscardPolicy", - (void (Detector::*)(defs::frameDiscardPolicy, sls::Positions)) & + (void(Detector::*)(defs::frameDiscardPolicy, sls::Positions)) & Detector::setRxFrameDiscardPolicy, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPartialFramesPadding", @@ -893,7 +889,7 @@ void init_det(py::module &m) { Detector::getPartialFramesPadding, py::arg() = Positions{}); CppDetectorApi.def("setPartialFramesPadding", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setPartialFramesPadding, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxUDPSocketBufferSize", @@ -901,7 +897,7 @@ void init_det(py::module &m) { Detector::getRxUDPSocketBufferSize, py::arg() = Positions{}); CppDetectorApi.def("setRxUDPSocketBufferSize", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setRxUDPSocketBufferSize, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxRealUDPSocketBufferSize", @@ -913,7 +909,7 @@ void init_det(py::module &m) { Detector::getRxLock, py::arg() = Positions{}); CppDetectorApi.def("setRxLock", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setRxLock, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -931,7 +927,7 @@ void init_det(py::module &m) { Detector::getRxArping, py::arg() = Positions{}); CppDetectorApi.def("setRxArping", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setRxArping, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxROI", @@ -939,18 +935,18 @@ void init_det(py::module &m) { Detector::getRxROI, py::arg() = -1); CppDetectorApi.def("setRxROI", - (void (Detector::*)(const std::vector &)) & + (void(Detector::*)(const std::vector &)) & Detector::setRxROI, py::arg()); CppDetectorApi.def("clearRxROI", - (void (Detector::*)()) & Detector::clearRxROI); + (void(Detector::*)()) & Detector::clearRxROI); CppDetectorApi.def( "getFileFormat", (Result(Detector::*)(sls::Positions) const) & Detector::getFileFormat, py::arg() = Positions{}); CppDetectorApi.def("setFileFormat", - (void (Detector::*)(defs::fileFormat, sls::Positions)) & + (void(Detector::*)(defs::fileFormat, sls::Positions)) & Detector::setFileFormat, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -960,7 +956,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setFilePath", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::setFilePath, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -970,7 +966,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setFileNamePrefix", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::setFileNamePrefix, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getAcquisitionIndex", @@ -978,7 +974,7 @@ void init_det(py::module &m) { Detector::getAcquisitionIndex, py::arg() = Positions{}); CppDetectorApi.def("setAcquisitionIndex", - (void (Detector::*)(int64_t, sls::Positions)) & + (void(Detector::*)(int64_t, sls::Positions)) & Detector::setAcquisitionIndex, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getFileWrite", @@ -986,20 +982,20 @@ void init_det(py::module &m) { Detector::getFileWrite, py::arg() = Positions{}); CppDetectorApi.def("setFileWrite", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setFileWrite, py::arg(), py::arg() = Positions{}); - CppDetectorApi.def("getMasterFileWrite", (bool (Detector::*)() const) & + CppDetectorApi.def("getMasterFileWrite", (bool(Detector::*)() const) & Detector::getMasterFileWrite); - CppDetectorApi.def( - "setMasterFileWrite", - (void (Detector::*)(bool)) & Detector::setMasterFileWrite, py::arg()); + CppDetectorApi.def("setMasterFileWrite", + (void(Detector::*)(bool)) & Detector::setMasterFileWrite, + py::arg()); CppDetectorApi.def("getFileOverWrite", (Result(Detector::*)(sls::Positions) const) & Detector::getFileOverWrite, py::arg() = Positions{}); CppDetectorApi.def("setFileOverWrite", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setFileOverWrite, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getFramesPerFile", @@ -1007,7 +1003,7 @@ void init_det(py::module &m) { Detector::getFramesPerFile, py::arg() = Positions{}); CppDetectorApi.def("setFramesPerFile", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setFramesPerFile, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxZmqDataStream", @@ -1015,7 +1011,7 @@ void init_det(py::module &m) { Detector::getRxZmqDataStream, py::arg() = Positions{}); CppDetectorApi.def("setRxZmqDataStream", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setRxZmqDataStream, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxZmqFrequency", @@ -1023,7 +1019,7 @@ void init_det(py::module &m) { Detector::getRxZmqFrequency, py::arg() = Positions{}); CppDetectorApi.def("setRxZmqFrequency", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setRxZmqFrequency, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxZmqTimer", @@ -1031,7 +1027,7 @@ void init_det(py::module &m) { Detector::getRxZmqTimer, py::arg() = Positions{}); CppDetectorApi.def("setRxZmqTimer", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setRxZmqTimer, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxZmqStartingFrame", @@ -1039,7 +1035,7 @@ void init_det(py::module &m) { Detector::getRxZmqStartingFrame, py::arg() = Positions{}); CppDetectorApi.def("setRxZmqStartingFrame", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setRxZmqStartingFrame, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxZmqPort", @@ -1047,7 +1043,7 @@ void init_det(py::module &m) { Detector::getRxZmqPort, py::arg() = Positions{}); CppDetectorApi.def("setRxZmqPort", - (void (Detector::*)(uint16_t, int)) & + (void(Detector::*)(uint16_t, int)) & Detector::setRxZmqPort, py::arg(), py::arg() = -1); CppDetectorApi.def("getClientZmqPort", @@ -1055,7 +1051,7 @@ void init_det(py::module &m) { Detector::getClientZmqPort, py::arg() = Positions{}); CppDetectorApi.def("setClientZmqPort", - (void (Detector::*)(uint16_t, int)) & + (void(Detector::*)(uint16_t, int)) & Detector::setClientZmqPort, py::arg(), py::arg() = -1); CppDetectorApi.def( @@ -1064,27 +1060,27 @@ void init_det(py::module &m) { Detector::getClientZmqIp, py::arg() = Positions{}); CppDetectorApi.def("setClientZmqIp", - (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + (void(Detector::*)(const sls::IpAddr, sls::Positions)) & Detector::setClientZmqIp, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getClientZmqHwm", - (int (Detector::*)() const) & Detector::getClientZmqHwm); + (int(Detector::*)() const) & Detector::getClientZmqHwm); CppDetectorApi.def( "setClientZmqHwm", - (void (Detector::*)(const int)) & Detector::setClientZmqHwm, py::arg()); + (void(Detector::*)(const int)) & Detector::setClientZmqHwm, py::arg()); CppDetectorApi.def("getRxZmqHwm", (Result(Detector::*)(sls::Positions) const) & Detector::getRxZmqHwm, py::arg() = Positions{}); CppDetectorApi.def("setRxZmqHwm", - (void (Detector::*)(const int)) & Detector::setRxZmqHwm, + (void(Detector::*)(const int)) & Detector::setRxZmqHwm, py::arg()); CppDetectorApi.def("getSubExptime", (Result(Detector::*)(sls::Positions) const) & Detector::getSubExptime, py::arg() = Positions{}); CppDetectorApi.def("setSubExptime", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setSubExptime, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getSubDeadTime", @@ -1092,7 +1088,7 @@ void init_det(py::module &m) { Detector::getSubDeadTime, py::arg() = Positions{}); CppDetectorApi.def("setSubDeadTime", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setSubDeadTime, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getOverFlowMode", @@ -1100,7 +1096,7 @@ void init_det(py::module &m) { Detector::getOverFlowMode, py::arg() = Positions{}); CppDetectorApi.def("setOverFlowMode", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setOverFlowMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRateCorrection", @@ -1108,11 +1104,11 @@ void init_det(py::module &m) { Detector::getRateCorrection, py::arg() = Positions{}); CppDetectorApi.def("setDefaultRateCorrection", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::setDefaultRateCorrection, py::arg() = Positions{}); CppDetectorApi.def("setRateCorrection", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setRateCorrection, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getInterruptSubframe", @@ -1120,7 +1116,7 @@ void init_det(py::module &m) { Detector::getInterruptSubframe, py::arg() = Positions{}); CppDetectorApi.def("setInterruptSubframe", - (void (Detector::*)(const bool, sls::Positions)) & + (void(Detector::*)(const bool, sls::Positions)) & Detector::setInterruptSubframe, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getMeasuredPeriod", @@ -1136,7 +1132,7 @@ void init_det(py::module &m) { Detector::getActive, py::arg() = Positions{}); CppDetectorApi.def("setActive", - (void (Detector::*)(const bool, sls::Positions)) & + (void(Detector::*)(const bool, sls::Positions)) & Detector::setActive, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPartialReset", @@ -1144,19 +1140,19 @@ void init_det(py::module &m) { Detector::getPartialReset, py::arg() = Positions{}); CppDetectorApi.def("setPartialReset", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setPartialReset, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("pulsePixel", - (void (Detector::*)(int, defs::xy, sls::Positions)) & + (void(Detector::*)(int, defs::xy, sls::Positions)) & Detector::pulsePixel, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("pulsePixelNMove", - (void (Detector::*)(int, defs::xy, sls::Positions)) & + (void(Detector::*)(int, defs::xy, sls::Positions)) & Detector::pulsePixelNMove, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("pulseChip", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::pulseChip, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getQuad", @@ -1164,7 +1160,7 @@ void init_det(py::module &m) { Detector::getQuad, py::arg() = Positions{}); CppDetectorApi.def("setQuad", - (void (Detector::*)(const bool)) & Detector::setQuad, + (void(Detector::*)(const bool)) & Detector::setQuad, py::arg()); CppDetectorApi.def("getDataStream", (Result(Detector::*)(const defs::portPosition, @@ -1172,8 +1168,8 @@ void init_det(py::module &m) { Detector::getDataStream, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setDataStream", - (void (Detector::*)(const defs::portPosition, const bool, - sls::Positions)) & + (void(Detector::*)(const defs::portPosition, const bool, + sls::Positions)) & Detector::setDataStream, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTop", @@ -1181,7 +1177,7 @@ void init_det(py::module &m) { Detector::getTop, py::arg() = Positions{}); CppDetectorApi.def( - "setTop", (void (Detector::*)(bool, sls::Positions)) & Detector::setTop, + "setTop", (void(Detector::*)(bool, sls::Positions)) & Detector::setTop, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getChipVersion", (Result(Detector::*)(sls::Positions) const) & @@ -1192,7 +1188,7 @@ void init_det(py::module &m) { Detector::getThresholdTemperature, py::arg() = Positions{}); CppDetectorApi.def("setThresholdTemperature", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setThresholdTemperature, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTemperatureControl", @@ -1200,7 +1196,7 @@ void init_det(py::module &m) { Detector::getTemperatureControl, py::arg() = Positions{}); CppDetectorApi.def("setTemperatureControl", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setTemperatureControl, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTemperatureEvent", @@ -1208,7 +1204,7 @@ void init_det(py::module &m) { Detector::getTemperatureEvent, py::arg() = Positions{}); CppDetectorApi.def("resetTemperatureEvent", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::resetTemperatureEvent, py::arg() = Positions{}); CppDetectorApi.def("getAutoComparatorDisable", @@ -1216,7 +1212,7 @@ void init_det(py::module &m) { Detector::getAutoComparatorDisable, py::arg() = Positions{}); CppDetectorApi.def("setAutoComparatorDisable", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setAutoComparatorDisable, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getComparatorDisableTime", @@ -1224,7 +1220,7 @@ void init_det(py::module &m) { Detector::getComparatorDisableTime, py::arg() = Positions{}); CppDetectorApi.def("setComparatorDisableTime", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setComparatorDisableTime, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfAdditionalStorageCells", @@ -1232,7 +1228,7 @@ void init_det(py::module &m) { Detector::getNumberOfAdditionalStorageCells, py::arg() = Positions{}); CppDetectorApi.def("setNumberOfAdditionalStorageCells", - (void (Detector::*)(int)) & + (void(Detector::*)(int)) & Detector::setNumberOfAdditionalStorageCells, py::arg()); CppDetectorApi.def("getStorageCellStart", @@ -1240,7 +1236,7 @@ void init_det(py::module &m) { Detector::getStorageCellStart, py::arg() = Positions{}); CppDetectorApi.def("setStorageCellStart", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setStorageCellStart, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getStorageCellDelay", @@ -1248,7 +1244,7 @@ void init_det(py::module &m) { Detector::getStorageCellDelay, py::arg() = Positions{}); CppDetectorApi.def("setStorageCellDelay", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setStorageCellDelay, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getGainModeList", @@ -1261,7 +1257,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setGainMode", - (void (Detector::*)(const defs::gainMode, sls::Positions)) & + (void(Detector::*)(const defs::gainMode, sls::Positions)) & Detector::setGainMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfFilterCells", @@ -1269,7 +1265,7 @@ void init_det(py::module &m) { Detector::getNumberOfFilterCells, py::arg() = Positions{}); CppDetectorApi.def("setNumberOfFilterCells", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setNumberOfFilterCells, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1279,7 +1275,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setPedestalMode", - (void (Detector::*)(const defs::pedestalParameters, sls::Positions)) & + (void(Detector::*)(const defs::pedestalParameters, sls::Positions)) & Detector::setPedestalMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1289,7 +1285,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setTimingInfoDecoder", - (void (Detector::*)(defs::timingInfoDecoder, sls::Positions)) & + (void(Detector::*)(defs::timingInfoDecoder, sls::Positions)) & Detector::setTimingInfoDecoder, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1299,7 +1295,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setCollectionMode", - (void (Detector::*)(defs::collectionMode, sls::Positions)) & + (void(Detector::*)(defs::collectionMode, sls::Positions)) & Detector::setCollectionMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfBursts", @@ -1308,13 +1304,13 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setNumberOfBursts", - (void (Detector::*)(int64_t)) & Detector::setNumberOfBursts, py::arg()); + (void(Detector::*)(int64_t)) & Detector::setNumberOfBursts, py::arg()); CppDetectorApi.def("getBurstPeriod", (Result(Detector::*)(sls::Positions) const) & Detector::getBurstPeriod, py::arg() = Positions{}); CppDetectorApi.def("setBurstPeriod", - (void (Detector::*)(sls::ns, sls::Positions)) & + (void(Detector::*)(sls::ns, sls::Positions)) & Detector::setBurstPeriod, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfBurstsLeft", @@ -1328,28 +1324,28 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setInjectChannel", - (void (Detector::*)(const int, const int, sls::Positions)) & + (void(Detector::*)(const int, const int, sls::Positions)) & Detector::setInjectChannel, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "getVetoPhoton", - (void (Detector::*)(const int, const std::string &, sls::Positions)) & + (void(Detector::*)(const int, const std::string &, sls::Positions)) & Detector::getVetoPhoton, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setVetoPhoton", - (void (Detector::*)(const int, const int, const int, - const std::string &, sls::Positions)) & + (void(Detector::*)(const int, const int, const int, const std::string &, + sls::Positions)) & Detector::setVetoPhoton, py::arg(), py::arg(), py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setVetoReference", - (void (Detector::*)(const int, const int, sls::Positions)) & + (void(Detector::*)(const int, const int, sls::Positions)) & Detector::setVetoReference, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setVetoFile", - (void (Detector::*)(const int, const std::string &, sls::Positions)) & + (void(Detector::*)(const int, const std::string &, sls::Positions)) & Detector::setVetoFile, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1358,7 +1354,7 @@ void init_det(py::module &m) { Detector::getBurstMode, py::arg() = Positions{}); CppDetectorApi.def("setBurstMode", - (void (Detector::*)(defs::burstMode, sls::Positions)) & + (void(Detector::*)(defs::burstMode, sls::Positions)) & Detector::setBurstMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getCDSGain", @@ -1366,7 +1362,7 @@ void init_det(py::module &m) { Detector::getCDSGain, py::arg() = Positions{}); CppDetectorApi.def("setCDSGain", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setCDSGain, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1376,7 +1372,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setTimingSource", - (void (Detector::*)(defs::timingSourceType, sls::Positions)) & + (void(Detector::*)(defs::timingSourceType, sls::Positions)) & Detector::setTimingSource, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getVeto", @@ -1384,7 +1380,7 @@ void init_det(py::module &m) { Detector::getVeto, py::arg() = Positions{}); CppDetectorApi.def("setVeto", - (void (Detector::*)(const bool, sls::Positions)) & + (void(Detector::*)(const bool, sls::Positions)) & Detector::setVeto, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1394,7 +1390,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setVetoStream", - (void (Detector::*)(const defs::streamingInterface, sls::Positions)) & + (void(Detector::*)(const defs::streamingInterface, sls::Positions)) & Detector::setVetoStream, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1405,8 +1401,8 @@ void init_det(py::module &m) { py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setVetoAlgorithm", - (void (Detector::*)(const defs::vetoAlgorithm, - const defs::streamingInterface, sls::Positions)) & + (void(Detector::*)(const defs::vetoAlgorithm, + const defs::streamingInterface, sls::Positions)) & Detector::setVetoAlgorithm, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1416,7 +1412,7 @@ void init_det(py::module &m) { py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setADCConfiguration", - (void (Detector::*)(const int, const int, const int, sls::Positions)) & + (void(Detector::*)(const int, const int, const int, sls::Positions)) & Detector::setADCConfiguration, py::arg(), py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getCounterMask", @@ -1424,7 +1420,7 @@ void init_det(py::module &m) { Detector::getCounterMask, py::arg() = Positions{}); CppDetectorApi.def("setCounterMask", - (void (Detector::*)(uint32_t, sls::Positions)) & + (void(Detector::*)(uint32_t, sls::Positions)) & Detector::setCounterMask, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfGates", @@ -1432,7 +1428,7 @@ void init_det(py::module &m) { Detector::getNumberOfGates, py::arg() = Positions{}); CppDetectorApi.def("setNumberOfGates", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setNumberOfGates, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1441,7 +1437,7 @@ void init_det(py::module &m) { Detector::getExptime, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setExptime", - (void (Detector::*)(int, sls::ns, sls::Positions)) & + (void(Detector::*)(int, sls::ns, sls::Positions)) & Detector::setExptime, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1455,7 +1451,7 @@ void init_det(py::module &m) { Detector::getGateDelay, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setGateDelay", - (void (Detector::*)(int, sls::ns, sls::Positions)) & + (void(Detector::*)(int, sls::ns, sls::Positions)) & Detector::setGateDelay, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1468,7 +1464,7 @@ void init_det(py::module &m) { Detector::getChipStatusRegister, py::arg() = Positions{}); CppDetectorApi.def("setGainCaps", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setGainCaps, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getGainCaps", @@ -1481,7 +1477,7 @@ void init_det(py::module &m) { Detector::getPolarity, py::arg() = Positions{}); CppDetectorApi.def("setPolarity", - (void (Detector::*)(defs::polarity, sls::Positions)) & + (void(Detector::*)(defs::polarity, sls::Positions)) & Detector::setPolarity, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getInterpolation", @@ -1489,7 +1485,7 @@ void init_det(py::module &m) { Detector::getInterpolation, py::arg() = Positions{}); CppDetectorApi.def("setInterpolation", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setInterpolation, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPumpProbe", @@ -1497,7 +1493,7 @@ void init_det(py::module &m) { Detector::getPumpProbe, py::arg() = Positions{}); CppDetectorApi.def("setPumpProbe", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setPumpProbe, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getAnalogPulsing", @@ -1505,7 +1501,7 @@ void init_det(py::module &m) { Detector::getAnalogPulsing, py::arg() = Positions{}); CppDetectorApi.def("setAnalogPulsing", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setAnalogPulsing, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDigitalPulsing", @@ -1513,7 +1509,7 @@ void init_det(py::module &m) { Detector::getDigitalPulsing, py::arg() = Positions{}); CppDetectorApi.def("setDigitalPulsing", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setDigitalPulsing, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfAnalogSamples", @@ -1521,7 +1517,7 @@ void init_det(py::module &m) { Detector::getNumberOfAnalogSamples, py::arg() = Positions{}); CppDetectorApi.def("setNumberOfAnalogSamples", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setNumberOfAnalogSamples, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getADCClock", @@ -1529,7 +1525,7 @@ void init_det(py::module &m) { Detector::getADCClock, py::arg() = Positions{}); CppDetectorApi.def("setADCClock", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setADCClock, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRUNClock", @@ -1537,7 +1533,7 @@ void init_det(py::module &m) { Detector::getRUNClock, py::arg() = Positions{}); CppDetectorApi.def("setRUNClock", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setRUNClock, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getSYNCClock", @@ -1557,7 +1553,7 @@ void init_det(py::module &m) { py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setPower", - (void (Detector::*)(defs::dacIndex, int, sls::Positions)) & + (void(Detector::*)(defs::dacIndex, int, sls::Positions)) & Detector::setPower, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getADCVpp", @@ -1565,7 +1561,7 @@ void init_det(py::module &m) { Detector::getADCVpp, py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def("setADCVpp", - (void (Detector::*)(int, bool, sls::Positions)) & + (void(Detector::*)(int, bool, sls::Positions)) & Detector::setADCVpp, py::arg(), py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def("getADCEnableMask", @@ -1573,7 +1569,7 @@ void init_det(py::module &m) { Detector::getADCEnableMask, py::arg() = Positions{}); CppDetectorApi.def("setADCEnableMask", - (void (Detector::*)(uint32_t, sls::Positions)) & + (void(Detector::*)(uint32_t, sls::Positions)) & Detector::setADCEnableMask, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTenGigaADCEnableMask", @@ -1581,7 +1577,7 @@ void init_det(py::module &m) { Detector::getTenGigaADCEnableMask, py::arg() = Positions{}); CppDetectorApi.def("setTenGigaADCEnableMask", - (void (Detector::*)(uint32_t, sls::Positions)) & + (void(Detector::*)(uint32_t, sls::Positions)) & Detector::setTenGigaADCEnableMask, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getTransceiverEnableMask", @@ -1589,7 +1585,7 @@ void init_det(py::module &m) { Detector::getTransceiverEnableMask, py::arg() = Positions{}); CppDetectorApi.def("setTransceiverEnableMask", - (void (Detector::*)(uint32_t, sls::Positions)) & + (void(Detector::*)(uint32_t, sls::Positions)) & Detector::setTransceiverEnableMask, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfDigitalSamples", @@ -1597,7 +1593,7 @@ void init_det(py::module &m) { Detector::getNumberOfDigitalSamples, py::arg() = Positions{}); CppDetectorApi.def("setNumberOfDigitalSamples", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setNumberOfDigitalSamples, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getNumberOfTransceiverSamples", @@ -1605,7 +1601,7 @@ void init_det(py::module &m) { Detector::getNumberOfTransceiverSamples, py::arg() = Positions{}); CppDetectorApi.def("setNumberOfTransceiverSamples", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setNumberOfTransceiverSamples, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1614,7 +1610,7 @@ void init_det(py::module &m) { Detector::getReadoutMode, py::arg() = Positions{}); CppDetectorApi.def("setReadoutMode", - (void (Detector::*)(defs::readoutMode, sls::Positions)) & + (void(Detector::*)(defs::readoutMode, sls::Positions)) & Detector::setReadoutMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDBITClock", @@ -1622,7 +1618,7 @@ void init_det(py::module &m) { Detector::getDBITClock, py::arg() = Positions{}); CppDetectorApi.def("setDBITClock", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setDBITClock, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1645,7 +1641,7 @@ void init_det(py::module &m) { Detector::getExternalSamplingSource, py::arg() = Positions{}); CppDetectorApi.def("setExternalSamplingSource", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setExternalSamplingSource, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getExternalSampling", @@ -1653,7 +1649,7 @@ void init_det(py::module &m) { Detector::getExternalSampling, py::arg() = Positions{}); CppDetectorApi.def("setExternalSampling", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setExternalSampling, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1663,7 +1659,7 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setRxDbitList", - (void (Detector::*)(const std::vector &, sls::Positions)) & + (void(Detector::*)(const std::vector &, sls::Positions)) & Detector::setRxDbitList, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxDbitOffset", @@ -1671,7 +1667,7 @@ void init_det(py::module &m) { Detector::getRxDbitOffset, py::arg() = Positions{}); CppDetectorApi.def("setRxDbitOffset", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setRxDbitOffset, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getRxDbitReorder", @@ -1679,11 +1675,11 @@ void init_det(py::module &m) { Detector::getRxDbitReorder, py::arg() = Positions{}); CppDetectorApi.def("setRxDbitReorder", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setRxDbitReorder, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setDigitalIODelay", - (void (Detector::*)(uint64_t, int, sls::Positions)) & + (void(Detector::*)(uint64_t, int, sls::Positions)) & Detector::setDigitalIODelay, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getLEDEnable", @@ -1691,11 +1687,11 @@ void init_det(py::module &m) { Detector::getLEDEnable, py::arg() = Positions{}); CppDetectorApi.def("setLEDEnable", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setLEDEnable, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setDacNames", - (void (Detector::*)(const std::vector)) & + (void(Detector::*)(const std::vector)) & Detector::setDacNames, py::arg()); CppDetectorApi.def("getDacNames", @@ -1708,7 +1704,7 @@ void init_det(py::module &m) { py::arg()); CppDetectorApi.def( "setDacName", - (void (Detector::*)(const defs::dacIndex, const std::string &)) & + (void(Detector::*)(const defs::dacIndex, const std::string &)) & Detector::setDacName, py::arg(), py::arg()); CppDetectorApi.def("getDacName", @@ -1716,18 +1712,18 @@ void init_det(py::module &m) { Detector::getDacName, py::arg()); CppDetectorApi.def("setAdcNames", - (void (Detector::*)(const std::vector)) & + (void(Detector::*)(const std::vector)) & Detector::setAdcNames, py::arg()); CppDetectorApi.def("getAdcNames", (std::vector(Detector::*)() const) & Detector::getAdcNames); CppDetectorApi.def("getAdcIndex", - (int (Detector::*)(const std::string &) const) & + (int(Detector::*)(const std::string &) const) & Detector::getAdcIndex, py::arg()); CppDetectorApi.def("setAdcName", - (void (Detector::*)(const int, const std::string &)) & + (void(Detector::*)(const int, const std::string &)) & Detector::setAdcName, py::arg(), py::arg()); CppDetectorApi.def("getAdcName", @@ -1735,18 +1731,18 @@ void init_det(py::module &m) { Detector::getAdcName, py::arg()); CppDetectorApi.def("setSignalNames", - (void (Detector::*)(const std::vector)) & + (void(Detector::*)(const std::vector)) & Detector::setSignalNames, py::arg()); CppDetectorApi.def("getSignalNames", (std::vector(Detector::*)() const) & Detector::getSignalNames); CppDetectorApi.def("getSignalIndex", - (int (Detector::*)(const std::string &) const) & + (int(Detector::*)(const std::string &) const) & Detector::getSignalIndex, py::arg()); CppDetectorApi.def("setSignalName", - (void (Detector::*)(const int, const std::string &)) & + (void(Detector::*)(const int, const std::string &)) & Detector::setSignalName, py::arg(), py::arg()); CppDetectorApi.def("getSignalName", @@ -1754,7 +1750,7 @@ void init_det(py::module &m) { Detector::getSignalName, py::arg()); CppDetectorApi.def("setPowerNames", - (void (Detector::*)(const std::vector)) & + (void(Detector::*)(const std::vector)) & Detector::setPowerNames, py::arg()); CppDetectorApi.def("getPowerNames", @@ -1767,7 +1763,7 @@ void init_det(py::module &m) { py::arg()); CppDetectorApi.def( "setPowerName", - (void (Detector::*)(const defs::dacIndex, const std::string &)) & + (void(Detector::*)(const defs::dacIndex, const std::string &)) & Detector::setPowerName, py::arg(), py::arg()); CppDetectorApi.def("getPowerName", @@ -1775,7 +1771,7 @@ void init_det(py::module &m) { Detector::getPowerName, py::arg()); CppDetectorApi.def("setSlowADCNames", - (void (Detector::*)(const std::vector)) & + (void(Detector::*)(const std::vector)) & Detector::setSlowADCNames, py::arg()); CppDetectorApi.def("getSlowADCNames", @@ -1788,7 +1784,7 @@ void init_det(py::module &m) { py::arg()); CppDetectorApi.def( "setSlowADCName", - (void (Detector::*)(const defs::dacIndex, const std::string &)) & + (void(Detector::*)(const defs::dacIndex, const std::string &)) & Detector::setSlowADCName, py::arg(), py::arg()); CppDetectorApi.def("getSlowADCName", @@ -1796,7 +1792,7 @@ void init_det(py::module &m) { Detector::getSlowADCName, py::arg()); CppDetectorApi.def("configureTransceiver", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::configureTransceiver, py::arg() = Positions{}); CppDetectorApi.def( @@ -1806,20 +1802,20 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setPattern", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::setPattern, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setPattern", - (void (Detector::*)(const sls::Pattern &, sls::Positions)) & + (void(Detector::*)(const sls::Pattern &, sls::Positions)) & Detector::setPattern, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("savePattern", - (void (Detector::*)(const std::string &)) & + (void(Detector::*)(const std::string &)) & Detector::savePattern, py::arg()); CppDetectorApi.def("loadDefaultPattern", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::loadDefaultPattern, py::arg() = Positions{}); CppDetectorApi.def("getPatternIOControl", @@ -1827,7 +1823,7 @@ void init_det(py::module &m) { Detector::getPatternIOControl, py::arg() = Positions{}); CppDetectorApi.def("setPatternIOControl", - (void (Detector::*)(uint64_t, sls::Positions)) & + (void(Detector::*)(uint64_t, sls::Positions)) & Detector::setPatternIOControl, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPatternWord", @@ -1835,7 +1831,7 @@ void init_det(py::module &m) { Detector::getPatternWord, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setPatternWord", - (void (Detector::*)(int, uint64_t, sls::Positions)) & + (void(Detector::*)(int, uint64_t, sls::Positions)) & Detector::setPatternWord, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1844,7 +1840,7 @@ void init_det(py::module &m) { Detector::getPatternLoopAddresses, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setPatternLoopAddresses", - (void (Detector::*)(int, int, int, sls::Positions)) & + (void(Detector::*)(int, int, int, sls::Positions)) & Detector::setPatternLoopAddresses, py::arg(), py::arg(), py::arg(), py::arg() = Positions{}); @@ -1853,7 +1849,7 @@ void init_det(py::module &m) { Detector::getPatternLoopCycles, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setPatternLoopCycles", - (void (Detector::*)(int, int, sls::Positions)) & + (void(Detector::*)(int, int, sls::Positions)) & Detector::setPatternLoopCycles, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPatternWaitAddr", @@ -1861,7 +1857,7 @@ void init_det(py::module &m) { Detector::getPatternWaitAddr, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setPatternWaitAddr", - (void (Detector::*)(int, int, sls::Positions)) & + (void(Detector::*)(int, int, sls::Positions)) & Detector::setPatternWaitAddr, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1870,7 +1866,7 @@ void init_det(py::module &m) { Detector::getPatternWaitClocks, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setPatternWaitClocks", - (void (Detector::*)(int, uint64_t, sls::Positions)) & + (void(Detector::*)(int, uint64_t, sls::Positions)) & Detector::setPatternWaitClocks, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1879,7 +1875,7 @@ void init_det(py::module &m) { Detector::getPatternWaitInterval, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("setPatternWaitInterval", - (void (Detector::*)(int, sls::ns, sls::Positions)) & + (void(Detector::*)(int, sls::ns, sls::Positions)) & Detector::setPatternWaitInterval, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPatternMask", @@ -1887,7 +1883,7 @@ void init_det(py::module &m) { Detector::getPatternMask, py::arg() = Positions{}); CppDetectorApi.def("setPatternMask", - (void (Detector::*)(uint64_t, sls::Positions)) & + (void(Detector::*)(uint64_t, sls::Positions)) & Detector::setPatternMask, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getPatternBitMask", @@ -1895,11 +1891,11 @@ void init_det(py::module &m) { Detector::getPatternBitMask, py::arg() = Positions{}); CppDetectorApi.def("setPatternBitMask", - (void (Detector::*)(uint64_t, sls::Positions)) & + (void(Detector::*)(uint64_t, sls::Positions)) & Detector::setPatternBitMask, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("startPattern", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::startPattern, py::arg() = Positions{}); CppDetectorApi.def("getAdditionalJsonHeader", @@ -1909,8 +1905,8 @@ void init_det(py::module &m) { py::arg() = Positions{}); CppDetectorApi.def( "setAdditionalJsonHeader", - (void (Detector::*)(const std::map &, - sls::Positions)) & + (void(Detector::*)(const std::map &, + sls::Positions)) & Detector::setAdditionalJsonHeader, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getAdditionalJsonParameter", @@ -1920,8 +1916,8 @@ void init_det(py::module &m) { py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "setAdditionalJsonParameter", - (void (Detector::*)(const std::string &, const std::string &, - sls::Positions)) & + (void(Detector::*)(const std::string &, const std::string &, + sls::Positions)) & Detector::setAdditionalJsonParameter, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getADCPipeline", @@ -1929,35 +1925,35 @@ void init_det(py::module &m) { Detector::getADCPipeline, py::arg() = Positions{}); CppDetectorApi.def("setADCPipeline", - (void (Detector::*)(int, sls::Positions)) & + (void(Detector::*)(int, sls::Positions)) & Detector::setADCPipeline, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "programFPGA", - (void (Detector::*)(const std::string &, const bool, sls::Positions)) & + (void(Detector::*)(const std::string &, const bool, sls::Positions)) & Detector::programFPGA, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def( - "resetFPGA", (void (Detector::*)(sls::Positions)) & Detector::resetFPGA, + "resetFPGA", (void(Detector::*)(sls::Positions)) & Detector::resetFPGA, py::arg() = Positions{}); CppDetectorApi.def( "updateDetectorServer", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::updateDetectorServer, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "updateKernel", - (void (Detector::*)(const std::string &, sls::Positions)) & + (void(Detector::*)(const std::string &, sls::Positions)) & Detector::updateKernel, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("rebootController", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::rebootController, py::arg() = Positions{}); CppDetectorApi.def( "updateFirmwareAndServer", - (void (Detector::*)(const std::string &, const std::string &, - sls::Positions)) & + (void(Detector::*)(const std::string &, const std::string &, + sls::Positions)) & Detector::updateFirmwareAndServer, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getUpdateMode", @@ -1965,7 +1961,7 @@ void init_det(py::module &m) { Detector::getUpdateMode, py::arg() = Positions{}); CppDetectorApi.def("setUpdateMode", - (void (Detector::*)(const bool, sls::Positions)) & + (void(Detector::*)(const bool, sls::Positions)) & Detector::setUpdateMode, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( @@ -1975,17 +1971,17 @@ void init_det(py::module &m) { py::arg(), py::arg() = Positions{}); CppDetectorApi.def( "writeRegister", - (void (Detector::*)(uint32_t, uint32_t, bool, sls::Positions)) & + (void(Detector::*)(uint32_t, uint32_t, bool, sls::Positions)) & Detector::writeRegister, py::arg(), py::arg(), py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def( "setBit", - (void (Detector::*)(uint32_t, int, bool, sls::Positions)) & + (void(Detector::*)(uint32_t, int, bool, sls::Positions)) & Detector::setBit, py::arg(), py::arg(), py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def( "clearBit", - (void (Detector::*)(uint32_t, int, bool, sls::Positions)) & + (void(Detector::*)(uint32_t, int, bool, sls::Positions)) & Detector::clearBit, py::arg(), py::arg(), py::arg() = false, py::arg() = Positions{}); CppDetectorApi.def( @@ -1994,22 +1990,21 @@ void init_det(py::module &m) { Detector::getBit, py::arg(), py::arg(), py::arg() = Positions{}); CppDetectorApi.def("executeFirmwareTest", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::executeFirmwareTest, py::arg() = Positions{}); CppDetectorApi.def("executeBusTest", - (void (Detector::*)(sls::Positions)) & + (void(Detector::*)(sls::Positions)) & Detector::executeBusTest, py::arg() = Positions{}); - CppDetectorApi.def( - "writeAdcRegister", - (void (Detector::*)(uint32_t, uint32_t, sls::Positions)) & - Detector::writeAdcRegister, - py::arg(), py::arg(), py::arg() = Positions{}); - CppDetectorApi.def("getInitialChecks", (bool (Detector::*)() const) & + CppDetectorApi.def("writeAdcRegister", + (void(Detector::*)(uint32_t, uint32_t, sls::Positions)) & + Detector::writeAdcRegister, + py::arg(), py::arg(), py::arg() = Positions{}); + CppDetectorApi.def("getInitialChecks", (bool(Detector::*)() const) & Detector::getInitialChecks); CppDetectorApi.def("setInitialChecks", - (void (Detector::*)(const bool)) & + (void(Detector::*)(const bool)) & Detector::setInitialChecks, py::arg()); CppDetectorApi.def("getADCInvert", @@ -2017,7 +2012,7 @@ void init_det(py::module &m) { Detector::getADCInvert, py::arg() = Positions{}); CppDetectorApi.def("setADCInvert", - (void (Detector::*)(uint32_t, sls::Positions)) & + (void(Detector::*)(uint32_t, sls::Positions)) & Detector::setADCInvert, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getControlPort", @@ -2025,7 +2020,7 @@ void init_det(py::module &m) { Detector::getControlPort, py::arg() = Positions{}); CppDetectorApi.def("setControlPort", - (void (Detector::*)(uint16_t, sls::Positions)) & + (void(Detector::*)(uint16_t, sls::Positions)) & Detector::setControlPort, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getStopPort", @@ -2033,7 +2028,7 @@ void init_det(py::module &m) { Detector::getStopPort, py::arg() = Positions{}); CppDetectorApi.def("setStopPort", - (void (Detector::*)(uint16_t, sls::Positions)) & + (void(Detector::*)(uint16_t, sls::Positions)) & Detector::setStopPort, py::arg(), py::arg() = Positions{}); CppDetectorApi.def("getDetectorLock", @@ -2041,7 +2036,7 @@ void init_det(py::module &m) { Detector::getDetectorLock, py::arg() = Positions{}); CppDetectorApi.def("setDetectorLock", - (void (Detector::*)(bool, sls::Positions)) & + (void(Detector::*)(bool, sls::Positions)) & Detector::setDetectorLock, py::arg(), py::arg() = Positions{}); CppDetectorApi.def( diff --git a/python/src/typecaster.h b/python/src/typecaster.h index 6412afa72..b011cebda 100644 --- a/python/src/typecaster.h +++ b/python/src/typecaster.h @@ -1,11 +1,12 @@ // SPDX-License-Identifier: LGPL-3.0-or-other // Copyright (C) 2021 Contributors to the SLS Detector Package #pragma once -#include #include +#include -#include "sls/Result.h" #include "DurationWrapper.h" +#include "sls/Result.h" +#include "sls/sls_detector_defs.h" namespace py = pybind11; namespace pybind11 { @@ -14,84 +15,125 @@ template struct type_caster> : list_caster, Type> {}; - // Based on the typecaster in pybind11/chrono.h template <> struct type_caster { - public: - PYBIND11_TYPE_CASTER(std::chrono::nanoseconds, const_name("DurationWrapper")); + public: + PYBIND11_TYPE_CASTER(std::chrono::nanoseconds, + const_name("DurationWrapper")); - // signed 25 bits required by the standard. - using days = std::chrono::duration>; + // signed 25 bits required by the standard. + using days = std::chrono::duration>; - /** - * Conversion part 1 (Python->C++): convert a PyObject into std::chrono::nanoseconds - * try datetime.timedelta, floats and our DurationWrapper wrapper - */ + /** + * Conversion part 1 (Python->C++): convert a PyObject into + * std::chrono::nanoseconds try datetime.timedelta, floats and our + * DurationWrapper wrapper + */ - bool load(handle src, bool) { - using namespace std::chrono; + bool load(handle src, bool) { + using namespace std::chrono; - // Lazy initialise the PyDateTime import - if (!PyDateTimeAPI) { - PyDateTime_IMPORT; - } + // Lazy initialise the PyDateTime import + if (!PyDateTimeAPI) { + PyDateTime_IMPORT; + } - if (!src) { + if (!src) { + return false; + } + // If invoked with datetime.delta object, same as in chrono.h + if (PyDelta_Check(src.ptr())) { + value = duration_cast( + days(PyDateTime_DELTA_GET_DAYS(src.ptr())) + + seconds(PyDateTime_DELTA_GET_SECONDS(src.ptr())) + + microseconds(PyDateTime_DELTA_GET_MICROSECONDS(src.ptr())) + + ); + return true; + } + // If invoked with a float we assume it is seconds and convert, same as + // in chrono.h + if (PyFloat_Check(src.ptr())) { + value = duration_cast( + duration(PyFloat_AsDouble(src.ptr()))); + return true; + } + // If invoked with an int we assume it is nanoseconds and convert, same + // as in chrono.h + if (PyLong_Check(src.ptr())) { + value = duration_cast( + duration(PyLong_AsLongLong(src.ptr()))); + return true; + } + + // Lastly if we were actually called with a DurationWrapper object we + // get the number of nanoseconds and create a std::chrono::nanoseconds + // from it + py::object py_cls = + py::module::import("slsdet._slsdet").attr("DurationWrapper"); + if (py::isinstance(src, py_cls)) { + sls::DurationWrapper *cls = src.cast(); + value = nanoseconds(cls->count()); + return true; + } + + return false; + } + + /** + * Conversion part 2 (C++ -> Python) + * import the module to get a handle to the wrapped class + * Default construct an object of (wrapped) DurationWrapper + * set the count from chrono::nanoseconds and return + */ + static handle cast(std::chrono::nanoseconds src, + return_value_policy /* policy */, handle /* parent */) { + py::object py_cls = + py::module::import("slsdet._slsdet").attr("DurationWrapper"); + py::object *obj = new py::object; + *obj = py_cls(); + sls::DurationWrapper *dur = obj->cast(); + dur->set_count(src.count()); + return *obj; + } +}; + +// Type caster for sls::defs::ROI from tuple +template <> struct type_caster { + PYBIND11_TYPE_CASTER(sls::defs::ROI, _("Sequence[int, int, int, int]")); + + // convert c++ ROI to python tuple + static handle cast(const sls::defs::ROI &roi, return_value_policy, handle) { + return py::make_tuple(roi.xmin, roi.xmax, roi.ymin, roi.ymax).release(); + } + + // convert from python to c++ ROI + bool load(handle roi, bool /*allow implicit conversion*/) { + + // accept tuple, list, numpy array any sequence + py::sequence seq; + try { + seq = py::reinterpret_borrow(roi); + } catch (...) { + return false; + } + + if (seq.size() != 4) + return false; + // Check if each element is an int + for (auto item : seq) { + if (!py::isinstance(item)) { return false; } - // If invoked with datetime.delta object, same as in chrono.h - if (PyDelta_Check(src.ptr())) { - value = duration_cast( - days(PyDateTime_DELTA_GET_DAYS(src.ptr())) + - seconds(PyDateTime_DELTA_GET_SECONDS(src.ptr())) + - microseconds(PyDateTime_DELTA_GET_MICROSECONDS(src.ptr())) - - ); - return true; - } - // If invoked with a float we assume it is seconds and convert, same as in chrono.h - if (PyFloat_Check(src.ptr())) { - value = duration_cast(duration(PyFloat_AsDouble(src.ptr()))); - return true; - } - // If invoked with an int we assume it is nanoseconds and convert, same as in chrono.h - if (PyLong_Check(src.ptr())) { - value = duration_cast(duration(PyLong_AsLongLong(src.ptr()))); - return true; - } - - - // Lastly if we were actually called with a DurationWrapper object we get - // the number of nanoseconds and create a std::chrono::nanoseconds from it - py::object py_cls = py::module::import("slsdet._slsdet").attr("DurationWrapper"); - if (py::isinstance(src, py_cls)){ - sls::DurationWrapper *cls = src.cast(); - value = nanoseconds(cls->count()); - return true; - } - - - return false; - } - /** - * Conversion part 2 (C++ -> Python) - * import the module to get a handle to the wrapped class - * Default construct an object of (wrapped) DurationWrapper - * set the count from chrono::nanoseconds and return - */ - static handle cast(std::chrono::nanoseconds src, return_value_policy /* policy */, handle /* parent */) { - py::object py_cls = py::module::import("slsdet._slsdet").attr("DurationWrapper"); - py::object* obj = new py::object; - *obj = py_cls(); - sls::DurationWrapper *dur = obj->cast(); - dur->set_count(src.count()); - return *obj; - } - }; - - + value.xmin = seq[0].cast(); + value.xmax = seq[1].cast(); + value.ymin = seq[2].cast(); + value.ymax = seq[3].cast(); + return true; + } +}; } // namespace detail } // namespace pybind11 \ No newline at end of file