diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 2cf1b3f6f..9336d8b33 100755 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -164,6 +164,17 @@ void Module::sendToDetector(int fnum) { sendToDetector(fnum, nullptr, 0, nullptr, 0); } +template +Ret Module::sendToDetector(int fnum){ + LOG(logDEBUG1) << "Sending: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; + Ret retval{}; + sendToDetector(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << retval; + return retval; +} + void Module::sendToDetectorStop(int fnum, const void *args, size_t args_size, void *retval, size_t retval_size) { @@ -1277,10 +1288,7 @@ void Module::setNumberOfDigitalSamples(int value) { } int64_t Module::getExptime() { - int64_t retval = -1; - sendToDetector(F_GET_EXPTIME, nullptr, retval); - LOG(logDEBUG1) << "exptime :" << retval << "ns"; - return retval; + return sendToDetector(F_GET_EXPTIME); } void Module::setExptime(int64_t value) { @@ -1303,10 +1311,7 @@ void Module::setExptime(int64_t value) { } int64_t Module::getPeriod() { - int64_t retval = -1; - sendToDetector(F_GET_PERIOD, nullptr, retval); - LOG(logDEBUG1) << "period :" << retval << "ns"; - return retval; + return sendToDetector(F_GET_PERIOD); } void Module::setPeriod(int64_t value) { @@ -1319,10 +1324,7 @@ void Module::setPeriod(int64_t value) { } int64_t Module::getDelayAfterTrigger() { - int64_t retval = -1; - sendToDetector(F_GET_DELAY_AFTER_TRIGGER, nullptr, retval); - LOG(logDEBUG1) << "delay after trigger :" << retval << "ns"; - return retval; + return sendToDetector(F_GET_DELAY_AFTER_TRIGGER); } void Module::setDelayAfterTrigger(int64_t value) { @@ -1331,10 +1333,7 @@ void Module::setDelayAfterTrigger(int64_t value) { } int64_t Module::getBurstPeriod() { - int64_t retval = -1; - sendToDetector(F_GET_BURST_PERIOD, nullptr, retval); - LOG(logDEBUG1) << "burst period :" << retval << "ns"; - return retval; + return sendToDetector(F_GET_BURST_PERIOD); } void Module::setBurstPeriod(int64_t value) { @@ -1343,10 +1342,7 @@ void Module::setBurstPeriod(int64_t value) { } int64_t Module::getSubExptime() { - int64_t retval = -1; - sendToDetector(F_GET_SUB_EXPTIME, nullptr, retval); - LOG(logDEBUG1) << "sub exptime :" << retval << "ns"; - return retval; + return sendToDetector(F_GET_SUB_EXPTIME); } void Module::setSubExptime(int64_t value) { @@ -1369,10 +1365,7 @@ void Module::setSubExptime(int64_t value) { } int64_t Module::getSubDeadTime() { - int64_t retval = -1; - sendToDetector(F_GET_SUB_DEADTIME, nullptr, retval); - LOG(logDEBUG1) << "sub deadtime :" << retval << "ns"; - return retval; + return sendToDetector(F_GET_SUB_DEADTIME); } void Module::setSubDeadTime(int64_t value) { diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index cde79c4d1..f304bee98 100755 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -1915,6 +1915,9 @@ class Module : public virtual slsDetectorDefs { void sendToDetector(int fnum, std::nullptr_t, Ret &retval); void sendToDetector(int fnum); + template + Ret sendToDetector(int fnum); + /** * Send function parameters to detector (stop server) * @param fnum function enum