replacing slsDetectorMember calls with generic function

This commit is contained in:
Erik Frojdh 2018-05-25 11:38:59 +02:00
parent 2f8c1b453e
commit 7702865409
2 changed files with 23 additions and 48 deletions

View File

@ -3423,6 +3423,24 @@ int multiSlsDetector::exitServer()
return ival;
}
int multiSlsDetector::callDetectorMemeber(int (slsDetector::*somefunc)(int), int value){
int ret = -100, ret1;
for (int idet = 0; idet < thisMultiDetector->numberOfDetectors; ++idet)
if (detectors[idet]) {
// ret1 = detectors[idet]->setReceiverSilentMode(i);
ret1 = (detectors[idet]->*somefunc)(value);
if (detectors[idet]->getErrorMask())
setErrorMask(getErrorMask() | (1 << idet));
if (ret == -100)
ret = ret1;
else if (ret != ret1)
ret = -1;
}
return ret;
}
string multiSlsDetector::callDetectorMemeber(string (slsDetector::*somefunc)())
{
string concatenatedValue, firstValue;
@ -6252,66 +6270,22 @@ int multiSlsDetector::enableDataStreamingFromReceiver(int enable)
int multiSlsDetector::enableReceiverCompression(int i)
{
int ret = -100, ret1;
for (int idet = 0; idet < thisMultiDetector->numberOfDetectors; ++idet)
if (detectors[idet]) {
ret1 = detectors[idet]->enableReceiverCompression(i);
if (detectors[idet]->getErrorMask())
setErrorMask(getErrorMask() | (1 << idet));
if (ret == -100)
ret = ret1;
else if (ret != ret1)
ret = -1;
}
return ret;
return callDetectorMemeber(&slsDetector::enableReceiverCompression, i);
}
int multiSlsDetector::enableTenGigabitEthernet(int i)
{
int ret = -100, ret1;
for (int idet = 0; idet < thisMultiDetector->numberOfDetectors; ++idet)
if (detectors[idet]) {
ret1 = detectors[idet]->enableTenGigabitEthernet(i);
if (detectors[idet]->getErrorMask())
setErrorMask(getErrorMask() | (1 << idet));
if (ret == -100)
ret = ret1;
else if (ret != ret1)
ret = -1;
}
return ret;
return callDetectorMemeber(&slsDetector::enableTenGigabitEthernet, i);
}
int multiSlsDetector::setReceiverFifoDepth(int i)
{
int ret = -100, ret1;
for (int idet = 0; idet < thisMultiDetector->numberOfDetectors; ++idet)
if (detectors[idet]) {
ret1 = detectors[idet]->setReceiverFifoDepth(i);
if (detectors[idet]->getErrorMask())
setErrorMask(getErrorMask() | (1 << idet));
if (ret == -100)
ret = ret1;
else if (ret != ret1)
ret = -1;
}
return ret;
return callDetectorMemeber(&slsDetector::setReceiverFifoDepth, i);
}
int multiSlsDetector::setReceiverSilentMode(int i)
{
int ret = -100, ret1;
for (int idet = 0; idet < thisMultiDetector->numberOfDetectors; ++idet)
if (detectors[idet]) {
ret1 = detectors[idet]->setReceiverSilentMode(i);
if (detectors[idet]->getErrorMask())
setErrorMask(getErrorMask() | (1 << idet));
if (ret == -100)
ret = ret1;
else if (ret != ret1)
ret = -1;
}
return ret;
return callDetectorMemeber(&slsDetector::setReceiverSilentMode, i);
}
/** opens pattern file and sends pattern to CTB

View File

@ -1045,6 +1045,7 @@ class multiSlsDetector : public slsDetectorUtils {
std::string callDetectorMemeber(std::string(slsDetector::*somefunc)());
int callDetectorMemeber(int (slsDetector::*somefunc)(int), int value);
/** returns the detector trimbit/settings directory \sa sharedSlsDetector */
std::string getSettingsDir();