#include #include #include #include #include "Detector.h" #include "sls_detector_defs.h" #include "typecaster.h" namespace py = pybind11; void init_experimental(py::module &m) { // Experimental API to use the multi directly and inherit from to reduce // code duplication need to investigate how to handle documentation using sls::Detector; using sls::Positions; py::class_ multiDetectorApi(m, "multiDetectorApi"); multiDetectorApi .def(py::init()) // Acq related .def("acquire", &Detector::acquire) .def("clearAcquiringFlag", &Detector::clearAcquiringFlag) .def("getReceiverStatus", &Detector::getReceiverStatus, py::arg() = Positions{}) // Configuration .def("free", &Detector::freeSharedMemory) .def("loadConfig", &Detector::loadConfig) .def("getHostname", &Detector::getHostname, py::arg() = Positions{}) // Bits and registers .def("setBit", &Detector::setBit, py::arg(), py::arg(), py::arg() = Positions{}) .def("clearBit", &Detector::clearBit, py::arg(), py::arg(), py::arg() = Positions{}) .def("readRegister", &Detector::readRegister, py::arg(), py::arg() = Positions{}) .def("getStartingFrameNumber", &Detector::getStartingFrameNumber, py::arg() = Positions{}) .def("setStartingFrameNumber", &Detector::setStartingFrameNumber, py::arg(), py::arg() = Positions{}) // File .def("getFileNamePrefix", &Detector::getFileNamePrefix) .def("setFileNamePrefix", &Detector::setFileNamePrefix, py::arg(),py::arg() = Positions{}) .def("getFilePath", &Detector::getFilePath) .def("setFilePath", &Detector::setFilePath, py::arg(),py::arg() = Positions{}) .def("setFileWrite", &Detector::setFileWrite, py::arg(), py::arg() = Positions{}) .def("getFileWrite", &Detector::getFileWrite, py::arg() = Positions{}) .def("setFileOverWrite", &Detector::setFileOverWrite, py::arg(), py::arg() = Positions{}) .def("getFileOverWrite", &Detector::getFileOverWrite, py::arg() = Positions{}) // Time .def("setExptime", &Detector::setExptime, py::arg(), py::arg() = Positions{}) .def("getExptime", &Detector::getExptime, py::arg() = Positions{}) .def("setPeriod", &Detector::setPeriod, py::arg(), py::arg() = Positions{}) .def("getPeriod", &Detector::getPeriod, py::arg() = Positions{}) .def("setSubExptime", &Detector::setSubExptime, py::arg(), py::arg() = Positions{}) .def("getSubExptime", &Detector::getSubExptime, py::arg() = Positions{}); }