diff --git a/python/scripts/generate_functions.py b/python/scripts/generate_functions.py index 391dfa426..4e830ce61 100644 --- a/python/scripts/generate_functions.py +++ b/python/scripts/generate_functions.py @@ -13,12 +13,18 @@ import argparse from parse import system_include_paths -default_build_path = "/home/l_frojdh/sls/build/" +default_build_path = "/home/l_frojdh/sls/build/" fpath = "../../slsDetectorSoftware/src/Detector.cpp" parser = argparse.ArgumentParser() -parser.add_argument("-p", "--build_path", help="Path to the build database", type = str, default=default_build_path) +parser.add_argument( + "-p", + "--build_path", + help="Path to the build database", + type=str, + default=default_build_path, +) cargs = parser.parse_args() db = cindex.CompilationDatabase.fromDirectory(cargs.build_path) @@ -26,7 +32,7 @@ index = cindex.Index.create() args = db.getCompileCommands(fpath) args = list(iter(args).__next__().arguments)[0:-1] args = args + "-x c++ --std=c++11".split() -syspath = system_include_paths('clang++') +syspath = system_include_paths("clang++") incargs = ["-I" + inc for inc in syspath] args = args + incargs @@ -39,6 +45,7 @@ ag = [] lines = [] +ag2 = [] def get_arguments(node): args = [a.type.spelling for a in node.get_arguments()] @@ -46,9 +53,21 @@ def get_arguments(node): "py::arg() = Positions{}" if item == "sls::Positions" else "py::arg()" for item in args ] - args = ', '.join(args) + args = ", ".join(args) if args: - args = f', {args}' + args = f", {args}" + return args + + +def get_fdec(node): + args = [a.type.spelling for a in node.get_arguments()] + if node.result_type.spelling: + return_type = node.result_type.spelling + else: + return_type = 'void' + + args = ", ".join(args) + args = f'({return_type}(Detector::*)({args}))' return args @@ -62,23 +81,36 @@ def visit(node): ): m.append(child) args = get_arguments(child) - lines.append(f'.def(\"{child.spelling}\", &Detector::{child.spelling}{args})') + fs = get_fdec(child) + lines.append( + f'.def("{child.spelling}",{fs} &Detector::{child.spelling}{args})' + ) for child in node.get_children(): visit(child) + # .def("setRxHostname", + # (void (Detector::*)(const std::string &, Positions)) & + # Detector::setRxHostname, + # py::arg(), py::arg() = Positions{}) + # .def("setRxHostname", + # (void (Detector::*)(const std::vector &)) & + # Detector::setRxHostname, + # py::arg()) + visit(tu.cursor) -with open('../src/detector_in.cpp') as f: +with open("../src/detector_in.cpp") as f: data = f.read() -s = ''.join(lines) -s += ';' -text = data.replace('[[FUNCTIONS]]', s) -warning = '/* WARINING This file is auto generated any edits might be overwritten without warning */\n\n' -with open('../src/detector.cpp', 'w') as f: +s = "".join(lines) +s += ";" +text = data.replace("[[FUNCTIONS]]", s) +warning = "/* WARINING This file is auto generated any edits might be overwritten without warning */\n\n" +with open("../src/detector.cpp", "w") as f: f.write(warning) f.write(text) # run clang format on the output -subprocess.run(['clang-format', '../src/detector.cpp', '-i']) \ No newline at end of file +subprocess.run(["clang-format", "../src/detector.cpp", "-i"]) + diff --git a/python/src/detector.cpp b/python/src/detector.cpp index 2261bcbe1..d14258e8b 100644 --- a/python/src/detector.cpp +++ b/python/src/detector.cpp @@ -13,641 +13,1330 @@ #include "typecaster.h" namespace py = pybind11; void init_det(py::module &m) { + using sls::defs; using sls::Detector; using sls::Positions; + using sls::Result; py::class_ CppDetectorApi(m, "CppDetectorApi"); CppDetectorApi .def(py::init()) - .def("freeSharedMemory", &Detector::freeSharedMemory) - .def("loadConfig", &Detector::loadConfig, py::arg()) - .def("loadParameters", &Detector::loadParameters, py::arg()) - .def("getHostname", &Detector::getHostname, py::arg() = Positions{}) - .def("setHostname", &Detector::setHostname, py::arg()) - .def("setVirtualDetectorServers", &Detector::setVirtualDetectorServers, + .def("freeSharedMemory", + (void (Detector::*)()) & Detector::freeSharedMemory) + .def("loadConfig", + (void (Detector::*)(const std::string &)) & Detector::loadConfig, + py::arg()) + .def("loadParameters", + (void (Detector::*)(const std::string &)) & + Detector::loadParameters, + py::arg()) + .def("getHostname", + (Result(Detector::*)(sls::Positions)) & + Detector::getHostname, + py::arg() = Positions{}) + .def("setHostname", + (void (Detector::*)(const std::vector &)) & + Detector::setHostname, + py::arg()) + .def("setVirtualDetectorServers", + (void (Detector::*)(int, int)) & + Detector::setVirtualDetectorServers, py::arg(), py::arg()) - .def("getShmId", &Detector::getShmId) - .def("getPackageVersion", &Detector::getPackageVersion) - .def("getClientVersion", &Detector::getClientVersion) - .def("getFirmwareVersion", &Detector::getFirmwareVersion, + .def("getShmId", (int (Detector::*)()) & Detector::getShmId) + .def("getPackageVersion", + (std::string(Detector::*)()) & Detector::getPackageVersion) + .def("getClientVersion", + (int64_t(Detector::*)()) & Detector::getClientVersion) + .def("getFirmwareVersion", + (Result(Detector::*)(sls::Positions)) & + Detector::getFirmwareVersion, py::arg() = Positions{}) - .def("getDetectorServerVersion", &Detector::getDetectorServerVersion, + .def("getDetectorServerVersion", + (Result(Detector::*)(sls::Positions)) & + Detector::getDetectorServerVersion, py::arg() = Positions{}) - .def("getSerialNumber", &Detector::getSerialNumber, + .def("getSerialNumber", + (Result(Detector::*)(sls::Positions)) & + Detector::getSerialNumber, py::arg() = Positions{}) - .def("getReceiverVersion", &Detector::getReceiverVersion, + .def("getReceiverVersion", + (Result(Detector::*)(sls::Positions)) & + Detector::getReceiverVersion, py::arg() = Positions{}) - .def("getDetectorType", &Detector::getDetectorType, + .def("getDetectorType", + (Result(Detector::*)(sls::Positions)) & + Detector::getDetectorType, py::arg() = Positions{}) - .def("size", &Detector::size) - .def("empty", &Detector::empty) - .def("getModuleGeometry", &Detector::getModuleGeometry) - .def("getModuleSize", &Detector::getModuleSize, py::arg() = Positions{}) - .def("getDetectorSize", &Detector::getDetectorSize) - .def("setDetectorSize", &Detector::setDetectorSize, py::arg()) - .def("getSettings", &Detector::getSettings, py::arg() = Positions{}) - .def("setSettings", &Detector::setSettings, py::arg(), + .def("size", (int (Detector::*)()) & Detector::size) + .def("empty", (bool (Detector::*)()) & Detector::empty) + .def("getModuleGeometry", + (defs::xy(Detector::*)()) & Detector::getModuleGeometry) + .def("getModuleSize", + (Result(Detector::*)(sls::Positions)) & + Detector::getModuleSize, py::arg() = Positions{}) + .def("getDetectorSize", + (defs::xy(Detector::*)()) & Detector::getDetectorSize) + .def("setDetectorSize", + (void (Detector::*)(const defs::xy)) & Detector::setDetectorSize, + py::arg()) + .def("getSettings", + (Result(Detector::*)(sls::Positions)) & + Detector::getSettings, + py::arg() = Positions{}) + .def("setSettings", + (void (Detector::*)(defs::detectorSettings, sls::Positions)) & + Detector::setSettings, + py::arg(), py::arg() = Positions{}) .def("registerAcquisitionFinishedCallback", - &Detector::registerAcquisitionFinishedCallback, py::arg(), + (void (Detector::*)(void (*)(double, int, void *), void *)) & + Detector::registerAcquisitionFinishedCallback, + py::arg(), py::arg()) + .def( + "registerDataCallback", + (void (Detector::*)( + void (*)(detectorData *, uint64_t, uint32_t, void *), void *)) & + Detector::registerDataCallback, + py::arg(), py::arg()) + .def("getNumberOfFrames", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfFrames, + py::arg() = Positions{}) + .def("setNumberOfFrames", + (void (Detector::*)(int64_t)) & Detector::setNumberOfFrames, py::arg()) - .def("registerDataCallback", &Detector::registerDataCallback, py::arg(), + .def("getNumberOfTriggers", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfTriggers, + py::arg() = Positions{}) + .def("setNumberOfTriggers", + (void (Detector::*)(int64_t)) & Detector::setNumberOfTriggers, py::arg()) - .def("getNumberOfFrames", &Detector::getNumberOfFrames, + .def("getExptime", + (Result(Detector::*)(sls::Positions)) & + Detector::getExptime, py::arg() = Positions{}) - .def("setNumberOfFrames", &Detector::setNumberOfFrames, py::arg()) - .def("getNumberOfTriggers", &Detector::getNumberOfTriggers, - py::arg() = Positions{}) - .def("setNumberOfTriggers", &Detector::setNumberOfTriggers, py::arg()) - .def("getExptime", &Detector::getExptime, py::arg() = Positions{}) - .def("setExptime", &Detector::setExptime, py::arg(), - py::arg() = Positions{}) - .def("getPeriod", &Detector::getPeriod, py::arg() = Positions{}) - .def("setPeriod", &Detector::setPeriod, py::arg(), - py::arg() = Positions{}) - .def("getDelayAfterTrigger", &Detector::getDelayAfterTrigger, - py::arg() = Positions{}) - .def("setDelayAfterTrigger", &Detector::setDelayAfterTrigger, py::arg(), - py::arg() = Positions{}) - .def("getNumberOfFramesLeft", &Detector::getNumberOfFramesLeft, - py::arg() = Positions{}) - .def("getNumberOfTriggersLeft", &Detector::getNumberOfTriggersLeft, - py::arg() = Positions{}) - .def("getPeriodLeft", &Detector::getPeriodLeft, py::arg() = Positions{}) - .def("getDelayAfterTriggerLeft", &Detector::getDelayAfterTriggerLeft, - py::arg() = Positions{}) - .def("getTimingMode", &Detector::getTimingMode, py::arg() = Positions{}) - .def("setTimingMode", &Detector::setTimingMode, py::arg(), - py::arg() = Positions{}) - .def("getSpeed", &Detector::getSpeed, py::arg() = Positions{}) - .def("setSpeed", &Detector::setSpeed, py::arg(), - py::arg() = Positions{}) - .def("getADCPhase", &Detector::getADCPhase, py::arg() = Positions{}) - .def("setADCPhase", &Detector::setADCPhase, py::arg(), - py::arg() = Positions{}) - .def("getMaxADCPhaseShift", &Detector::getMaxADCPhaseShift, - py::arg() = Positions{}) - .def("getADCPhaseInDegrees", &Detector::getADCPhaseInDegrees, - py::arg() = Positions{}) - .def("setADCPhaseInDegrees", &Detector::setADCPhaseInDegrees, py::arg(), - py::arg() = Positions{}) - .def("getDBITPhase", &Detector::getDBITPhase, py::arg() = Positions{}) - .def("setDBITPhase", &Detector::setDBITPhase, py::arg(), - py::arg() = Positions{}) - .def("getMaxDBITPhaseShift", &Detector::getMaxDBITPhaseShift, - py::arg() = Positions{}) - .def("getDBITPhaseInDegrees", &Detector::getDBITPhaseInDegrees, - py::arg() = Positions{}) - .def("setDBITPhaseInDegrees", &Detector::setDBITPhaseInDegrees, + .def("setExptime", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setExptime, py::arg(), py::arg() = Positions{}) - .def("getClockFrequency", &Detector::getClockFrequency, py::arg(), + .def("getPeriod", + (Result(Detector::*)(sls::Positions)) & + Detector::getPeriod, py::arg() = Positions{}) - .def("setClockFrequency", &Detector::setClockFrequency, py::arg(), + .def("setPeriod", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setPeriod, py::arg(), py::arg() = Positions{}) - .def("getClockPhase", &Detector::getClockPhase, py::arg(), + .def("getDelayAfterTrigger", + (Result(Detector::*)(sls::Positions)) & + Detector::getDelayAfterTrigger, py::arg() = Positions{}) - .def("setClockPhase", &Detector::setClockPhase, py::arg(), py::arg(), + .def("setDelayAfterTrigger", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setDelayAfterTrigger, + py::arg(), py::arg() = Positions{}) + .def("getNumberOfFramesLeft", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfFramesLeft, py::arg() = Positions{}) - .def("getMaxClockPhaseShift", &Detector::getMaxClockPhaseShift, + .def("getNumberOfTriggersLeft", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfTriggersLeft, + py::arg() = Positions{}) + .def("getPeriodLeft", + (Result(Detector::*)(sls::Positions)) & + Detector::getPeriodLeft, + py::arg() = Positions{}) + .def("getDelayAfterTriggerLeft", + (Result(Detector::*)(sls::Positions)) & + Detector::getDelayAfterTriggerLeft, + py::arg() = Positions{}) + .def("getTimingMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getTimingMode, + py::arg() = Positions{}) + .def("setTimingMode", + (void (Detector::*)(defs::timingMode, sls::Positions)) & + Detector::setTimingMode, py::arg(), py::arg() = Positions{}) - .def("getClockPhaseinDegrees", &Detector::getClockPhaseinDegrees, + .def("getSpeed", + (Result(Detector::*)(sls::Positions)) & + Detector::getSpeed, + py::arg() = Positions{}) + .def("setSpeed", + (void (Detector::*)(defs::speedLevel, sls::Positions)) & + Detector::setSpeed, py::arg(), py::arg() = Positions{}) - .def("setClockPhaseinDegrees", &Detector::setClockPhaseinDegrees, + .def("getADCPhase", + (Result(Detector::*)(sls::Positions)) & Detector::getADCPhase, + py::arg() = Positions{}) + .def("setADCPhase", + (void (Detector::*)(int, sls::Positions)) & Detector::setADCPhase, + py::arg(), py::arg() = Positions{}) + .def("getMaxADCPhaseShift", + (Result(Detector::*)(sls::Positions)) & + Detector::getMaxADCPhaseShift, + py::arg() = Positions{}) + .def("getADCPhaseInDegrees", + (Result(Detector::*)(sls::Positions)) & + Detector::getADCPhaseInDegrees, + py::arg() = Positions{}) + .def("setADCPhaseInDegrees", + (void (Detector::*)(int, sls::Positions)) & + Detector::setADCPhaseInDegrees, + py::arg(), py::arg() = Positions{}) + .def("getDBITPhase", + (Result(Detector::*)(sls::Positions)) & + Detector::getDBITPhase, + py::arg() = Positions{}) + .def("setDBITPhase", + (void (Detector::*)(int, sls::Positions)) & Detector::setDBITPhase, + py::arg(), py::arg() = Positions{}) + .def("getMaxDBITPhaseShift", + (Result(Detector::*)(sls::Positions)) & + Detector::getMaxDBITPhaseShift, + py::arg() = Positions{}) + .def("getDBITPhaseInDegrees", + (Result(Detector::*)(sls::Positions)) & + Detector::getDBITPhaseInDegrees, + py::arg() = Positions{}) + .def("setDBITPhaseInDegrees", + (void (Detector::*)(int, sls::Positions)) & + Detector::setDBITPhaseInDegrees, + py::arg(), py::arg() = Positions{}) + .def("getClockFrequency", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getClockFrequency, + py::arg(), py::arg() = Positions{}) + .def("setClockFrequency", + (void (Detector::*)(int, int, sls::Positions)) & + Detector::setClockFrequency, py::arg(), py::arg(), py::arg() = Positions{}) - .def("getClockDivider", &Detector::getClockDivider, py::arg(), - py::arg() = Positions{}) - .def("setClockDivider", &Detector::setClockDivider, py::arg(), + .def("getClockPhase", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getClockPhase, py::arg(), py::arg() = Positions{}) - .def("getHighVoltage", &Detector::getHighVoltage, - py::arg() = Positions{}) - .def("getPowerChip", &Detector::getPowerChip, py::arg() = Positions{}) - .def("setPowerChip", &Detector::setPowerChip, py::arg(), - py::arg() = Positions{}) - .def("setHighVoltage", &Detector::setHighVoltage, py::arg(), - py::arg() = Positions{}) - .def("getTemperature", &Detector::getTemperature, py::arg(), - py::arg() = Positions{}) - .def("getDAC", &Detector::getDAC, py::arg(), py::arg(), - py::arg() = Positions{}) - .def("setDAC", &Detector::setDAC, py::arg(), py::arg(), py::arg(), - py::arg() = Positions{}) - .def("getOnChipDAC", &Detector::getOnChipDAC, py::arg(), py::arg(), - py::arg() = Positions{}) - .def("setOnChipDAC", &Detector::setOnChipDAC, py::arg(), py::arg(), + .def("setClockPhase", + (void (Detector::*)(int, int, sls::Positions)) & + Detector::setClockPhase, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getMaxClockPhaseShift", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getMaxClockPhaseShift, py::arg(), py::arg() = Positions{}) - .def("acquire", &Detector::acquire) - .def("clearAcquiringFlag", &Detector::clearAcquiringFlag) - .def("startReceiver", &Detector::startReceiver) - .def("stopReceiver", &Detector::stopReceiver) - .def("startDetector", &Detector::startDetector) - .def("stopDetector", &Detector::stopDetector) - .def("getDetectorStatus", &Detector::getDetectorStatus, - py::arg() = Positions{}) - .def("getReceiverStatus", &Detector::getReceiverStatus, - py::arg() = Positions{}) - .def("getFramesCaught", &Detector::getFramesCaught, - py::arg() = Positions{}) - .def("getNumMissingPackets", &Detector::getNumMissingPackets, - py::arg() = Positions{}) - .def("getStartingFrameNumber", &Detector::getStartingFrameNumber, - py::arg() = Positions{}) - .def("setStartingFrameNumber", &Detector::setStartingFrameNumber, + .def("getClockPhaseinDegrees", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getClockPhaseinDegrees, py::arg(), py::arg() = Positions{}) - .def("sendSoftwareTrigger", &Detector::sendSoftwareTrigger, - py::arg() = Positions{}) - .def("getNumberofUDPInterfaces", &Detector::getNumberofUDPInterfaces, - py::arg() = Positions{}) - .def("setNumberofUDPInterfaces", &Detector::setNumberofUDPInterfaces, + .def("setClockPhaseinDegrees", + (void (Detector::*)(int, int, sls::Positions)) & + Detector::setClockPhaseinDegrees, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getClockDivider", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getClockDivider, py::arg(), py::arg() = Positions{}) - .def("getSelectedUDPInterface", &Detector::getSelectedUDPInterface, + .def("setClockDivider", + (void (Detector::*)(int, int, sls::Positions)) & + Detector::setClockDivider, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getHighVoltage", + (Result(Detector::*)(sls::Positions)) & + Detector::getHighVoltage, py::arg() = Positions{}) - .def("selectUDPInterface", &Detector::selectUDPInterface, py::arg(), + .def("getPowerChip", + (Result(Detector::*)(sls::Positions)) & + Detector::getPowerChip, py::arg() = Positions{}) - .def("getSourceUDPIP", &Detector::getSourceUDPIP, - py::arg() = Positions{}) - .def("setSourceUDPIP", &Detector::setSourceUDPIP, py::arg(), - py::arg() = Positions{}) - .def("getSourceUDPIP2", &Detector::getSourceUDPIP2, - py::arg() = Positions{}) - .def("setSourceUDPIP2", &Detector::setSourceUDPIP2, py::arg(), - py::arg() = Positions{}) - .def("getSourceUDPMAC", &Detector::getSourceUDPMAC, - py::arg() = Positions{}) - .def("setSourceUDPMAC", &Detector::setSourceUDPMAC, py::arg(), - py::arg() = Positions{}) - .def("getSourceUDPMAC2", &Detector::getSourceUDPMAC2, - py::arg() = Positions{}) - .def("setSourceUDPMAC2", &Detector::setSourceUDPMAC2, py::arg(), - py::arg() = Positions{}) - .def("getDestinationUDPIP", &Detector::getDestinationUDPIP, - py::arg() = Positions{}) - .def("setDestinationUDPIP", &Detector::setDestinationUDPIP, py::arg(), - py::arg() = Positions{}) - .def("getDestinationUDPIP2", &Detector::getDestinationUDPIP2, - py::arg() = Positions{}) - .def("setDestinationUDPIP2", &Detector::setDestinationUDPIP2, py::arg(), - py::arg() = Positions{}) - .def("getDestinationUDPMAC", &Detector::getDestinationUDPMAC, - py::arg() = Positions{}) - .def("setDestinationUDPMAC", &Detector::setDestinationUDPMAC, py::arg(), - py::arg() = Positions{}) - .def("getDestinationUDPMAC2", &Detector::getDestinationUDPMAC2, - py::arg() = Positions{}) - .def("setDestinationUDPMAC2", &Detector::setDestinationUDPMAC2, + .def("setPowerChip", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setPowerChip, py::arg(), py::arg() = Positions{}) - .def("getDestinationUDPPort", &Detector::getDestinationUDPPort, + .def("setHighVoltage", + (void (Detector::*)(int, sls::Positions)) & + Detector::setHighVoltage, + py::arg(), py::arg() = Positions{}) + .def("getTemperature", + (Result(Detector::*)(defs::dacIndex, sls::Positions)) & + Detector::getTemperature, + py::arg(), py::arg() = Positions{}) + .def("getDAC", + (Result(Detector::*)(defs::dacIndex, bool, sls::Positions)) & + Detector::getDAC, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("setDAC", + (void (Detector::*)(defs::dacIndex, int, bool, sls::Positions)) & + Detector::setDAC, + py::arg(), py::arg(), py::arg(), py::arg() = Positions{}) + .def("getOnChipDAC", + (Result(Detector::*)(defs::dacIndex, int, sls::Positions)) & + Detector::getOnChipDAC, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("setOnChipDAC", + (void (Detector::*)(defs::dacIndex, int, int, sls::Positions)) & + Detector::setOnChipDAC, + py::arg(), py::arg(), py::arg(), py::arg() = Positions{}) + .def("acquire", (void (Detector::*)()) & Detector::acquire) + .def("clearAcquiringFlag", + (void (Detector::*)()) & Detector::clearAcquiringFlag) + .def("startReceiver", (void (Detector::*)()) & Detector::startReceiver) + .def("stopReceiver", (void (Detector::*)()) & Detector::stopReceiver) + .def("startDetector", (void (Detector::*)()) & Detector::startDetector) + .def("stopDetector", (void (Detector::*)()) & Detector::stopDetector) + .def("getDetectorStatus", + (Result(Detector::*)(sls::Positions)) & + Detector::getDetectorStatus, py::arg() = Positions{}) - .def("setDestinationUDPPort", &Detector::setDestinationUDPPort, + .def("getReceiverStatus", + (Result(Detector::*)(sls::Positions)) & + Detector::getReceiverStatus, + py::arg() = Positions{}) + .def("getFramesCaught", + (Result(Detector::*)(sls::Positions)) & + Detector::getFramesCaught, + py::arg() = Positions{}) + .def("getNumMissingPackets", + (Result>(Detector::*)(sls::Positions)) & + Detector::getNumMissingPackets, + py::arg() = Positions{}) + .def("getStartingFrameNumber", + (Result(Detector::*)(sls::Positions)) & + Detector::getStartingFrameNumber, + py::arg() = Positions{}) + .def("setStartingFrameNumber", + (void (Detector::*)(uint64_t, sls::Positions)) & + Detector::setStartingFrameNumber, + py::arg(), py::arg() = Positions{}) + .def("sendSoftwareTrigger", + (void (Detector::*)(sls::Positions)) & + Detector::sendSoftwareTrigger, + py::arg() = Positions{}) + .def("getNumberofUDPInterfaces", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberofUDPInterfaces, + py::arg() = Positions{}) + .def("setNumberofUDPInterfaces", + (void (Detector::*)(int, sls::Positions)) & + Detector::setNumberofUDPInterfaces, + py::arg(), py::arg() = Positions{}) + .def("getSelectedUDPInterface", + (Result(Detector::*)(sls::Positions)) & + Detector::getSelectedUDPInterface, + py::arg() = Positions{}) + .def("selectUDPInterface", + (void (Detector::*)(int, sls::Positions)) & + Detector::selectUDPInterface, + py::arg(), py::arg() = Positions{}) + .def("getSourceUDPIP", + (Result(Detector::*)(sls::Positions)) & + Detector::getSourceUDPIP, + py::arg() = Positions{}) + .def("setSourceUDPIP", + (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + Detector::setSourceUDPIP, + py::arg(), py::arg() = Positions{}) + .def("getSourceUDPIP2", + (Result(Detector::*)(sls::Positions)) & + Detector::getSourceUDPIP2, + py::arg() = Positions{}) + .def("setSourceUDPIP2", + (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + Detector::setSourceUDPIP2, + py::arg(), py::arg() = Positions{}) + .def("getSourceUDPMAC", + (Result(Detector::*)(sls::Positions)) & + Detector::getSourceUDPMAC, + py::arg() = Positions{}) + .def("setSourceUDPMAC", + (void (Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setSourceUDPMAC, + py::arg(), py::arg() = Positions{}) + .def("getSourceUDPMAC2", + (Result(Detector::*)(sls::Positions)) & + Detector::getSourceUDPMAC2, + py::arg() = Positions{}) + .def("setSourceUDPMAC2", + (void (Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setSourceUDPMAC2, + py::arg(), py::arg() = Positions{}) + .def("getDestinationUDPIP", + (Result(Detector::*)(sls::Positions)) & + Detector::getDestinationUDPIP, + py::arg() = Positions{}) + .def("setDestinationUDPIP", + (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + Detector::setDestinationUDPIP, + py::arg(), py::arg() = Positions{}) + .def("getDestinationUDPIP2", + (Result(Detector::*)(sls::Positions)) & + Detector::getDestinationUDPIP2, + py::arg() = Positions{}) + .def("setDestinationUDPIP2", + (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + Detector::setDestinationUDPIP2, + py::arg(), py::arg() = Positions{}) + .def("getDestinationUDPMAC", + (Result(Detector::*)(sls::Positions)) & + Detector::getDestinationUDPMAC, + py::arg() = Positions{}) + .def("setDestinationUDPMAC", + (void (Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setDestinationUDPMAC, + py::arg(), py::arg() = Positions{}) + .def("getDestinationUDPMAC2", + (Result(Detector::*)(sls::Positions)) & + Detector::getDestinationUDPMAC2, + py::arg() = Positions{}) + .def("setDestinationUDPMAC2", + (void (Detector::*)(const sls::MacAddr, sls::Positions)) & + Detector::setDestinationUDPMAC2, + py::arg(), py::arg() = Positions{}) + .def("getDestinationUDPPort", + (Result(Detector::*)(sls::Positions)) & + Detector::getDestinationUDPPort, + py::arg() = Positions{}) + .def("setDestinationUDPPort", + (void (Detector::*)(int, int)) & Detector::setDestinationUDPPort, py::arg(), py::arg()) - .def("getDestinationUDPPort2", &Detector::getDestinationUDPPort2, + .def("getDestinationUDPPort2", + (Result(Detector::*)(sls::Positions)) & + Detector::getDestinationUDPPort2, py::arg() = Positions{}) - .def("setDestinationUDPPort2", &Detector::setDestinationUDPPort2, + .def("setDestinationUDPPort2", + (void (Detector::*)(int, int)) & Detector::setDestinationUDPPort2, py::arg(), py::arg()) - .def("printRxConfiguration", &Detector::printRxConfiguration, + .def("printRxConfiguration", + (Result(Detector::*)(sls::Positions)) & + Detector::printRxConfiguration, py::arg() = Positions{}) - .def("getTenGiga", &Detector::getTenGiga, py::arg() = Positions{}) - .def("setTenGiga", &Detector::setTenGiga, py::arg(), + .def("getTenGiga", + (Result(Detector::*)(sls::Positions)) & Detector::getTenGiga, py::arg() = Positions{}) - .def("getTenGigaFlowControl", &Detector::getTenGigaFlowControl, - py::arg() = Positions{}) - .def("setTenGigaFlowControl", &Detector::setTenGigaFlowControl, + .def("setTenGiga", + (void (Detector::*)(bool, sls::Positions)) & Detector::setTenGiga, py::arg(), py::arg() = Positions{}) - .def("getTransmissionDelayFrame", &Detector::getTransmissionDelayFrame, + .def("getTenGigaFlowControl", + (Result(Detector::*)(sls::Positions)) & + Detector::getTenGigaFlowControl, py::arg() = Positions{}) - .def("setTransmissionDelayFrame", &Detector::setTransmissionDelayFrame, + .def("setTenGigaFlowControl", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setTenGigaFlowControl, py::arg(), py::arg() = Positions{}) - .def("getTransmissionDelayLeft", &Detector::getTransmissionDelayLeft, + .def("getTransmissionDelayFrame", + (Result(Detector::*)(sls::Positions)) & + Detector::getTransmissionDelayFrame, py::arg() = Positions{}) - .def("setTransmissionDelayLeft", &Detector::setTransmissionDelayLeft, + .def("setTransmissionDelayFrame", + (void (Detector::*)(int, sls::Positions)) & + Detector::setTransmissionDelayFrame, py::arg(), py::arg() = Positions{}) - .def("getTransmissionDelayRight", &Detector::getTransmissionDelayRight, + .def("getTransmissionDelayLeft", + (Result(Detector::*)(sls::Positions)) & + Detector::getTransmissionDelayLeft, py::arg() = Positions{}) - .def("setTransmissionDelayRight", &Detector::setTransmissionDelayRight, + .def("setTransmissionDelayLeft", + (void (Detector::*)(int, sls::Positions)) & + Detector::setTransmissionDelayLeft, py::arg(), py::arg() = Positions{}) - .def("getUseReceiverFlag", &Detector::getUseReceiverFlag, + .def("getTransmissionDelayRight", + (Result(Detector::*)(sls::Positions)) & + Detector::getTransmissionDelayRight, py::arg() = Positions{}) - .def("getRxHostname", &Detector::getRxHostname, py::arg() = Positions{}) - .def("setRxHostname", &Detector::setRxHostname, py::arg(), - py::arg() = Positions{}) - .def("getRxPort", &Detector::getRxPort, py::arg() = Positions{}) - .def("setRxPort", &Detector::setRxPort, py::arg(), py::arg()) - .def("getRxFifoDepth", &Detector::getRxFifoDepth, - py::arg() = Positions{}) - .def("setRxFifoDepth", &Detector::setRxFifoDepth, py::arg(), - py::arg() = Positions{}) - .def("getRxSilentMode", &Detector::getRxSilentMode, - py::arg() = Positions{}) - .def("setRxSilentMode", &Detector::setRxSilentMode, py::arg(), - py::arg() = Positions{}) - .def("getRxFrameDiscardPolicy", &Detector::getRxFrameDiscardPolicy, - py::arg() = Positions{}) - .def("setRxFrameDiscardPolicy", &Detector::setRxFrameDiscardPolicy, + .def("setTransmissionDelayRight", + (void (Detector::*)(int, sls::Positions)) & + Detector::setTransmissionDelayRight, py::arg(), py::arg() = Positions{}) - .def("getPartialFramesPadding", &Detector::getPartialFramesPadding, + .def("getUseReceiverFlag", + (Result(Detector::*)(sls::Positions)) & + Detector::getUseReceiverFlag, py::arg() = Positions{}) - .def("setPartialFramesPadding", &Detector::setPartialFramesPadding, + .def("getRxHostname", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxHostname, + py::arg() = Positions{}) + .def("setRxHostname", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::setRxHostname, py::arg(), py::arg() = Positions{}) - .def("getRxUDPSocketBufferSize", &Detector::getRxUDPSocketBufferSize, + .def("setRxHostname", + (void (Detector::*)(const std::vector &)) & + Detector::setRxHostname, + py::arg()) + .def("getRxPort", + (Result(Detector::*)(sls::Positions)) & Detector::getRxPort, py::arg() = Positions{}) - .def("setRxUDPSocketBufferSize", &Detector::setRxUDPSocketBufferSize, + .def("setRxPort", (void (Detector::*)(int, int)) & Detector::setRxPort, + py::arg(), py::arg()) + .def("getRxFifoDepth", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxFifoDepth, + py::arg() = Positions{}) + .def("setRxFifoDepth", + (void (Detector::*)(int, sls::Positions)) & + Detector::setRxFifoDepth, + py::arg(), py::arg() = Positions{}) + .def("getRxSilentMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxSilentMode, + py::arg() = Positions{}) + .def("setRxSilentMode", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setRxSilentMode, + py::arg(), py::arg() = Positions{}) + .def("getRxFrameDiscardPolicy", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxFrameDiscardPolicy, + py::arg() = Positions{}) + .def("setRxFrameDiscardPolicy", + (void (Detector::*)(defs::frameDiscardPolicy, sls::Positions)) & + Detector::setRxFrameDiscardPolicy, + py::arg(), py::arg() = Positions{}) + .def("getPartialFramesPadding", + (Result(Detector::*)(sls::Positions)) & + Detector::getPartialFramesPadding, + py::arg() = Positions{}) + .def("setPartialFramesPadding", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setPartialFramesPadding, + py::arg(), py::arg() = Positions{}) + .def("getRxUDPSocketBufferSize", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxUDPSocketBufferSize, + py::arg() = Positions{}) + .def("setRxUDPSocketBufferSize", + (void (Detector::*)(int64_t, sls::Positions)) & + Detector::setRxUDPSocketBufferSize, py::arg(), py::arg() = Positions{}) .def("getRxRealUDPSocketBufferSize", - &Detector::getRxRealUDPSocketBufferSize, py::arg() = Positions{}) - .def("getRxLock", &Detector::getRxLock, py::arg() = Positions{}) - .def("setRxLock", &Detector::setRxLock, py::arg(), + (Result(Detector::*)(sls::Positions)) & + Detector::getRxRealUDPSocketBufferSize, py::arg() = Positions{}) - .def("getRxLastClientIP", &Detector::getRxLastClientIP, + .def("getRxLock", + (Result(Detector::*)(sls::Positions)) & Detector::getRxLock, py::arg() = Positions{}) - .def("getFileFormat", &Detector::getFileFormat, py::arg() = Positions{}) - .def("setFileFormat", &Detector::setFileFormat, py::arg(), + .def("setRxLock", + (void (Detector::*)(bool, sls::Positions)) & Detector::setRxLock, + py::arg(), py::arg() = Positions{}) + .def("getRxLastClientIP", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxLastClientIP, py::arg() = Positions{}) - .def("getFilePath", &Detector::getFilePath, py::arg() = Positions{}) - .def("setFilePath", &Detector::setFilePath, py::arg(), + .def("getFileFormat", + (Result(Detector::*)(sls::Positions)) & + Detector::getFileFormat, py::arg() = Positions{}) - .def("getFileNamePrefix", &Detector::getFileNamePrefix, + .def("setFileFormat", + (void (Detector::*)(defs::fileFormat, sls::Positions)) & + Detector::setFileFormat, + py::arg(), py::arg() = Positions{}) + .def("getFilePath", + (Result(Detector::*)(sls::Positions)) & + Detector::getFilePath, py::arg() = Positions{}) - .def("setFileNamePrefix", &Detector::setFileNamePrefix, py::arg(), + .def("setFilePath", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::setFilePath, + py::arg(), py::arg() = Positions{}) + .def("getFileNamePrefix", + (Result(Detector::*)(sls::Positions)) & + Detector::getFileNamePrefix, py::arg() = Positions{}) - .def("getAcquisitionIndex", &Detector::getAcquisitionIndex, + .def("setFileNamePrefix", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::setFileNamePrefix, + py::arg(), py::arg() = Positions{}) + .def("getAcquisitionIndex", + (Result(Detector::*)(sls::Positions)) & + Detector::getAcquisitionIndex, py::arg() = Positions{}) - .def("setAcquisitionIndex", &Detector::setAcquisitionIndex, py::arg(), + .def("setAcquisitionIndex", + (void (Detector::*)(int64_t, sls::Positions)) & + Detector::setAcquisitionIndex, + py::arg(), py::arg() = Positions{}) + .def("getFileWrite", + (Result(Detector::*)(sls::Positions)) & + Detector::getFileWrite, py::arg() = Positions{}) - .def("getFileWrite", &Detector::getFileWrite, py::arg() = Positions{}) - .def("setFileWrite", &Detector::setFileWrite, py::arg(), + .def("setFileWrite", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setFileWrite, + py::arg(), py::arg() = Positions{}) + .def("getMasterFileWrite", + (Result(Detector::*)(sls::Positions)) & + Detector::getMasterFileWrite, py::arg() = Positions{}) - .def("getMasterFileWrite", &Detector::getMasterFileWrite, + .def("setMasterFileWrite", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setMasterFileWrite, + py::arg(), py::arg() = Positions{}) + .def("getFileOverWrite", + (Result(Detector::*)(sls::Positions)) & + Detector::getFileOverWrite, py::arg() = Positions{}) - .def("setMasterFileWrite", &Detector::setMasterFileWrite, py::arg(), + .def("setFileOverWrite", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setFileOverWrite, + py::arg(), py::arg() = Positions{}) + .def("getFramesPerFile", + (Result(Detector::*)(sls::Positions)) & + Detector::getFramesPerFile, py::arg() = Positions{}) - .def("getFileOverWrite", &Detector::getFileOverWrite, + .def("setFramesPerFile", + (void (Detector::*)(int, sls::Positions)) & + Detector::setFramesPerFile, + py::arg(), py::arg() = Positions{}) + .def("getRxZmqDataStream", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxZmqDataStream, py::arg() = Positions{}) - .def("setFileOverWrite", &Detector::setFileOverWrite, py::arg(), + .def("setRxZmqDataStream", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setRxZmqDataStream, + py::arg(), py::arg() = Positions{}) + .def("getRxZmqFrequency", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxZmqFrequency, py::arg() = Positions{}) - .def("getFramesPerFile", &Detector::getFramesPerFile, + .def("setRxZmqFrequency", + (void (Detector::*)(int, sls::Positions)) & + Detector::setRxZmqFrequency, + py::arg(), py::arg() = Positions{}) + .def("getRxZmqTimer", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxZmqTimer, py::arg() = Positions{}) - .def("setFramesPerFile", &Detector::setFramesPerFile, py::arg(), + .def("setRxZmqTimer", + (void (Detector::*)(int, sls::Positions)) & + Detector::setRxZmqTimer, + py::arg(), py::arg() = Positions{}) + .def("getRxZmqPort", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxZmqPort, py::arg() = Positions{}) - .def("getRxZmqDataStream", &Detector::getRxZmqDataStream, - py::arg() = Positions{}) - .def("setRxZmqDataStream", &Detector::setRxZmqDataStream, py::arg(), - py::arg() = Positions{}) - .def("getRxZmqFrequency", &Detector::getRxZmqFrequency, - py::arg() = Positions{}) - .def("setRxZmqFrequency", &Detector::setRxZmqFrequency, py::arg(), - py::arg() = Positions{}) - .def("getRxZmqTimer", &Detector::getRxZmqTimer, py::arg() = Positions{}) - .def("setRxZmqTimer", &Detector::setRxZmqTimer, py::arg(), - py::arg() = Positions{}) - .def("getRxZmqPort", &Detector::getRxZmqPort, py::arg() = Positions{}) - .def("setRxZmqPort", &Detector::setRxZmqPort, py::arg(), py::arg()) - .def("getRxZmqIP", &Detector::getRxZmqIP, py::arg() = Positions{}) - .def("setRxZmqIP", &Detector::setRxZmqIP, py::arg(), - py::arg() = Positions{}) - .def("getClientZmqPort", &Detector::getClientZmqPort, - py::arg() = Positions{}) - .def("setClientZmqPort", &Detector::setClientZmqPort, py::arg(), + .def("setRxZmqPort", + (void (Detector::*)(int, int)) & Detector::setRxZmqPort, py::arg(), py::arg()) - .def("getClientZmqIp", &Detector::getClientZmqIp, + .def("getRxZmqIP", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxZmqIP, py::arg() = Positions{}) - .def("setClientZmqIp", &Detector::setClientZmqIp, py::arg(), + .def("setRxZmqIP", + (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + Detector::setRxZmqIP, + py::arg(), py::arg() = Positions{}) + .def("getClientZmqPort", + (Result(Detector::*)(sls::Positions)) & + Detector::getClientZmqPort, py::arg() = Positions{}) - .def("getDynamicRange", &Detector::getDynamicRange, + .def("setClientZmqPort", + (void (Detector::*)(int, int)) & Detector::setClientZmqPort, + py::arg(), py::arg()) + .def("getClientZmqIp", + (Result(Detector::*)(sls::Positions)) & + Detector::getClientZmqIp, py::arg() = Positions{}) - .def("setDynamicRange", &Detector::setDynamicRange, py::arg()) - .def("getSubExptime", &Detector::getSubExptime, py::arg() = Positions{}) - .def("setSubExptime", &Detector::setSubExptime, py::arg(), + .def("setClientZmqIp", + (void (Detector::*)(const sls::IpAddr, sls::Positions)) & + Detector::setClientZmqIp, + py::arg(), py::arg() = Positions{}) + .def("getDynamicRange", + (Result(Detector::*)(sls::Positions)) & + Detector::getDynamicRange, py::arg() = Positions{}) - .def("getSubDeadTime", &Detector::getSubDeadTime, + .def("setDynamicRange", + (void (Detector::*)(int)) & Detector::setDynamicRange, py::arg()) + .def("getSubExptime", + (Result(Detector::*)(sls::Positions)) & + Detector::getSubExptime, py::arg() = Positions{}) - .def("setSubDeadTime", &Detector::setSubDeadTime, py::arg(), + .def("setSubExptime", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setSubExptime, + py::arg(), py::arg() = Positions{}) + .def("getSubDeadTime", + (Result(Detector::*)(sls::Positions)) & + Detector::getSubDeadTime, py::arg() = Positions{}) - .def("getThresholdEnergy", &Detector::getThresholdEnergy, + .def("setSubDeadTime", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setSubDeadTime, + py::arg(), py::arg() = Positions{}) + .def("getThresholdEnergy", + (Result(Detector::*)(sls::Positions)) & + Detector::getThresholdEnergy, py::arg() = Positions{}) - .def("setThresholdEnergy", &Detector::setThresholdEnergy, py::arg(), + .def("setThresholdEnergy", + (void (Detector::*)(int, defs::detectorSettings, bool, + sls::Positions)) & + Detector::setThresholdEnergy, + py::arg(), py::arg(), py::arg(), py::arg() = Positions{}) + .def("getSettingsPath", + (Result(Detector::*)(sls::Positions)) & + Detector::getSettingsPath, + py::arg() = Positions{}) + .def("setSettingsPath", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::setSettingsPath, + py::arg(), py::arg() = Positions{}) + .def("loadTrimbits", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::loadTrimbits, + py::arg(), py::arg() = Positions{}) + .def("getRxAddGapPixels", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxAddGapPixels, + py::arg() = Positions{}) + .def("setRxAddGapPixels", + (void (Detector::*)(bool)) & Detector::setRxAddGapPixels, + py::arg()) + .def("getParallelMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getParallelMode, + py::arg() = Positions{}) + .def("setParallelMode", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setParallelMode, + py::arg(), py::arg() = Positions{}) + .def("getOverFlowMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getOverFlowMode, + py::arg() = Positions{}) + .def("setOverFlowMode", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setOverFlowMode, + py::arg(), py::arg() = Positions{}) + .def("getStoreInRamMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getStoreInRamMode, + py::arg() = Positions{}) + .def("setStoreInRamMode", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setStoreInRamMode, + py::arg(), py::arg() = Positions{}) + .def("getBottom", + (Result(Detector::*)(sls::Positions)) & Detector::getBottom, + py::arg() = Positions{}) + .def("setBottom", + (void (Detector::*)(bool, sls::Positions)) & Detector::setBottom, + py::arg(), py::arg() = Positions{}) + .def("getAllTrimbits", + (Result(Detector::*)(sls::Positions)) & + Detector::getAllTrimbits, + py::arg() = Positions{}) + .def("setAllTrimbits", + (void (Detector::*)(int, sls::Positions)) & + Detector::setAllTrimbits, + py::arg(), py::arg() = Positions{}) + .def("getTrimEnergies", + (Result>(Detector::*)(sls::Positions)) & + Detector::getTrimEnergies, + py::arg() = Positions{}) + .def("setTrimEnergies", + (void (Detector::*)(std::vector, sls::Positions)) & + Detector::setTrimEnergies, + py::arg(), py::arg() = Positions{}) + .def("getRateCorrection", + (Result(Detector::*)(sls::Positions)) & + Detector::getRateCorrection, + py::arg() = Positions{}) + .def("setDefaultRateCorrection", + (void (Detector::*)(sls::Positions)) & + Detector::setDefaultRateCorrection, + py::arg() = Positions{}) + .def("setRateCorrection", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setRateCorrection, + py::arg(), py::arg() = Positions{}) + .def("getPartialReadout", + (Result(Detector::*)(sls::Positions)) & + Detector::getPartialReadout, + py::arg() = Positions{}) + .def("setPartialReadout", + (void (Detector::*)(const int, sls::Positions)) & + Detector::setPartialReadout, + py::arg(), py::arg() = Positions{}) + .def("getInterruptSubframe", + (Result(Detector::*)(sls::Positions)) & + Detector::getInterruptSubframe, + py::arg() = Positions{}) + .def("setInterruptSubframe", + (void (Detector::*)(const bool, sls::Positions)) & + Detector::setInterruptSubframe, + py::arg(), py::arg() = Positions{}) + .def("getMeasuredPeriod", + (Result(Detector::*)(sls::Positions)) & + Detector::getMeasuredPeriod, + py::arg() = Positions{}) + .def("getMeasuredSubFramePeriod", + (Result(Detector::*)(sls::Positions)) & + Detector::getMeasuredSubFramePeriod, + py::arg() = Positions{}) + .def("getActive", + (Result(Detector::*)(sls::Positions)) & Detector::getActive, + py::arg() = Positions{}) + .def("setActive", + (void (Detector::*)(bool, sls::Positions)) & Detector::setActive, + py::arg(), py::arg() = Positions{}) + .def("getRxPadDeactivatedMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxPadDeactivatedMode, + py::arg() = Positions{}) + .def("setRxPadDeactivatedMode", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setRxPadDeactivatedMode, + py::arg(), py::arg() = Positions{}) + .def("getPartialReset", + (Result(Detector::*)(sls::Positions)) & + Detector::getPartialReset, + py::arg() = Positions{}) + .def("setPartialReset", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setPartialReset, + py::arg(), py::arg() = Positions{}) + .def("pulsePixel", + (void (Detector::*)(int, defs::xy, sls::Positions)) & + Detector::pulsePixel, py::arg(), py::arg(), py::arg() = Positions{}) - .def("getSettingsPath", &Detector::getSettingsPath, - py::arg() = Positions{}) - .def("setSettingsPath", &Detector::setSettingsPath, py::arg(), - py::arg() = Positions{}) - .def("loadTrimbits", &Detector::loadTrimbits, py::arg(), - py::arg() = Positions{}) - .def("getRxAddGapPixels", &Detector::getRxAddGapPixels, - py::arg() = Positions{}) - .def("setRxAddGapPixels", &Detector::setRxAddGapPixels, py::arg()) - .def("getParallelMode", &Detector::getParallelMode, - py::arg() = Positions{}) - .def("setParallelMode", &Detector::setParallelMode, py::arg(), - py::arg() = Positions{}) - .def("getOverFlowMode", &Detector::getOverFlowMode, - py::arg() = Positions{}) - .def("setOverFlowMode", &Detector::setOverFlowMode, py::arg(), - py::arg() = Positions{}) - .def("getStoreInRamMode", &Detector::getStoreInRamMode, - py::arg() = Positions{}) - .def("setStoreInRamMode", &Detector::setStoreInRamMode, py::arg(), - py::arg() = Positions{}) - .def("getBottom", &Detector::getBottom, py::arg() = Positions{}) - .def("setBottom", &Detector::setBottom, py::arg(), - py::arg() = Positions{}) - .def("getAllTrimbits", &Detector::getAllTrimbits, - py::arg() = Positions{}) - .def("setAllTrimbits", &Detector::setAllTrimbits, py::arg(), - py::arg() = Positions{}) - .def("getTrimEnergies", &Detector::getTrimEnergies, - py::arg() = Positions{}) - .def("setTrimEnergies", &Detector::setTrimEnergies, py::arg(), - py::arg() = Positions{}) - .def("getRateCorrection", &Detector::getRateCorrection, - py::arg() = Positions{}) - .def("setDefaultRateCorrection", &Detector::setDefaultRateCorrection, - py::arg() = Positions{}) - .def("setRateCorrection", &Detector::setRateCorrection, py::arg(), - py::arg() = Positions{}) - .def("getPartialReadout", &Detector::getPartialReadout, - py::arg() = Positions{}) - .def("setPartialReadout", &Detector::setPartialReadout, py::arg(), - py::arg() = Positions{}) - .def("getInterruptSubframe", &Detector::getInterruptSubframe, - py::arg() = Positions{}) - .def("setInterruptSubframe", &Detector::setInterruptSubframe, py::arg(), - py::arg() = Positions{}) - .def("getMeasuredPeriod", &Detector::getMeasuredPeriod, - py::arg() = Positions{}) - .def("getMeasuredSubFramePeriod", &Detector::getMeasuredSubFramePeriod, - py::arg() = Positions{}) - .def("getActive", &Detector::getActive, py::arg() = Positions{}) - .def("setActive", &Detector::setActive, py::arg(), - py::arg() = Positions{}) - .def("getRxPadDeactivatedMode", &Detector::getRxPadDeactivatedMode, - py::arg() = Positions{}) - .def("setRxPadDeactivatedMode", &Detector::setRxPadDeactivatedMode, + .def("pulsePixelNMove", + (void (Detector::*)(int, defs::xy, sls::Positions)) & + Detector::pulsePixelNMove, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("pulseChip", + (void (Detector::*)(int, sls::Positions)) & Detector::pulseChip, py::arg(), py::arg() = Positions{}) - .def("getPartialReset", &Detector::getPartialReset, + .def("getQuad", + (Result(Detector::*)(sls::Positions)) & Detector::getQuad, py::arg() = Positions{}) - .def("setPartialReset", &Detector::setPartialReset, py::arg(), + .def("setQuad", (void (Detector::*)(const bool)) & Detector::setQuad, + py::arg()) + .def("getThresholdTemperature", + (Result(Detector::*)(sls::Positions)) & + Detector::getThresholdTemperature, py::arg() = Positions{}) - .def("pulsePixel", &Detector::pulsePixel, py::arg(), py::arg(), - py::arg() = Positions{}) - .def("pulsePixelNMove", &Detector::pulsePixelNMove, py::arg(), + .def("setThresholdTemperature", + (void (Detector::*)(int, sls::Positions)) & + Detector::setThresholdTemperature, py::arg(), py::arg() = Positions{}) - .def("pulseChip", &Detector::pulseChip, py::arg(), + .def("getTemperatureControl", + (Result(Detector::*)(sls::Positions)) & + Detector::getTemperatureControl, py::arg() = Positions{}) - .def("getQuad", &Detector::getQuad, py::arg() = Positions{}) - .def("setQuad", &Detector::setQuad, py::arg()) - .def("getThresholdTemperature", &Detector::getThresholdTemperature, - py::arg() = Positions{}) - .def("setThresholdTemperature", &Detector::setThresholdTemperature, + .def("setTemperatureControl", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setTemperatureControl, py::arg(), py::arg() = Positions{}) - .def("getTemperatureControl", &Detector::getTemperatureControl, + .def("getTemperatureEvent", + (Result(Detector::*)(sls::Positions)) & + Detector::getTemperatureEvent, py::arg() = Positions{}) - .def("setTemperatureControl", &Detector::setTemperatureControl, + .def("resetTemperatureEvent", + (void (Detector::*)(sls::Positions)) & + Detector::resetTemperatureEvent, + py::arg() = Positions{}) + .def("getAutoCompDisable", + (Result(Detector::*)(sls::Positions)) & + Detector::getAutoCompDisable, + py::arg() = Positions{}) + .def("setAutoCompDisable", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setAutoCompDisable, py::arg(), py::arg() = Positions{}) - .def("getTemperatureEvent", &Detector::getTemperatureEvent, - py::arg() = Positions{}) - .def("resetTemperatureEvent", &Detector::resetTemperatureEvent, - py::arg() = Positions{}) - .def("getAutoCompDisable", &Detector::getAutoCompDisable, - py::arg() = Positions{}) - .def("setAutoCompDisable", &Detector::setAutoCompDisable, py::arg(), - py::arg() = Positions{}) .def("getNumberOfAdditionalStorageCells", - &Detector::getNumberOfAdditionalStorageCells, + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfAdditionalStorageCells, py::arg() = Positions{}) .def("setNumberOfAdditionalStorageCells", - &Detector::setNumberOfAdditionalStorageCells, py::arg()) - .def("getStorageCellStart", &Detector::getStorageCellStart, + (void (Detector::*)(int)) & + Detector::setNumberOfAdditionalStorageCells, + py::arg()) + .def("getStorageCellStart", + (Result(Detector::*)(sls::Positions)) & + Detector::getStorageCellStart, py::arg() = Positions{}) - .def("setStoragecellStart", &Detector::setStoragecellStart, py::arg(), - py::arg() = Positions{}) - .def("getStorageCellDelay", &Detector::getStorageCellDelay, - py::arg() = Positions{}) - .def("setStorageCellDelay", &Detector::setStorageCellDelay, py::arg(), - py::arg() = Positions{}) - .def("getROI", &Detector::getROI, py::arg() = Positions{}) - .def("setROI", &Detector::setROI, py::arg(), py::arg()) - .def("clearROI", &Detector::clearROI, py::arg() = Positions{}) - .def("getExptimeLeft", &Detector::getExptimeLeft, - py::arg() = Positions{}) - .def("getExternalSignalFlags", &Detector::getExternalSignalFlags, - py::arg() = Positions{}) - .def("setExternalSignalFlags", &Detector::setExternalSignalFlags, + .def("setStoragecellStart", + (void (Detector::*)(int, sls::Positions)) & + Detector::setStoragecellStart, py::arg(), py::arg() = Positions{}) - .def("getImageTestMode", &Detector::getImageTestMode, + .def("getStorageCellDelay", + (Result(Detector::*)(sls::Positions)) & + Detector::getStorageCellDelay, py::arg() = Positions{}) - .def("setImageTestMode", &Detector::setImageTestMode, py::arg(), - py::arg() = Positions{}) - .def("getNumberOfBursts", &Detector::getNumberOfBursts, - py::arg() = Positions{}) - .def("setNumberOfBursts", &Detector::setNumberOfBursts, py::arg()) - .def("getBurstPeriod", &Detector::getBurstPeriod, - py::arg() = Positions{}) - .def("setBurstPeriod", &Detector::setBurstPeriod, py::arg(), - py::arg() = Positions{}) - .def("getInjectChannel", &Detector::getInjectChannel, - py::arg() = Positions{}) - .def("setInjectChannel", &Detector::setInjectChannel, py::arg(), + .def("setStorageCellDelay", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setStorageCellDelay, py::arg(), py::arg() = Positions{}) - .def("getVetoPhoton", &Detector::getVetoPhoton, py::arg(), + .def("getROI", + (Result(Detector::*)(sls::Positions)) & + Detector::getROI, py::arg() = Positions{}) - .def("setVetoPhoton", &Detector::setVetoPhoton, py::arg(), py::arg(), + .def("setROI", (void (Detector::*)(defs::ROI, int)) & Detector::setROI, + py::arg(), py::arg()) + .def("clearROI", + (void (Detector::*)(sls::Positions)) & Detector::clearROI, + py::arg() = Positions{}) + .def("getExptimeLeft", + (Result(Detector::*)(sls::Positions)) & + Detector::getExptimeLeft, + py::arg() = Positions{}) + .def("getExternalSignalFlags", + (Result(Detector::*)(sls::Positions)) & + Detector::getExternalSignalFlags, + py::arg() = Positions{}) + .def("setExternalSignalFlags", + (void (Detector::*)(defs::externalSignalFlag, sls::Positions)) & + Detector::setExternalSignalFlags, + py::arg(), py::arg() = Positions{}) + .def("getImageTestMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getImageTestMode, + py::arg() = Positions{}) + .def("setImageTestMode", + (void (Detector::*)(const int, sls::Positions)) & + Detector::setImageTestMode, + py::arg(), py::arg() = Positions{}) + .def("getNumberOfBursts", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfBursts, + py::arg() = Positions{}) + .def("setNumberOfBursts", + (void (Detector::*)(int64_t)) & Detector::setNumberOfBursts, + py::arg()) + .def("getBurstPeriod", + (Result(Detector::*)(sls::Positions)) & + Detector::getBurstPeriod, + py::arg() = Positions{}) + .def("setBurstPeriod", + (void (Detector::*)(sls::ns, sls::Positions)) & + Detector::setBurstPeriod, + py::arg(), py::arg() = Positions{}) + .def("getInjectChannel", + (Result>(Detector::*)(sls::Positions)) & + Detector::getInjectChannel, + py::arg() = Positions{}) + .def("setInjectChannel", + (void (Detector::*)(const int, const int, sls::Positions)) & + Detector::setInjectChannel, py::arg(), py::arg(), py::arg() = Positions{}) - .def("setVetoReference", &Detector::setVetoReference, py::arg(), + .def( + "getVetoPhoton", + (Result>(Detector::*)(const int, sls::Positions)) & + Detector::getVetoPhoton, + py::arg(), py::arg() = Positions{}) + .def("setVetoPhoton", + (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{}) + .def("setVetoReference", + (void (Detector::*)(const int, const int, sls::Positions)) & + Detector::setVetoReference, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getBurstMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getBurstMode, + py::arg() = Positions{}) + .def("setBurstMode", + (void (Detector::*)(defs::burstMode, sls::Positions)) & + Detector::setBurstMode, py::arg(), py::arg() = Positions{}) - .def("getBurstMode", &Detector::getBurstMode, py::arg() = Positions{}) - .def("setBurstMode", &Detector::setBurstMode, py::arg(), + .def("getCurrentSource", + (Result(Detector::*)(sls::Positions)) & + Detector::getCurrentSource, py::arg() = Positions{}) - .def("getCurrentSource", &Detector::getCurrentSource, - py::arg() = Positions{}) - .def("setCurrentSource", &Detector::setCurrentSource, py::arg(), - py::arg() = Positions{}) - .def("getTimingSource", &Detector::getTimingSource, - py::arg() = Positions{}) - .def("setTimingSource", &Detector::setTimingSource, py::arg(), - py::arg() = Positions{}) - .def("getCounterMask", &Detector::getCounterMask, - py::arg() = Positions{}) - .def("setCounterMask", &Detector::setCounterMask, py::arg(), - py::arg() = Positions{}) - .def("getNumberOfAnalogSamples", &Detector::getNumberOfAnalogSamples, - py::arg() = Positions{}) - .def("setNumberOfAnalogSamples", &Detector::setNumberOfAnalogSamples, + .def("setCurrentSource", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setCurrentSource, py::arg(), py::arg() = Positions{}) - .def("getADCClock", &Detector::getADCClock, py::arg() = Positions{}) - .def("setADCClock", &Detector::setADCClock, py::arg(), + .def("getTimingSource", + (Result(Detector::*)(sls::Positions)) & + Detector::getTimingSource, py::arg() = Positions{}) - .def("getRUNClock", &Detector::getRUNClock, py::arg() = Positions{}) - .def("setRUNClock", &Detector::setRUNClock, py::arg(), - py::arg() = Positions{}) - .def("getSYNCClock", &Detector::getSYNCClock, py::arg() = Positions{}) - .def("getADCPipeline", &Detector::getADCPipeline, - py::arg() = Positions{}) - .def("setADCPipeline", &Detector::setADCPipeline, py::arg(), - py::arg() = Positions{}) - .def("getVoltage", &Detector::getVoltage, py::arg(), - py::arg() = Positions{}) - .def("setVoltage", &Detector::setVoltage, py::arg(), py::arg(), - py::arg() = Positions{}) - .def("getADCEnableMask", &Detector::getADCEnableMask, - py::arg() = Positions{}) - .def("setADCEnableMask", &Detector::setADCEnableMask, py::arg(), - py::arg() = Positions{}) - .def("getTenGigaADCEnableMask", &Detector::getTenGigaADCEnableMask, - py::arg() = Positions{}) - .def("setTenGigaADCEnableMask", &Detector::setTenGigaADCEnableMask, + .def("setTimingSource", + (void (Detector::*)(defs::timingSourceType, sls::Positions)) & + Detector::setTimingSource, py::arg(), py::arg() = Positions{}) - .def("getNumberOfDigitalSamples", &Detector::getNumberOfDigitalSamples, + .def("getCounterMask", + (Result(Detector::*)(sls::Positions)) & + Detector::getCounterMask, py::arg() = Positions{}) - .def("setNumberOfDigitalSamples", &Detector::setNumberOfDigitalSamples, + .def("setCounterMask", + (void (Detector::*)(uint32_t, sls::Positions)) & + Detector::setCounterMask, py::arg(), py::arg() = Positions{}) - .def("getReadoutMode", &Detector::getReadoutMode, + .def("getNumberOfAnalogSamples", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfAnalogSamples, py::arg() = Positions{}) - .def("setReadoutMode", &Detector::setReadoutMode, py::arg(), - py::arg() = Positions{}) - .def("getDBITClock", &Detector::getDBITClock, py::arg() = Positions{}) - .def("setDBITClock", &Detector::setDBITClock, py::arg(), - py::arg() = Positions{}) - .def("getDBITPipeline", &Detector::getDBITPipeline, - py::arg() = Positions{}) - .def("setDBITPipeline", &Detector::setDBITPipeline, py::arg(), - py::arg() = Positions{}) - .def("getMeasuredVoltage", &Detector::getMeasuredVoltage, py::arg(), - py::arg() = Positions{}) - .def("getMeasuredCurrent", &Detector::getMeasuredCurrent, py::arg(), - py::arg() = Positions{}) - .def("getSlowADC", &Detector::getSlowADC, py::arg(), - py::arg() = Positions{}) - .def("getExternalSamplingSource", &Detector::getExternalSamplingSource, - py::arg() = Positions{}) - .def("setExternalSamplingSource", &Detector::setExternalSamplingSource, + .def("setNumberOfAnalogSamples", + (void (Detector::*)(int, sls::Positions)) & + Detector::setNumberOfAnalogSamples, py::arg(), py::arg() = Positions{}) - .def("getExternalSampling", &Detector::getExternalSampling, + .def("getADCClock", + (Result(Detector::*)(sls::Positions)) & Detector::getADCClock, py::arg() = Positions{}) - .def("setExternalSampling", &Detector::setExternalSampling, py::arg(), - py::arg() = Positions{}) - .def("getRxDbitList", &Detector::getRxDbitList, py::arg() = Positions{}) - .def("setRxDbitList", &Detector::setRxDbitList, py::arg(), - py::arg() = Positions{}) - .def("getRxDbitOffset", &Detector::getRxDbitOffset, - py::arg() = Positions{}) - .def("setRxDbitOffset", &Detector::setRxDbitOffset, py::arg(), - py::arg() = Positions{}) - .def("setDigitalIODelay", &Detector::setDigitalIODelay, py::arg(), + .def("setADCClock", + (void (Detector::*)(int, sls::Positions)) & Detector::setADCClock, py::arg(), py::arg() = Positions{}) - .def("getLEDEnable", &Detector::getLEDEnable, py::arg() = Positions{}) - .def("setLEDEnable", &Detector::setLEDEnable, py::arg(), + .def("getRUNClock", + (Result(Detector::*)(sls::Positions)) & Detector::getRUNClock, py::arg() = Positions{}) - .def("setPattern", &Detector::setPattern, py::arg(), - py::arg() = Positions{}) - .def("savePattern", &Detector::savePattern, py::arg()) - .def("getPatternIOControl", &Detector::getPatternIOControl, - py::arg() = Positions{}) - .def("setPatternIOControl", &Detector::setPatternIOControl, py::arg(), - py::arg() = Positions{}) - .def("getPatternClockControl", &Detector::getPatternClockControl, - py::arg() = Positions{}) - .def("setPatternClockControl", &Detector::setPatternClockControl, + .def("setRUNClock", + (void (Detector::*)(int, sls::Positions)) & Detector::setRUNClock, py::arg(), py::arg() = Positions{}) - .def("getPatternWord", &Detector::getPatternWord, py::arg(), + .def("getSYNCClock", + (Result(Detector::*)(sls::Positions)) & + Detector::getSYNCClock, py::arg() = Positions{}) - .def("setPatternWord", &Detector::setPatternWord, py::arg(), py::arg(), + .def("getADCPipeline", + (Result(Detector::*)(sls::Positions)) & + Detector::getADCPipeline, py::arg() = Positions{}) - .def("getPatternLoopAddresses", &Detector::getPatternLoopAddresses, + .def("setADCPipeline", + (void (Detector::*)(int, sls::Positions)) & + Detector::setADCPipeline, py::arg(), py::arg() = Positions{}) - .def("setPatternLoopAddresses", &Detector::setPatternLoopAddresses, + .def("getVoltage", + (Result(Detector::*)(defs::dacIndex, sls::Positions)) & + Detector::getVoltage, + py::arg(), py::arg() = Positions{}) + .def("setVoltage", + (void (Detector::*)(defs::dacIndex, int, sls::Positions)) & + Detector::setVoltage, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getADCEnableMask", + (Result(Detector::*)(sls::Positions)) & + Detector::getADCEnableMask, + py::arg() = Positions{}) + .def("setADCEnableMask", + (void (Detector::*)(uint32_t, sls::Positions)) & + Detector::setADCEnableMask, + py::arg(), py::arg() = Positions{}) + .def("getTenGigaADCEnableMask", + (Result(Detector::*)(sls::Positions)) & + Detector::getTenGigaADCEnableMask, + py::arg() = Positions{}) + .def("setTenGigaADCEnableMask", + (void (Detector::*)(uint32_t, sls::Positions)) & + Detector::setTenGigaADCEnableMask, + py::arg(), py::arg() = Positions{}) + .def("getNumberOfDigitalSamples", + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfDigitalSamples, + py::arg() = Positions{}) + .def("setNumberOfDigitalSamples", + (void (Detector::*)(int, sls::Positions)) & + Detector::setNumberOfDigitalSamples, + py::arg(), py::arg() = Positions{}) + .def("getReadoutMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getReadoutMode, + py::arg() = Positions{}) + .def("setReadoutMode", + (void (Detector::*)(defs::readoutMode, sls::Positions)) & + Detector::setReadoutMode, + py::arg(), py::arg() = Positions{}) + .def("getDBITClock", + (Result(Detector::*)(sls::Positions)) & + Detector::getDBITClock, + py::arg() = Positions{}) + .def("setDBITClock", + (void (Detector::*)(int, sls::Positions)) & Detector::setDBITClock, + py::arg(), py::arg() = Positions{}) + .def("getDBITPipeline", + (Result(Detector::*)(sls::Positions)) & + Detector::getDBITPipeline, + py::arg() = Positions{}) + .def("setDBITPipeline", + (void (Detector::*)(int, sls::Positions)) & + Detector::setDBITPipeline, + py::arg(), py::arg() = Positions{}) + .def("getMeasuredVoltage", + (Result(Detector::*)(defs::dacIndex, sls::Positions)) & + Detector::getMeasuredVoltage, + py::arg(), py::arg() = Positions{}) + .def("getMeasuredCurrent", + (Result(Detector::*)(defs::dacIndex, sls::Positions)) & + Detector::getMeasuredCurrent, + py::arg(), py::arg() = Positions{}) + .def("getSlowADC", + (Result(Detector::*)(defs::dacIndex, sls::Positions)) & + Detector::getSlowADC, + py::arg(), py::arg() = Positions{}) + .def("getExternalSamplingSource", + (Result(Detector::*)(sls::Positions)) & + Detector::getExternalSamplingSource, + py::arg() = Positions{}) + .def("setExternalSamplingSource", + (void (Detector::*)(int, sls::Positions)) & + Detector::setExternalSamplingSource, + py::arg(), py::arg() = Positions{}) + .def("getExternalSampling", + (Result(Detector::*)(sls::Positions)) & + Detector::getExternalSampling, + py::arg() = Positions{}) + .def("setExternalSampling", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setExternalSampling, + py::arg(), py::arg() = Positions{}) + .def("getRxDbitList", + (Result>(Detector::*)(sls::Positions)) & + Detector::getRxDbitList, + py::arg() = Positions{}) + .def("setRxDbitList", + (void (Detector::*)(const std::vector &, sls::Positions)) & + Detector::setRxDbitList, + py::arg(), py::arg() = Positions{}) + .def("getRxDbitOffset", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxDbitOffset, + py::arg() = Positions{}) + .def("setRxDbitOffset", + (void (Detector::*)(int, sls::Positions)) & + Detector::setRxDbitOffset, + py::arg(), py::arg() = Positions{}) + .def("setDigitalIODelay", + (void (Detector::*)(uint64_t, int, sls::Positions)) & + Detector::setDigitalIODelay, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getLEDEnable", + (Result(Detector::*)(sls::Positions)) & + Detector::getLEDEnable, + py::arg() = Positions{}) + .def("setLEDEnable", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setLEDEnable, + py::arg(), py::arg() = Positions{}) + .def("setPattern", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::setPattern, + py::arg(), py::arg() = Positions{}) + .def("savePattern", + (void (Detector::*)(const std::string &)) & Detector::savePattern, + py::arg()) + .def("getPatternIOControl", + (Result(Detector::*)(sls::Positions)) & + Detector::getPatternIOControl, + py::arg() = Positions{}) + .def("setPatternIOControl", + (void (Detector::*)(uint64_t, sls::Positions)) & + Detector::setPatternIOControl, + py::arg(), py::arg() = Positions{}) + .def("getPatternClockControl", + (Result(Detector::*)(sls::Positions)) & + Detector::getPatternClockControl, + py::arg() = Positions{}) + .def("setPatternClockControl", + (void (Detector::*)(uint64_t, sls::Positions)) & + Detector::setPatternClockControl, + py::arg(), py::arg() = Positions{}) + .def("getPatternWord", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getPatternWord, + py::arg(), py::arg() = Positions{}) + .def("setPatternWord", + (void (Detector::*)(int, uint64_t, sls::Positions)) & + Detector::setPatternWord, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getPatternLoopAddresses", + (Result>(Detector::*)(int, sls::Positions)) & + Detector::getPatternLoopAddresses, + py::arg(), py::arg() = Positions{}) + .def("setPatternLoopAddresses", + (void (Detector::*)(int, int, int, sls::Positions)) & + Detector::setPatternLoopAddresses, py::arg(), py::arg(), py::arg(), py::arg() = Positions{}) - .def("getPatternLoopCycles", &Detector::getPatternLoopCycles, py::arg(), - py::arg() = Positions{}) - .def("setPatternLoopCycles", &Detector::setPatternLoopCycles, py::arg(), + .def("getPatternLoopCycles", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getPatternLoopCycles, py::arg(), py::arg() = Positions{}) - .def("getPatternWaitAddr", &Detector::getPatternWaitAddr, py::arg(), - py::arg() = Positions{}) - .def("setPatternWaitAddr", &Detector::setPatternWaitAddr, py::arg(), + .def("setPatternLoopCycles", + (void (Detector::*)(int, int, sls::Positions)) & + Detector::setPatternLoopCycles, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getPatternWaitAddr", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getPatternWaitAddr, py::arg(), py::arg() = Positions{}) - .def("getPatternWaitTime", &Detector::getPatternWaitTime, py::arg(), - py::arg() = Positions{}) - .def("setPatternWaitTime", &Detector::setPatternWaitTime, py::arg(), + .def("setPatternWaitAddr", + (void (Detector::*)(int, int, sls::Positions)) & + Detector::setPatternWaitAddr, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getPatternWaitTime", + (Result(Detector::*)(int, sls::Positions)) & + Detector::getPatternWaitTime, py::arg(), py::arg() = Positions{}) - .def("getPatternMask", &Detector::getPatternMask, + .def("setPatternWaitTime", + (void (Detector::*)(int, uint64_t, sls::Positions)) & + Detector::setPatternWaitTime, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getPatternMask", + (Result(Detector::*)(sls::Positions)) & + Detector::getPatternMask, py::arg() = Positions{}) - .def("setPatternMask", &Detector::setPatternMask, py::arg(), + .def("setPatternMask", + (void (Detector::*)(uint64_t, sls::Positions)) & + Detector::setPatternMask, + py::arg(), py::arg() = Positions{}) + .def("getPatternBitMask", + (Result(Detector::*)(sls::Positions)) & + Detector::getPatternBitMask, py::arg() = Positions{}) - .def("getPatternBitMask", &Detector::getPatternBitMask, + .def("setPatternBitMask", + (void (Detector::*)(uint64_t, sls::Positions)) & + Detector::setPatternBitMask, + py::arg(), py::arg() = Positions{}) + .def("getAdditionalJsonHeader", + (Result(Detector::*)(sls::Positions)) & + Detector::getAdditionalJsonHeader, py::arg() = Positions{}) - .def("setPatternBitMask", &Detector::setPatternBitMask, py::arg(), - py::arg() = Positions{}) - .def("getAdditionalJsonHeader", &Detector::getAdditionalJsonHeader, - py::arg() = Positions{}) - .def("setAdditionalJsonHeader", &Detector::setAdditionalJsonHeader, + .def("setAdditionalJsonHeader", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::setAdditionalJsonHeader, py::arg(), py::arg() = Positions{}) .def("getAdditionalJsonParameter", - &Detector::getAdditionalJsonParameter, py::arg(), - py::arg() = Positions{}) + (Result(Detector::*)(const std::string &, + sls::Positions)) & + Detector::getAdditionalJsonParameter, + py::arg(), py::arg() = Positions{}) .def("setAdditionalJsonParameter", - &Detector::setAdditionalJsonParameter, py::arg(), py::arg(), - py::arg() = Positions{}) + (void (Detector::*)(const std::string &, const std::string &, + sls::Positions)) & + Detector::setAdditionalJsonParameter, + py::arg(), py::arg(), py::arg() = Positions{}) .def("getDetectorMinMaxEnergyThreshold", - &Detector::getDetectorMinMaxEnergyThreshold, py::arg(), - py::arg() = Positions{}) + (Result(Detector::*)(const bool, sls::Positions)) & + Detector::getDetectorMinMaxEnergyThreshold, + py::arg(), py::arg() = Positions{}) .def("setDetectorMinMaxEnergyThreshold", - &Detector::setDetectorMinMaxEnergyThreshold, py::arg(), py::arg(), + (void (Detector::*)(const bool, const int, sls::Positions)) & + Detector::setDetectorMinMaxEnergyThreshold, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getFrameMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getFrameMode, py::arg() = Positions{}) - .def("getFrameMode", &Detector::getFrameMode, py::arg() = Positions{}) - .def("setFrameMode", &Detector::setFrameMode, py::arg(), - py::arg() = Positions{}) - .def("getDetectorMode", &Detector::getDetectorMode, - py::arg() = Positions{}) - .def("setDetectorMode", &Detector::setDetectorMode, py::arg(), - py::arg() = Positions{}) - .def("programFPGA", &Detector::programFPGA, py::arg(), - py::arg() = Positions{}) - .def("resetFPGA", &Detector::resetFPGA, py::arg() = Positions{}) - .def("copyDetectorServer", &Detector::copyDetectorServer, py::arg(), + .def("setFrameMode", + (void (Detector::*)(defs::frameModeType, sls::Positions)) & + Detector::setFrameMode, py::arg(), py::arg() = Positions{}) - .def("rebootController", &Detector::rebootController, + .def("getDetectorMode", + (Result(Detector::*)(sls::Positions)) & + Detector::getDetectorMode, py::arg() = Positions{}) - .def("updateFirmwareAndServer", &Detector::updateFirmwareAndServer, + .def("setDetectorMode", + (void (Detector::*)(defs::detectorModeType, sls::Positions)) & + Detector::setDetectorMode, + py::arg(), py::arg() = Positions{}) + .def("programFPGA", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::programFPGA, + py::arg(), py::arg() = Positions{}) + .def("resetFPGA", + (void (Detector::*)(sls::Positions)) & Detector::resetFPGA, + py::arg() = Positions{}) + .def("copyDetectorServer", + (void (Detector::*)(const std::string &, const std::string &, + sls::Positions)) & + Detector::copyDetectorServer, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("rebootController", + (void (Detector::*)(sls::Positions)) & Detector::rebootController, + py::arg() = Positions{}) + .def("updateFirmwareAndServer", + (void (Detector::*)(const std::string &, const std::string &, + const std::string &, sls::Positions)) & + Detector::updateFirmwareAndServer, py::arg(), py::arg(), py::arg(), py::arg() = Positions{}) - .def("readRegister", &Detector::readRegister, py::arg(), - py::arg() = Positions{}) - .def("writeRegister", &Detector::writeRegister, py::arg(), py::arg(), - py::arg() = Positions{}) - .def("setBit", &Detector::setBit, py::arg(), py::arg(), - py::arg() = Positions{}) - .def("clearBit", &Detector::clearBit, py::arg(), py::arg(), - py::arg() = Positions{}) - .def("executeFirmwareTest", &Detector::executeFirmwareTest, - py::arg() = Positions{}) - .def("executeBusTest", &Detector::executeBusTest, - py::arg() = Positions{}) - .def("writeAdcRegister", &Detector::writeAdcRegister, py::arg(), + .def("readRegister", + (Result(Detector::*)(uint32_t, sls::Positions)) & + Detector::readRegister, py::arg(), py::arg() = Positions{}) - .def("getInitialChecks", &Detector::getInitialChecks) - .def("setInitialChecks", &Detector::setInitialChecks, py::arg()) - .def("getADCInvert", &Detector::getADCInvert, py::arg() = Positions{}) - .def("setADCInvert", &Detector::setADCInvert, py::arg(), + .def("writeRegister", + (void (Detector::*)(uint32_t, uint32_t, sls::Positions)) & + Detector::writeRegister, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("setBit", + (void (Detector::*)(uint32_t, int, sls::Positions)) & + Detector::setBit, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("clearBit", + (void (Detector::*)(uint32_t, int, sls::Positions)) & + Detector::clearBit, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("executeFirmwareTest", + (void (Detector::*)(sls::Positions)) & + Detector::executeFirmwareTest, py::arg() = Positions{}) - .def("getControlPort", &Detector::getControlPort, + .def("executeBusTest", + (void (Detector::*)(sls::Positions)) & Detector::executeBusTest, py::arg() = Positions{}) - .def("setControlPort", &Detector::setControlPort, py::arg(), + .def("writeAdcRegister", + (void (Detector::*)(uint32_t, uint32_t, sls::Positions)) & + Detector::writeAdcRegister, + py::arg(), py::arg(), py::arg() = Positions{}) + .def("getInitialChecks", + (bool (Detector::*)()) & Detector::getInitialChecks) + .def("setInitialChecks", + (void (Detector::*)(const bool)) & Detector::setInitialChecks, + py::arg()) + .def("getADCInvert", + (Result(Detector::*)(sls::Positions)) & + Detector::getADCInvert, py::arg() = Positions{}) - .def("getStopPort", &Detector::getStopPort, py::arg() = Positions{}) - .def("setStopPort", &Detector::setStopPort, py::arg(), + .def("setADCInvert", + (void (Detector::*)(uint32_t, sls::Positions)) & + Detector::setADCInvert, + py::arg(), py::arg() = Positions{}) + .def("getControlPort", + (Result(Detector::*)(sls::Positions)) & + Detector::getControlPort, py::arg() = Positions{}) - .def("getDetectorLock", &Detector::getDetectorLock, + .def("setControlPort", + (void (Detector::*)(int, sls::Positions)) & + Detector::setControlPort, + py::arg(), py::arg() = Positions{}) + .def("getStopPort", + (Result(Detector::*)(sls::Positions)) & Detector::getStopPort, py::arg() = Positions{}) - .def("setDetectorLock", &Detector::setDetectorLock, py::arg(), + .def("setStopPort", + (void (Detector::*)(int, sls::Positions)) & Detector::setStopPort, + py::arg(), py::arg() = Positions{}) + .def("getDetectorLock", + (Result(Detector::*)(sls::Positions)) & + Detector::getDetectorLock, py::arg() = Positions{}) - .def("getLastClientIP", &Detector::getLastClientIP, - py::arg() = Positions{}) - .def("executeCommand", &Detector::executeCommand, py::arg(), + .def("setDetectorLock", + (void (Detector::*)(bool, sls::Positions)) & + Detector::setDetectorLock, + py::arg(), py::arg() = Positions{}) + .def("getLastClientIP", + (Result(Detector::*)(sls::Positions)) & + Detector::getLastClientIP, py::arg() = Positions{}) + .def("executeCommand", + (void (Detector::*)(const std::string &, sls::Positions)) & + Detector::executeCommand, + py::arg(), py::arg() = Positions{}) .def("getNumberOfFramesFromStart", - &Detector::getNumberOfFramesFromStart, py::arg() = Positions{}) - .def("getActualTime", &Detector::getActualTime, py::arg() = Positions{}) - .def("getMeasurementTime", &Detector::getMeasurementTime, + (Result(Detector::*)(sls::Positions)) & + Detector::getNumberOfFramesFromStart, py::arg() = Positions{}) - .def("getUserDetails", &Detector::getUserDetails) - .def("getRxCurrentFrameIndex", &Detector::getRxCurrentFrameIndex, + .def("getActualTime", + (Result(Detector::*)(sls::Positions)) & + Detector::getActualTime, + py::arg() = Positions{}) + .def("getMeasurementTime", + (Result(Detector::*)(sls::Positions)) & + Detector::getMeasurementTime, + py::arg() = Positions{}) + .def("getUserDetails", + (std::string(Detector::*)()) & Detector::getUserDetails) + .def("getRxCurrentFrameIndex", + (Result(Detector::*)(sls::Positions)) & + Detector::getRxCurrentFrameIndex, py::arg() = Positions{}); } diff --git a/python/src/detector_in.cpp b/python/src/detector_in.cpp index 38ec13a1b..b4f0c3793 100644 --- a/python/src/detector_in.cpp +++ b/python/src/detector_in.cpp @@ -12,6 +12,8 @@ namespace py = pybind11; void init_det(py::module &m) { using sls::Detector; using sls::Positions; + using sls::Result; + using sls::defs; py::class_ CppDetectorApi(m, "CppDetectorApi"); CppDetectorApi