diff --git a/python/src/experimental.cpp b/python/src/experimental.cpp index b8d31a9b2..b8ae33d4f 100644 --- a/python/src/experimental.cpp +++ b/python/src/experimental.cpp @@ -45,9 +45,9 @@ void init_experimental(py::module &m) { // File .def("getFileName", &Detector::getFileName) - .def("setFileName", &Detector::setFileName, py::arg()) + .def("setFileName", &Detector::setFileName, py::arg(),py::arg() = Positions{}) .def("getFilePath", &Detector::getFilePath) - .def("setFilePath", &Detector::setFilePath, py::arg()) + .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{}) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 55461e656..994761cb1 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -208,6 +208,30 @@ class Detector { * @returns detector type as string */ Result getDetectorTypeAsString(Positions pos = {}) const; + + + // Erik + + /** + * Set LED Enable for CTB + * @param enable true to switch on, false to switch off + */ + void setLEDEnable(bool enable, Positions pos = {}); + + + /** + * Get LED enable for CTB + */ + Result getLEDEnable(Positions pos = {}) const; + + + /** + * Set Digital IO Delay CTB + * @param digital IO mask to select the pins + * @param delay delay in ps(1 bit=25ps, max of 775 ps) + */ + void setDigitalIODelay(uint64_t pinMask, int delay, Positions pos = {}); + }; } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/include/Result.h b/slsDetectorSoftware/include/Result.h index ea9b810d8..33ce0c04a 100644 --- a/slsDetectorSoftware/include/Result.h +++ b/slsDetectorSoftware/include/Result.h @@ -31,32 +31,33 @@ template > class Result { Result() = default; Result(std::initializer_list list) : vec(list){}; - - /** Custom constructor from integer type to Result */ + /** Custom constructor from integer type to Result or Result */ template ::value && - std::is_same::value>::type> + (std::is_same::value || + std::is_same::value)>::type> Result(const std::vector &from) { - vec.reserve(from.size()); for (const auto &item : from) vec.push_back(T(item)); } - /** Custom constructor from integer type to Result */ + /** Custom constructor from integer type to Result or Result */ template ::value && - std::is_same::value>::type> + (std::is_same::value || + std::is_same::value)>::type> Result(std::vector &from) { vec.reserve(from.size()); for (const auto &item : from) vec.push_back(T(item)); } - /** Custom constructor from integer type to Result */ + /** Custom constructor from integer type to Result or Result */ template ::value && - std::is_same::value>::type> + (std::is_same::value || + std::is_same::value)>::type> Result(std::vector &&from) { vec.reserve(from.size()); for (const auto &item : from) diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 2d7b2210f..a014375e5 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -117,9 +117,7 @@ Result Detector::getFileOverWrite(Positions pos) const { } // dhanya -int Detector::getMultiId() const { - return pimpl->getMultiId(); -} +int Detector::getMultiId() const { return pimpl->getMultiId(); } void Detector::checkDetectorVersionCompatibility(Positions pos) const { pimpl->Parallel(&slsDetector::checkDetectorVersionCompatibility, pos); @@ -130,43 +128,59 @@ void Detector::checkReceiverVersionCompatibility(Positions pos) const { } Result Detector::getDetectorFirmwareVersion(Positions pos) const { - return pimpl->Parallel(&slsDetector::getId, pos, defs::DETECTOR_FIRMWARE_VERSION); + return pimpl->Parallel(&slsDetector::getId, pos, + defs::DETECTOR_FIRMWARE_VERSION); } Result Detector::getDetectorServerVersion(Positions pos) const { - return pimpl->Parallel(&slsDetector::getId, pos, defs::DETECTOR_SOFTWARE_VERSION); + return pimpl->Parallel(&slsDetector::getId, pos, + defs::DETECTOR_SOFTWARE_VERSION); } Result Detector::getDetectorSerialNumber(Positions pos) const { - return pimpl->Parallel(&slsDetector::getId, pos, defs::DETECTOR_SERIAL_NUMBER); + return pimpl->Parallel(&slsDetector::getId, pos, + defs::DETECTOR_SERIAL_NUMBER); } -Result Detector::getClientSoftwareVersion() const { - return pimpl->getClientSoftwareVersion(); +Result Detector::getClientSoftwareVersion() const { + return pimpl->getClientSoftwareVersion(); } Result Detector::getReceiverSoftwareVersion(Positions pos) const { return pimpl->Parallel(&slsDetector::getReceiverSoftwareVersion, pos); } -std::string Detector::getUserDetails() const { - return pimpl->getUserDetails(); -} +std::string Detector::getUserDetails() const { return pimpl->getUserDetails(); } -void Detector::setHostname(const std::vector &name) { +void Detector::setHostname(const std::vector &name) { pimpl->setHostname(name); } defs::detectorType Detector::getDetectorTypeAsEnum() const { - return pimpl->getDetectorTypeAsEnum(); + return pimpl->getDetectorTypeAsEnum(); } -Result Detector::getDetectorTypeAsEnum(Positions pos) const { - return pimpl->Parallel(&slsDetector::getDetectorTypeAsEnum, pos); +Result +Detector::getDetectorTypeAsEnum(Positions pos) const { + return pimpl->Parallel(&slsDetector::getDetectorTypeAsEnum, pos); } Result Detector::getDetectorTypeAsString(Positions pos) const { - return pimpl->Parallel(&slsDetector::getDetectorTypeAsString, pos); + return pimpl->Parallel(&slsDetector::getDetectorTypeAsString, pos); +} + +// Erik + +void Detector::setLEDEnable(bool enable, Positions pos) { + pimpl->Parallel(&slsDetector::setLEDEnable, pos, static_cast(enable)); +} + +Result Detector::getLEDEnable(Positions pos) const { + return pimpl->Parallel(&slsDetector::setLEDEnable, pos, -1); +} + +void Detector::setDigitalIODelay(uint64_t pinMask, int delay, Positions pos){ + pimpl->Parallel(&slsDetector::setDigitalIODelay, pos, pinMask, delay); } } // namespace sls \ No newline at end of file