mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
moved setDetectorSpecific parameters to constructor of detectorParameters
This commit is contained in:
parent
dd6bb85230
commit
c7169f3c36
@ -23,14 +23,73 @@ class MySocketTCP;
|
|||||||
* parameter list that has to be initialized depending on the detector type
|
* parameter list that has to be initialized depending on the detector type
|
||||||
*/
|
*/
|
||||||
struct detParameters {
|
struct detParameters {
|
||||||
int nChanX;
|
int nChanX{0};
|
||||||
int nChanY;
|
int nChanY{0};
|
||||||
int nChipX;
|
int nChipX{0};
|
||||||
int nChipY;
|
int nChipY{0};
|
||||||
int nDacs;
|
int nDacs{0};
|
||||||
int dynamicRange;
|
int dynamicRange{0};
|
||||||
int nGappixelsX;
|
int nGappixelsX{0};
|
||||||
int nGappixelsY;
|
int nGappixelsY{0};
|
||||||
|
|
||||||
|
detParameters(){}
|
||||||
|
detParameters(slsDetectorDefs::detectorType type){
|
||||||
|
switch (type) {
|
||||||
|
case slsDetectorDefs::detectorType::GOTTHARD:
|
||||||
|
nChanX = 128;
|
||||||
|
nChanY = 1;
|
||||||
|
nChipX = 10;
|
||||||
|
nChipY = 1;
|
||||||
|
nDacs = 8;
|
||||||
|
dynamicRange = 16;
|
||||||
|
nGappixelsX = 0;
|
||||||
|
nGappixelsY = 0;
|
||||||
|
break;
|
||||||
|
case slsDetectorDefs::detectorType::JUNGFRAU:
|
||||||
|
nChanX = 256;
|
||||||
|
nChanY = 256;
|
||||||
|
nChipX = 4;
|
||||||
|
nChipY = 2;
|
||||||
|
nDacs = 8;
|
||||||
|
dynamicRange = 16;
|
||||||
|
nGappixelsX = 0;
|
||||||
|
nGappixelsY = 0;
|
||||||
|
break;
|
||||||
|
case slsDetectorDefs::detectorType::CHIPTESTBOARD:
|
||||||
|
nChanX = 36;
|
||||||
|
nChanY = 1;
|
||||||
|
nChipX = 1;
|
||||||
|
nChipY = 1;
|
||||||
|
nDacs = 24;
|
||||||
|
dynamicRange = 16;
|
||||||
|
nGappixelsX = 0;
|
||||||
|
nGappixelsY = 0;
|
||||||
|
break;
|
||||||
|
case slsDetectorDefs::detectorType::MOENCH:
|
||||||
|
nChanX = 32;
|
||||||
|
nChanY = 1;
|
||||||
|
nChipX = 1;
|
||||||
|
nChipY = 1;
|
||||||
|
nDacs = 8;
|
||||||
|
dynamicRange = 16;
|
||||||
|
nGappixelsX = 0;
|
||||||
|
nGappixelsY = 0;
|
||||||
|
break;
|
||||||
|
case slsDetectorDefs::detectorType::EIGER:
|
||||||
|
nChanX = 256;
|
||||||
|
nChanY = 256;
|
||||||
|
nChipX = 4;
|
||||||
|
nChipY = 1;
|
||||||
|
nDacs = 16;
|
||||||
|
dynamicRange = 16;
|
||||||
|
nGappixelsX = 6;
|
||||||
|
nGappixelsY = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw sls::RuntimeError("Unknown detector type! " +
|
||||||
|
slsDetectorDefs::detectorTypeToString(type));
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1747,13 +1806,6 @@ class slsDetector : public virtual slsDetectorDefs{
|
|||||||
*/
|
*/
|
||||||
void initSharedMemory(detectorType type, int multi_id, bool verify = true);
|
void initSharedMemory(detectorType type, int multi_id, bool verify = true);
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets detector parameters depending detector type
|
|
||||||
* @param type detector type
|
|
||||||
* @param list structure of parameters to initialize depending on detector type
|
|
||||||
*/
|
|
||||||
void setDetectorSpecificParameters(detectorType type, detParameters &list);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize detector structure to defaults
|
* Initialize detector structure to defaults
|
||||||
* Called when new shared memory is created
|
* Called when new shared memory is created
|
||||||
|
@ -98,7 +98,7 @@ int slsDetector::checkDetectorVersionCompatibility() {
|
|||||||
|
|
||||||
auto client = DetectorSocket(detector_shm()->hostname,
|
auto client = DetectorSocket(detector_shm()->hostname,
|
||||||
detector_shm()->controlPort);
|
detector_shm()->controlPort);
|
||||||
ret = client.sendCommandThenRead(fnum, &arg, sizeof(arg), nullptr, 0);
|
client.sendCommandThenRead(fnum, &arg, sizeof(arg), nullptr, 0);
|
||||||
|
|
||||||
auto stop =
|
auto stop =
|
||||||
DetectorSocket(detector_shm()->hostname, detector_shm()->stopPort);
|
DetectorSocket(detector_shm()->hostname, detector_shm()->stopPort);
|
||||||
@ -225,64 +225,6 @@ void slsDetector::initSharedMemory(detectorType type, int multi_id,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void slsDetector::setDetectorSpecificParameters(detectorType type,
|
|
||||||
detParameters &list) {
|
|
||||||
switch (type) {
|
|
||||||
case GOTTHARD:
|
|
||||||
list.nChanX = 128;
|
|
||||||
list.nChanY = 1;
|
|
||||||
list.nChipX = 10;
|
|
||||||
list.nChipY = 1;
|
|
||||||
list.nDacs = 8;
|
|
||||||
list.dynamicRange = 16;
|
|
||||||
list.nGappixelsX = 0;
|
|
||||||
list.nGappixelsY = 0;
|
|
||||||
break;
|
|
||||||
case JUNGFRAU:
|
|
||||||
list.nChanX = 256;
|
|
||||||
list.nChanY = 256;
|
|
||||||
list.nChipX = 4;
|
|
||||||
list.nChipY = 2;
|
|
||||||
list.nDacs = 8;
|
|
||||||
list.dynamicRange = 16;
|
|
||||||
list.nGappixelsX = 0;
|
|
||||||
list.nGappixelsY = 0;
|
|
||||||
break;
|
|
||||||
case CHIPTESTBOARD:
|
|
||||||
list.nChanX = 36;
|
|
||||||
list.nChanY = 1;
|
|
||||||
list.nChipX = 1;
|
|
||||||
list.nChipY = 1;
|
|
||||||
list.nDacs = 24;
|
|
||||||
list.dynamicRange = 16;
|
|
||||||
list.nGappixelsX = 0;
|
|
||||||
list.nGappixelsY = 0;
|
|
||||||
break;
|
|
||||||
case MOENCH:
|
|
||||||
list.nChanX = 32;
|
|
||||||
list.nChanY = 1;
|
|
||||||
list.nChipX = 1;
|
|
||||||
list.nChipY = 1;
|
|
||||||
list.nDacs = 8;
|
|
||||||
list.dynamicRange = 16;
|
|
||||||
list.nGappixelsX = 0;
|
|
||||||
list.nGappixelsY = 0;
|
|
||||||
break;
|
|
||||||
case EIGER:
|
|
||||||
list.nChanX = 256;
|
|
||||||
list.nChanY = 256;
|
|
||||||
list.nChipX = 4;
|
|
||||||
list.nChipY = 1;
|
|
||||||
list.nDacs = 16;
|
|
||||||
list.dynamicRange = 16;
|
|
||||||
list.nGappixelsX = 6;
|
|
||||||
list.nGappixelsY = 1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw RuntimeError("Unknown detector type! " +
|
|
||||||
slsDetectorDefs::detectorTypeToString(type));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void slsDetector::initializeDetectorStructure(detectorType type) {
|
void slsDetector::initializeDetectorStructure(detectorType type) {
|
||||||
detector_shm()->shmversion = SLS_SHMVERSION;
|
detector_shm()->shmversion = SLS_SHMVERSION;
|
||||||
@ -391,8 +333,7 @@ void slsDetector::initializeDetectorStructure(detectorType type) {
|
|||||||
detector_shm()->rxFileOverWrite = true;
|
detector_shm()->rxFileOverWrite = true;
|
||||||
|
|
||||||
// get the detector parameters based on type
|
// get the detector parameters based on type
|
||||||
detParameters parameters{};
|
detParameters parameters{type};
|
||||||
setDetectorSpecificParameters(type, parameters);
|
|
||||||
detector_shm()->nChan[X] = parameters.nChanX;
|
detector_shm()->nChan[X] = parameters.nChanX;
|
||||||
detector_shm()->nChan[Y] = parameters.nChanY;
|
detector_shm()->nChan[Y] = parameters.nChanY;
|
||||||
detector_shm()->nChip[X] = parameters.nChipX;
|
detector_shm()->nChip[X] = parameters.nChipX;
|
||||||
@ -434,16 +375,11 @@ slsDetectorDefs::sls_detector_module *slsDetector::createModule() {
|
|||||||
slsDetectorDefs::sls_detector_module *
|
slsDetectorDefs::sls_detector_module *
|
||||||
slsDetector::createModule(detectorType type) {
|
slsDetector::createModule(detectorType type) {
|
||||||
// get the detector parameters based on type
|
// get the detector parameters based on type
|
||||||
detParameters parameters{};
|
detParameters parameters{type};
|
||||||
int nch = 0, nc = 0, nd = 0;
|
int nch = parameters.nChanX * parameters.nChanY;
|
||||||
try {
|
int nc = parameters.nChipX * parameters.nChipY;
|
||||||
setDetectorSpecificParameters(type, parameters);
|
int nd = parameters.nDacs;
|
||||||
nch = parameters.nChanX * parameters.nChanY;
|
|
||||||
nc = parameters.nChipX * parameters.nChipY;
|
|
||||||
nd = parameters.nDacs;
|
|
||||||
} catch (...) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
int *dacs = new int[nd];
|
int *dacs = new int[nd];
|
||||||
int *chanregs = new int[nch * nc];
|
int *chanregs = new int[nch * nc];
|
||||||
|
|
||||||
@ -1262,7 +1198,7 @@ int slsDetector::getThresholdEnergy() {
|
|||||||
detector_shm()->currentThresholdEV = retval;
|
detector_shm()->currentThresholdEV = retval;
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
ret = updateDetector();
|
updateDetector();
|
||||||
}
|
}
|
||||||
return detector_shm()->currentThresholdEV;
|
return detector_shm()->currentThresholdEV;
|
||||||
}
|
}
|
||||||
@ -1329,7 +1265,8 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// verify e_eV exists in trimEneregies[]
|
// verify e_eV exists in trimEneregies[]
|
||||||
if ((detector_shm()->nTrimEn == 0) || (e_eV < detector_shm()->trimEnergies[0]) ||
|
if ((detector_shm()->nTrimEn == 0) ||
|
||||||
|
(e_eV < detector_shm()->trimEnergies[0]) ||
|
||||||
(e_eV > detector_shm()->trimEnergies[detector_shm()->nTrimEn - 1])) {
|
(e_eV > detector_shm()->trimEnergies[detector_shm()->nTrimEn - 1])) {
|
||||||
throw RuntimeError("This energy " + std::to_string(e_eV) +
|
throw RuntimeError("This energy " + std::to_string(e_eV) +
|
||||||
" not defined for this module!");
|
" not defined for this module!");
|
||||||
@ -1348,7 +1285,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV,
|
|||||||
sls_detector_module *myMod = nullptr;
|
sls_detector_module *myMod = nullptr;
|
||||||
|
|
||||||
// normal
|
// normal
|
||||||
if (!interpolate) {
|
if (interpolate == false) {
|
||||||
// find their directory names
|
// find their directory names
|
||||||
std::ostringstream ostfn;
|
std::ostringstream ostfn;
|
||||||
ostfn << detector_shm()->settingsDir << ssettings << "/" << e_eV << "eV"
|
ostfn << detector_shm()->settingsDir << ssettings << "/" << e_eV << "eV"
|
||||||
@ -1360,16 +1297,13 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV,
|
|||||||
// read the files
|
// read the files
|
||||||
// myMod = createModule(); // readSettings also checks if create module
|
// myMod = createModule(); // readSettings also checks if create module
|
||||||
// is null
|
// is null
|
||||||
if (nullptr == readSettingsFile(settingsfname, myMod, tb)) {
|
if (readSettingsFile(settingsfname, myMod, tb) == nullptr) {
|
||||||
if (myMod != nullptr) {
|
if (myMod != nullptr) {
|
||||||
deleteModule(myMod);
|
deleteModule(myMod);
|
||||||
}
|
}
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
}
|
}else{
|
||||||
|
|
||||||
// interpolate
|
|
||||||
else {
|
|
||||||
// find the trim values
|
// find the trim values
|
||||||
int trim1 = -1, trim2 = -1;
|
int trim1 = -1, trim2 = -1;
|
||||||
for (int i = 0; i < detector_shm()->nTrimEn; ++i) {
|
for (int i = 0; i < detector_shm()->nTrimEn; ++i) {
|
||||||
@ -1853,7 +1787,6 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t) {
|
|||||||
case STORAGE_CELL_NUMBER:
|
case STORAGE_CELL_NUMBER:
|
||||||
// send
|
// send
|
||||||
fnum = F_SET_RECEIVER_TIMER;
|
fnum = F_SET_RECEIVER_TIMER;
|
||||||
ret = FAIL;
|
|
||||||
args[1] = detector_shm()
|
args[1] = detector_shm()
|
||||||
->timerValue[index]; // to the value given by detector
|
->timerValue[index]; // to the value given by detector
|
||||||
retval = -1;
|
retval = -1;
|
||||||
@ -1926,7 +1859,7 @@ int slsDetector::setSpeed(speedVariable sp, int value, int mode) {
|
|||||||
FILE_LOG(logDEBUG1) << "Speed index " << sp << ": " << retval;
|
FILE_LOG(logDEBUG1) << "Speed index " << sp << ": " << retval;
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
ret = updateDetector();
|
updateDetector();
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
@ -2140,7 +2073,7 @@ uint32_t slsDetector::writeRegister(uint32_t addr, uint32_t val) {
|
|||||||
<< std::hex << retval << std::dec;
|
<< std::hex << retval << std::dec;
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
ret = updateDetector();
|
updateDetector();
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
@ -2372,13 +2305,13 @@ std::string slsDetector::setReceiverHostname(const std::string &receiverIP) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
setReceiverSilentMode(static_cast<int>(detector_shm()->receiver_silentMode));
|
setReceiverSilentMode(
|
||||||
|
static_cast<int>(detector_shm()->receiver_silentMode));
|
||||||
// data streaming
|
// data streaming
|
||||||
setReceiverStreamingFrequency(detector_shm()->receiver_read_freq);
|
setReceiverStreamingFrequency(detector_shm()->receiver_read_freq);
|
||||||
setReceiverStreamingPort(getReceiverStreamingPort());
|
setReceiverStreamingPort(getReceiverStreamingPort());
|
||||||
setReceiverStreamingIP(getReceiverStreamingIP());
|
setReceiverStreamingIP(getReceiverStreamingIP());
|
||||||
setAdditionalJsonHeader(
|
setAdditionalJsonHeader(detector_shm()->rxAdditionalJsonHeader);
|
||||||
detector_shm()->rxAdditionalJsonHeader);
|
|
||||||
enableDataStreamingFromReceiver(
|
enableDataStreamingFromReceiver(
|
||||||
static_cast<int>(enableDataStreamingFromReceiver(-1)));
|
static_cast<int>(enableDataStreamingFromReceiver(-1)));
|
||||||
if (detector_shm()->myDetectorType == GOTTHARD ||
|
if (detector_shm()->myDetectorType == GOTTHARD ||
|
||||||
@ -2594,7 +2527,8 @@ void slsDetector::setReceiverStreamingIP(std::string sourceIP) {
|
|||||||
{
|
{
|
||||||
struct addrinfo *result;
|
struct addrinfo *result;
|
||||||
// on failure to convert to a valid ip
|
// on failure to convert to a valid ip
|
||||||
if (sls::ConvertHostnameToInternetAddress(sourceIP.c_str(), &result) != 0) {
|
if (sls::ConvertHostnameToInternetAddress(sourceIP.c_str(), &result) !=
|
||||||
|
0) {
|
||||||
throw RuntimeError("Could not convert rx_zmqip into a valid IP" +
|
throw RuntimeError("Could not convert rx_zmqip into a valid IP" +
|
||||||
sourceIP);
|
sourceIP);
|
||||||
}
|
}
|
||||||
@ -2673,10 +2607,8 @@ slsDetector::setAdditionalJsonHeader(const std::string &jsonheader) {
|
|||||||
ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals,
|
ret = receiver.sendCommandThenRead(fnum, args, sizeof(args), retvals,
|
||||||
sizeof(retvals));
|
sizeof(retvals));
|
||||||
FILE_LOG(logDEBUG1) << "Additional json header: " << retvals;
|
FILE_LOG(logDEBUG1) << "Additional json header: " << retvals;
|
||||||
memset(detector_shm()->rxAdditionalJsonHeader, 0,
|
memset(detector_shm()->rxAdditionalJsonHeader, 0, MAX_STR_LENGTH);
|
||||||
MAX_STR_LENGTH);
|
sls::strcpy_safe(detector_shm()->rxAdditionalJsonHeader, retvals);
|
||||||
sls::strcpy_safe(detector_shm()->rxAdditionalJsonHeader,
|
|
||||||
retvals);
|
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
updateCachedReceiverVariables();
|
updateCachedReceiverVariables();
|
||||||
@ -2696,10 +2628,8 @@ std::string slsDetector::getAdditionalJsonHeader() {
|
|||||||
ret = receiver.sendCommandThenRead(fnum, nullptr, 0, retvals,
|
ret = receiver.sendCommandThenRead(fnum, nullptr, 0, retvals,
|
||||||
sizeof(retvals));
|
sizeof(retvals));
|
||||||
FILE_LOG(logDEBUG1) << "Additional json header: " << retvals;
|
FILE_LOG(logDEBUG1) << "Additional json header: " << retvals;
|
||||||
memset(detector_shm()->rxAdditionalJsonHeader, 0,
|
memset(detector_shm()->rxAdditionalJsonHeader, 0, MAX_STR_LENGTH);
|
||||||
MAX_STR_LENGTH);
|
sls::strcpy_safe(detector_shm()->rxAdditionalJsonHeader, retvals);
|
||||||
sls::strcpy_safe(detector_shm()->rxAdditionalJsonHeader,
|
|
||||||
retvals);
|
|
||||||
}
|
}
|
||||||
if (ret == FORCE_UPDATE) {
|
if (ret == FORCE_UPDATE) {
|
||||||
updateCachedReceiverVariables();
|
updateCachedReceiverVariables();
|
||||||
@ -2710,7 +2640,8 @@ std::string slsDetector::getAdditionalJsonHeader() {
|
|||||||
std::string slsDetector::setAdditionalJsonParameter(const std::string &key,
|
std::string slsDetector::setAdditionalJsonParameter(const std::string &key,
|
||||||
const std::string &value) {
|
const std::string &value) {
|
||||||
if (key.empty() || value.empty()) {
|
if (key.empty() || value.empty()) {
|
||||||
throw RuntimeError("Could not set additional json header parameter as the key or "
|
throw RuntimeError(
|
||||||
|
"Could not set additional json header parameter as the key or "
|
||||||
"value is empty");
|
"value is empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2984,7 +2915,8 @@ int slsDetector::writeCounterBlockFile(const std::string &fname, int startACQ) {
|
|||||||
int nChan = getTotalNumberOfChannels();
|
int nChan = getTotalNumberOfChannels();
|
||||||
int16_t retvals[nChan];
|
int16_t retvals[nChan];
|
||||||
FILE_LOG(logDEBUG1) << "Reading Counter to " << fname
|
FILE_LOG(logDEBUG1) << "Reading Counter to " << fname
|
||||||
<< (startACQ !=0 ? " and Restarting Acquisition" : "\n");
|
<< (startACQ != 0 ? " and Restarting Acquisition"
|
||||||
|
: "\n");
|
||||||
|
|
||||||
ret = getCounterBlock(retvals, startACQ);
|
ret = getCounterBlock(retvals, startACQ);
|
||||||
if (ret != FAIL) {
|
if (ret != FAIL) {
|
||||||
@ -3573,9 +3505,10 @@ int slsDetector::programFPGA(std::vector<char> buffer) {
|
|||||||
while (count > 0) {
|
while (count > 0) {
|
||||||
usleep(1 * 1000 * 1000);
|
usleep(1 * 1000 * 1000);
|
||||||
--count;
|
--count;
|
||||||
printf(
|
printf("%d%%\r", static_cast<int>(
|
||||||
"%d%%\r",
|
(static_cast<double>(ERASE_TIME - count) /
|
||||||
static_cast<int>((static_cast<double>(ERASE_TIME - count) / ERASE_TIME) * 100));
|
ERASE_TIME) *
|
||||||
|
100));
|
||||||
std::cout << std::flush;
|
std::cout << std::flush;
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@ -3605,9 +3538,10 @@ int slsDetector::programFPGA(std::vector<char> buffer) {
|
|||||||
currentPointer += unitprogramsize;
|
currentPointer += unitprogramsize;
|
||||||
|
|
||||||
// print progress
|
// print progress
|
||||||
printf(
|
printf("%d%%\r", static_cast<int>((static_cast<double>(
|
||||||
"%d%%\r",
|
totalsize - filesize) /
|
||||||
static_cast<int>((static_cast<double>(totalsize - filesize) / totalsize) * 100));
|
totalsize) *
|
||||||
|
100));
|
||||||
std::cout << std::flush;
|
std::cout << std::flush;
|
||||||
} else {
|
} else {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@ -3727,7 +3661,8 @@ int slsDetector::getChanRegs(double *retval) {
|
|||||||
// the original array has 0 initialized
|
// the original array has 0 initialized
|
||||||
if (myMod->chanregs != nullptr) {
|
if (myMod->chanregs != nullptr) {
|
||||||
for (int i = 0; i < n; ++i) {
|
for (int i = 0; i < n; ++i) {
|
||||||
retval[i] = static_cast<double>(myMod->chanregs[i] & TRIMBITMASK);
|
retval[i] =
|
||||||
|
static_cast<double>(myMod->chanregs[i] & TRIMBITMASK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
deleteModule(myMod);
|
deleteModule(myMod);
|
||||||
@ -3989,7 +3924,8 @@ int slsDetector::updateCachedReceiverVariables() const {
|
|||||||
FILE_LOG(logDEBUG1) << "Sending update client to receiver server";
|
FILE_LOG(logDEBUG1) << "Sending update client to receiver server";
|
||||||
|
|
||||||
if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) {
|
if (detector_shm()->receiverOnlineFlag == ONLINE_FLAG) {
|
||||||
auto receiver = sls::ClientSocket("Receiver", detector_shm()->receiver_hostname,
|
auto receiver =
|
||||||
|
sls::ClientSocket("Receiver", detector_shm()->receiver_hostname,
|
||||||
detector_shm()->receiverTCPPort);
|
detector_shm()->receiverTCPPort);
|
||||||
ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0);
|
ret = receiver.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0);
|
||||||
if (ret == FAIL) {
|
if (ret == FAIL) {
|
||||||
@ -4060,8 +3996,7 @@ int slsDetector::updateCachedReceiverVariables() const {
|
|||||||
|
|
||||||
// additional json header
|
// additional json header
|
||||||
n += receiver.receiveData(cstring, sizeof(cstring));
|
n += receiver.receiveData(cstring, sizeof(cstring));
|
||||||
sls::strcpy_safe(detector_shm()->rxAdditionalJsonHeader,
|
sls::strcpy_safe(detector_shm()->rxAdditionalJsonHeader, cstring);
|
||||||
cstring);
|
|
||||||
|
|
||||||
// receiver streaming enable
|
// receiver streaming enable
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
@ -4073,8 +4008,7 @@ int slsDetector::updateCachedReceiverVariables() const {
|
|||||||
|
|
||||||
// deactivated padding enable
|
// deactivated padding enable
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
detector_shm()->rxPadDeactivatedModules =
|
detector_shm()->rxPadDeactivatedModules = static_cast<bool>(i32);
|
||||||
static_cast<bool>(i32);
|
|
||||||
|
|
||||||
// silent mode
|
// silent mode
|
||||||
n += receiver.receiveData(&i32, sizeof(i32));
|
n += receiver.receiveData(&i32, sizeof(i32));
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
using namespace sls;
|
|
||||||
|
|
||||||
TEST_CASE("Set and get trimen", "[detector]") {
|
TEST_CASE("Set and get trimen", "[detector]") {
|
||||||
// Free shared memory to be sure that we start in a clean state
|
// Free shared memory to be sure that we start in a clean state
|
||||||
@ -192,3 +192,29 @@ TEST_CASE("Padding and discard policy", "[detector][new]"){
|
|||||||
d.freeSharedMemory();
|
d.freeSharedMemory();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("create detParamets struct", "[detector][new]"){
|
||||||
|
detParameters par;
|
||||||
|
CHECK(sizeof(par) == 32);
|
||||||
|
CHECK(par.nChanX == 0);
|
||||||
|
CHECK(par.nChanY == 0);
|
||||||
|
CHECK(par.nChipX == 0);
|
||||||
|
CHECK(par.nChipY == 0);
|
||||||
|
CHECK(par.nDacs == 0);
|
||||||
|
CHECK(par.dynamicRange == 0);
|
||||||
|
CHECK(par.nGappixelsX == 0);
|
||||||
|
CHECK(par.nGappixelsY == 0);
|
||||||
|
|
||||||
|
|
||||||
|
detParameters par2{slsDetectorDefs::detectorType::EIGER};
|
||||||
|
CHECK(sizeof(par2) == 32);
|
||||||
|
CHECK(par2.nChanX == 256);
|
||||||
|
CHECK(par2.nChanY == 256);
|
||||||
|
CHECK(par2.nChipX == 4);
|
||||||
|
CHECK(par2.nChipY == 1);
|
||||||
|
CHECK(par2.nDacs == 16);
|
||||||
|
CHECK(par2.dynamicRange == 16);
|
||||||
|
CHECK(par2.nGappixelsX == 6);
|
||||||
|
CHECK(par2.nGappixelsY == 1);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user