mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-19 00:07:13 +02:00
WIP
This commit is contained in:
@ -52,8 +52,7 @@ Result<int64_t> Detector::getReceiverVersion(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getReceiverSoftwareVersion, pos);
|
||||
}
|
||||
|
||||
Result<defs::detectorType>
|
||||
Detector::getDetectorType(Positions pos) const {
|
||||
Result<defs::detectorType> Detector::getDetectorType(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getDetectorTypeAsEnum, pos);
|
||||
}
|
||||
|
||||
@ -83,8 +82,6 @@ void Detector::setSettings(defs::detectorSettings value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setSettings, pos, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Acquisition Parameters
|
||||
|
||||
Result<int64_t> Detector::getNumberOfFrames() const {
|
||||
@ -103,7 +100,6 @@ void Detector::setNumberOfTriggers(int64_t value) {
|
||||
pimpl->Parallel(&slsDetector::setTimer, {}, defs::CYCLES_NUMBER, value);
|
||||
}
|
||||
|
||||
|
||||
Result<ns> Detector::getExptime(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME,
|
||||
-1);
|
||||
@ -184,7 +180,8 @@ void Detector::setHighVoltage(int value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setDAC, pos, value, defs::HIGH_VOLTAGE, 0);
|
||||
}
|
||||
|
||||
Result<int> Detector::getTemperature(defs::dacIndex index, Positions pos) const {
|
||||
Result<int> Detector::getTemperature(defs::dacIndex index,
|
||||
Positions pos) const {
|
||||
switch (index) {
|
||||
case defs::TEMPERATURE_ADC:
|
||||
case defs::TEMPERATURE_FPGA:
|
||||
@ -232,8 +229,6 @@ void Detector::setTimingMode(defs::timingMode value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setTimingMode, pos, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Acquisition
|
||||
|
||||
void Detector::acquire() { pimpl->acquire(); }
|
||||
@ -244,15 +239,15 @@ void Detector::startAcquisition() {
|
||||
pimpl->Parallel(&slsDetector::startAcquisition, {});
|
||||
}
|
||||
|
||||
void Detector::stopAcquisition() {
|
||||
void Detector::stopAcquisition() {
|
||||
pimpl->Parallel(&slsDetector::stopAcquisition, {});
|
||||
if (getUseReceiverFlag({}).squash()) //TODO: problem for acquire()
|
||||
if (getUseReceiverFlag({}).squash()) // TODO: problem for acquire()
|
||||
pimpl->Parallel(&slsDetector::stopReceiver, {});
|
||||
}
|
||||
|
||||
void Detector::clearAcquiringFlag() { pimpl->setAcquiringFlag(0); }
|
||||
|
||||
Result<defs::runStatus> Detector::getDetectorStatus(Positions pos) const{
|
||||
Result<defs::runStatus> Detector::getDetectorStatus(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getRunStatus, pos);
|
||||
}
|
||||
|
||||
@ -276,8 +271,6 @@ void Detector::sendSoftwareTrigger(Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::sendSoftwareTrigger, pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Network Configuration (Detector<->Receiver)
|
||||
|
||||
void Detector::configureMAC(Positions pos) {
|
||||
@ -383,7 +376,8 @@ void Detector::setDestinationUDPPort(int port, int module_id) {
|
||||
if (module_id == -1) {
|
||||
std::vector<int> port_list = getPortNumbers(port);
|
||||
for (int idet = 0; idet < size(); ++idet) {
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPPort, {idet}, port_list[idet]);
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPPort, {idet},
|
||||
port_list[idet]);
|
||||
}
|
||||
} else {
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPPort, {module_id}, port);
|
||||
@ -398,10 +392,11 @@ void Detector::setDestinationUDPPort2(int port, int module_id) {
|
||||
if (module_id == -1) {
|
||||
std::vector<int> port_list = getPortNumbers(port);
|
||||
for (int idet = 0; idet < size(); ++idet) {
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPPort2, {idet}, port_list[idet]);
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPPort2, {idet},
|
||||
port_list[idet]);
|
||||
}
|
||||
} else {
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPPort2, {module_id}, port );
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPPort2, {module_id}, port);
|
||||
}
|
||||
}
|
||||
|
||||
@ -458,8 +453,6 @@ void Detector::setTransmissionDelayRight(int value, Positions pos) {
|
||||
defs::DETECTOR_TXN_DELAY_RIGHT, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Receiver
|
||||
|
||||
Result<bool> Detector::getUseReceiverFlag(Positions pos) const {
|
||||
@ -506,7 +499,7 @@ Detector::getRxFrameDiscardPolicy(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setRxFrameDiscardPolicy(defs::frameDiscardPolicy f,
|
||||
Positions pos) {
|
||||
Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setReceiverFramesDiscardPolicy, pos, f);
|
||||
}
|
||||
|
||||
@ -522,14 +515,12 @@ Result<int64_t> Detector::getRxUDPSocketBufferSize(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getReceiverUDPSocketBufferSize, pos);
|
||||
}
|
||||
|
||||
void Detector::setRxUDPSocketBufferSize(int64_t udpsockbufsize,
|
||||
Positions pos) {
|
||||
void Detector::setRxUDPSocketBufferSize(int64_t udpsockbufsize, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setReceiverUDPSocketBufferSize, pos,
|
||||
udpsockbufsize);
|
||||
}
|
||||
|
||||
Result<int64_t>
|
||||
Detector::getRxRealUDPSocketBufferSize(Positions pos) const {
|
||||
Result<int64_t> Detector::getRxRealUDPSocketBufferSize(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getReceiverRealUDPSocketBufferSize,
|
||||
pos);
|
||||
}
|
||||
@ -546,8 +537,6 @@ Result<std::string> Detector::getRxLastClientIP(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getReceiverLastClientIP, pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// File
|
||||
|
||||
Result<defs::fileFormat> Detector::getFileFormat(Positions pos) const {
|
||||
@ -613,12 +602,11 @@ void Detector::setFramesPerFile(int n, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setFramesPerFile, pos, n);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Zmq Streaming (Receiver<->Client)
|
||||
|
||||
Result<bool> Detector::getRxZmqDataStream(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::enableDataStreamingFromReceiver, pos, -1);
|
||||
return pimpl->Parallel(&slsDetector::enableDataStreamingFromReceiver, pos,
|
||||
-1);
|
||||
}
|
||||
|
||||
void Detector::setRxZmqDataStream(bool enable, Positions pos) {
|
||||
@ -650,10 +638,12 @@ void Detector::setRxZmqPort(int port, int module_id) {
|
||||
if (module_id == -1) {
|
||||
std::vector<int> port_list = getPortNumbers(port);
|
||||
for (int idet = 0; idet < size(); ++idet) {
|
||||
pimpl->Parallel(&slsDetector::setReceiverStreamingPort, {idet}, port_list[idet]);
|
||||
pimpl->Parallel(&slsDetector::setReceiverStreamingPort, {idet},
|
||||
port_list[idet]);
|
||||
}
|
||||
} else {
|
||||
pimpl->Parallel(&slsDetector::setReceiverStreamingPort, {module_id}, port);
|
||||
pimpl->Parallel(&slsDetector::setReceiverStreamingPort, {module_id},
|
||||
port);
|
||||
}
|
||||
}
|
||||
|
||||
@ -661,10 +651,8 @@ Result<std::string> Detector::getRxZmqIP(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getReceiverStreamingIP, pos);
|
||||
}
|
||||
|
||||
void Detector::setRxZmqIP(const std::string &ip,
|
||||
Positions pos) {
|
||||
bool previouslyReceiverStreaming =
|
||||
getRxZmqDataStream(pos).squash(false);
|
||||
void Detector::setRxZmqIP(const std::string &ip, Positions pos) {
|
||||
bool previouslyReceiverStreaming = getRxZmqDataStream(pos).squash(false);
|
||||
pimpl->Parallel(&slsDetector::setReceiverStreamingIP, pos, ip);
|
||||
if (previouslyReceiverStreaming) {
|
||||
setRxZmqDataStream(false, pos);
|
||||
@ -680,10 +668,12 @@ void Detector::setClientZmqPort(int port, int module_id) {
|
||||
if (module_id == -1) {
|
||||
std::vector<int> port_list = getPortNumbers(port);
|
||||
for (int idet = 0; idet < size(); ++idet) {
|
||||
pimpl->Parallel(&slsDetector::setClientStreamingPort, {idet}, port_list[idet]);
|
||||
pimpl->Parallel(&slsDetector::setClientStreamingPort, {idet},
|
||||
port_list[idet]);
|
||||
}
|
||||
} else {
|
||||
pimpl->Parallel(&slsDetector::setClientStreamingPort, {module_id}, port);
|
||||
pimpl->Parallel(&slsDetector::setClientStreamingPort, {module_id},
|
||||
port);
|
||||
}
|
||||
}
|
||||
|
||||
@ -691,8 +681,7 @@ Result<std::string> Detector::getClientZmqIp(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getClientStreamingIP, pos);
|
||||
}
|
||||
|
||||
void Detector::setClientZmqIp(const std::string &ip,
|
||||
Positions pos) {
|
||||
void Detector::setClientZmqIp(const std::string &ip, Positions pos) {
|
||||
int previouslyClientStreaming = pimpl->enableDataStreamingToClient(-1);
|
||||
pimpl->Parallel(&slsDetector::setClientStreamingIP, pos, ip);
|
||||
if (previouslyClientStreaming != 0) {
|
||||
@ -701,8 +690,6 @@ void Detector::setClientZmqIp(const std::string &ip,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Eiger Specific
|
||||
|
||||
Result<int> Detector::getDynamicRange(Positions pos) const {
|
||||
@ -711,7 +698,6 @@ Result<int> Detector::getDynamicRange(Positions pos) const {
|
||||
|
||||
void Detector::setDynamicRange(int value) { pimpl->setDynamicRange(value); }
|
||||
|
||||
|
||||
Result<ns> Detector::getSubExptime(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::setTimer, pos,
|
||||
defs::SUBFRAME_ACQUISITION_TIME, -1);
|
||||
@ -736,9 +722,11 @@ Result<int> Detector::getThresholdEnergy(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getThresholdEnergy, pos);
|
||||
}
|
||||
|
||||
void Detector::setThresholdEnergy(int threshold_ev, defs::detectorSettings settings,
|
||||
void Detector::setThresholdEnergy(int threshold_ev,
|
||||
defs::detectorSettings settings,
|
||||
bool trimbits, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setThresholdEnergy, pos, threshold_ev, settings, static_cast<int>(trimbits));
|
||||
pimpl->Parallel(&slsDetector::setThresholdEnergy, pos, threshold_ev,
|
||||
settings, static_cast<int>(trimbits));
|
||||
}
|
||||
|
||||
Result<std::string> Detector::getSettingsDir(Positions pos) const {
|
||||
@ -796,7 +784,8 @@ Result<bool> Detector::getBottom(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setBottom(bool value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setFlippedDataX, pos, static_cast<int>(value));
|
||||
pimpl->Parallel(&slsDetector::setFlippedDataX, pos,
|
||||
static_cast<int>(value));
|
||||
}
|
||||
|
||||
Result<int> Detector::getAllTrimbits(Positions pos) const {
|
||||
@ -874,7 +863,7 @@ void Detector::setPartialReset(bool value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setCounterBit, pos, !value);
|
||||
}
|
||||
|
||||
void Detector::pulsePixel(int n,defs::xy pixel, Positions pos) {
|
||||
void Detector::pulsePixel(int n, defs::xy pixel, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::pulsePixel, pos, n, pixel.x, pixel.y);
|
||||
}
|
||||
|
||||
@ -890,11 +879,7 @@ Result<bool> Detector::getQuad(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getQuad, pos);
|
||||
}
|
||||
|
||||
void Detector::setQuad(const bool value) {
|
||||
pimpl->setQuad(value);
|
||||
}
|
||||
|
||||
|
||||
void Detector::setQuad(const bool value) { pimpl->setQuad(value); }
|
||||
|
||||
// Jungfrau Specific
|
||||
|
||||
@ -979,11 +964,8 @@ void Detector::setStorageCellDelay(ns value, Positions pos) {
|
||||
value.count());
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Gotthard Specific
|
||||
|
||||
|
||||
Result<defs::ROI> Detector::getROI(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getROI, pos);
|
||||
}
|
||||
@ -1016,17 +998,15 @@ void Detector::setExternalSignalFlags(defs::externalSignalFlag value,
|
||||
}
|
||||
|
||||
Result<int> Detector::getImageTestMode(Positions pos) {
|
||||
return pimpl->Parallel(&slsDetector::digitalTest, pos,
|
||||
defs::IMAGE_TEST, -1);
|
||||
return pimpl->Parallel(&slsDetector::digitalTest, pos, defs::IMAGE_TEST,
|
||||
-1);
|
||||
}
|
||||
|
||||
Result<int> Detector::setImageTestMode(int value, Positions pos) {
|
||||
return pimpl->Parallel(&slsDetector::digitalTest, pos,
|
||||
defs::IMAGE_TEST, value);
|
||||
return pimpl->Parallel(&slsDetector::digitalTest, pos, defs::IMAGE_TEST,
|
||||
value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// CTB Specific
|
||||
|
||||
Result<int64_t> Detector::getNumberOfAnalogSamples(Positions pos) const {
|
||||
@ -1083,7 +1063,8 @@ void Detector::setReadoutMode(int value, Positions pos) {
|
||||
}
|
||||
|
||||
Result<int> Detector::getDBITPhase(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PHASE, -1, 0);
|
||||
return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PHASE, -1,
|
||||
0);
|
||||
}
|
||||
|
||||
void Detector::setDBITPhase(int value, Positions pos) {
|
||||
@ -1096,10 +1077,11 @@ Result<int> Detector::getMaxDBITPhaseShift(Positions pos) const {
|
||||
}
|
||||
|
||||
Result<int> Detector::getDBITPhaseInDegrees(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PHASE, -1, 1);
|
||||
return pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PHASE, -1,
|
||||
1);
|
||||
}
|
||||
|
||||
void Detector::setDBITPhaseInDegrees(int value,Positions pos) {
|
||||
void Detector::setDBITPhaseInDegrees(int value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PHASE, value, 1);
|
||||
}
|
||||
|
||||
@ -1108,7 +1090,8 @@ Result<int> Detector::getADCClock(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setADCClock(int value_in_MHz, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_CLOCK, value_in_MHz, 0);
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::ADC_CLOCK, value_in_MHz,
|
||||
0);
|
||||
}
|
||||
|
||||
Result<int> Detector::getDBITClock(Positions pos) const {
|
||||
@ -1117,7 +1100,8 @@ Result<int> Detector::getDBITClock(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setDBITClock(int value_in_MHz, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_CLOCK, value_in_MHz, 0);
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_CLOCK, value_in_MHz,
|
||||
0);
|
||||
}
|
||||
|
||||
Result<int> Detector::getRUNClock(Positions pos) const {
|
||||
@ -1126,7 +1110,8 @@ Result<int> Detector::getRUNClock(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setRUNClock(int value_in_MHz, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER, value_in_MHz, 0);
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::CLOCK_DIVIDER,
|
||||
value_in_MHz, 0);
|
||||
}
|
||||
|
||||
Result<int> Detector::getSYNCClock(Positions pos) const {
|
||||
@ -1152,7 +1137,6 @@ void Detector::setDBITPipeline(int value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setSpeed, pos, defs::DBIT_PIPELINE, value, 0);
|
||||
}
|
||||
|
||||
|
||||
Result<int> Detector::getVrefVoltage(bool mV, Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::setDAC, pos, -1, defs::ADC_VPP, mV);
|
||||
}
|
||||
@ -1291,8 +1275,6 @@ void Detector::setLEDEnable(bool enable, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setLEDEnable, pos, static_cast<int>(enable));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Pattern
|
||||
|
||||
void Detector::setPattern(const std::string &fname, Positions pos) {
|
||||
@ -1362,8 +1344,6 @@ void Detector::setPatternBitMask(uint64_t mask, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setPatternBitMask, pos, mask);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Moench
|
||||
|
||||
Result<std::string> Detector::getAdditionalJsonHeader(Positions pos) const {
|
||||
@ -1449,12 +1429,11 @@ void Detector::setDetectorMode(defs::detectorModeType value, Positions pos) {
|
||||
"detectorMode", defs::getDetectorModeType(value));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Advanced
|
||||
|
||||
void Detector::programFPGA(const std::string &fname, Positions pos) {
|
||||
FILE_LOG(logINFO) << "Updating Firmware. This can take awhile. Please be patient...";
|
||||
FILE_LOG(logINFO)
|
||||
<< "Updating Firmware. This can take awhile. Please be patient...";
|
||||
std::vector<char> buffer = pimpl->readPofFile(fname);
|
||||
pimpl->Parallel(&slsDetector::programFPGA, pos, buffer);
|
||||
}
|
||||
@ -1512,11 +1491,8 @@ void Detector::writeAdcRegister(uint32_t addr, uint32_t value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::writeAdcRegister, pos, addr, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Insignificant
|
||||
|
||||
|
||||
Result<int> Detector::getControlPort(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getControlPort, pos);
|
||||
}
|
||||
@ -1565,19 +1541,18 @@ Result<ns> Detector::getMeasurementTime(Positions pos) const {
|
||||
|
||||
std::string Detector::getUserDetails() const { return pimpl->getUserDetails(); }
|
||||
|
||||
|
||||
Result<uint64_t> Detector::getRxCurrentFrameIndex(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getReceiverCurrentFrameIndex, pos);
|
||||
}
|
||||
|
||||
std::vector<int> Detector::getPortNumbers(int start_port) {
|
||||
int num_sockets_per_detector = 1;
|
||||
int num_sockets_per_detector = 1;
|
||||
switch (getDetectorType({}).squash()) {
|
||||
case defs::EIGER:
|
||||
num_sockets_per_detector *= 2;
|
||||
break;
|
||||
case defs::JUNGFRAU:
|
||||
if(getNumberofUDPInterfaces({}).squash() == 2) {
|
||||
if (getNumberofUDPInterfaces({}).squash() == 2) {
|
||||
num_sockets_per_detector *= 2;
|
||||
}
|
||||
break;
|
||||
|
@ -233,17 +233,23 @@ std::string multiSlsDetector::getUserDetails() {
|
||||
std::ostringstream sstream;
|
||||
sstream << "\nHostname: ";
|
||||
for (auto &d : detectors) {
|
||||
sstream << (d->isFixedPatternSharedMemoryCompatible() ? d->getHostname() : "Unknown") << "+";
|
||||
sstream << (d->isFixedPatternSharedMemoryCompatible() ? d->getHostname()
|
||||
: "Unknown")
|
||||
<< "+";
|
||||
}
|
||||
sstream << "\nType: ";
|
||||
// get type from multi shm
|
||||
if (multi_shm()->shmversion >= MULTI_SHMAPIVERSION) {
|
||||
sstream << slsDetectorDefs::detectorTypeToString(getDetectorTypeAsEnum());
|
||||
}
|
||||
sstream << slsDetectorDefs::detectorTypeToString(
|
||||
getDetectorTypeAsEnum());
|
||||
}
|
||||
// get type from slsdet shm
|
||||
else {
|
||||
for (auto &d : detectors) {
|
||||
sstream << (d->isFixedPatternSharedMemoryCompatible() ? d->getDetectorTypeAsString() : "Unknown") << "+";
|
||||
sstream << (d->isFixedPatternSharedMemoryCompatible()
|
||||
? d->getDetectorTypeAsString()
|
||||
: "Unknown")
|
||||
<< "+";
|
||||
}
|
||||
}
|
||||
|
||||
@ -325,7 +331,6 @@ bool multiSlsDetector::isAcquireReady() {
|
||||
return OK != 0u;
|
||||
}
|
||||
|
||||
|
||||
std::string multiSlsDetector::exec(const char *cmd) {
|
||||
int bufsize = 128;
|
||||
char buffer[bufsize];
|
||||
@ -349,11 +354,13 @@ std::string multiSlsDetector::exec(const char *cmd) {
|
||||
return result;
|
||||
}
|
||||
|
||||
void multiSlsDetector::setVirtualDetectorServers(const int numdet, const int port) {
|
||||
std::vector <std::string> hostnames;
|
||||
void multiSlsDetector::setVirtualDetectorServers(const int numdet,
|
||||
const int port) {
|
||||
std::vector<std::string> hostnames;
|
||||
for (int i = 0; i < numdet; ++i) {
|
||||
// * 2 is for control and stop port
|
||||
hostnames.push_back(std::string("localhost:") + std::to_string(port + i * 2));
|
||||
hostnames.push_back(std::string("localhost:") +
|
||||
std::to_string(port + i * 2));
|
||||
}
|
||||
setHostname(hostnames);
|
||||
}
|
||||
@ -366,7 +373,7 @@ void multiSlsDetector::setHostname(const std::vector<std::string> &name) {
|
||||
"Freeing Shared memory now.";
|
||||
freeSharedMemory();
|
||||
setupMultiDetector();
|
||||
}
|
||||
}
|
||||
for (const auto &hostname : name) {
|
||||
addSlsDetector(hostname);
|
||||
}
|
||||
@ -412,7 +419,7 @@ void multiSlsDetector::addMultipleDetectors(const char *name) {
|
||||
|
||||
void multiSlsDetector::addSlsDetector(const std::string &hostname) {
|
||||
FILE_LOG(logDEBUG1) << "Adding detector " << hostname;
|
||||
|
||||
|
||||
int port = DEFAULT_PORTNO;
|
||||
std::string host = hostname;
|
||||
auto res = sls::split(hostname, ':');
|
||||
@ -434,8 +441,7 @@ void multiSlsDetector::addSlsDetector(const std::string &hostname) {
|
||||
}
|
||||
|
||||
// get type by connecting
|
||||
detectorType type =
|
||||
slsDetector::getTypeFromDetector(host, port);
|
||||
detectorType type = slsDetector::getTypeFromDetector(host, port);
|
||||
int pos = (int)detectors.size();
|
||||
detectors.push_back(
|
||||
sls::make_unique<slsDetector>(type, multiId, pos, false));
|
||||
@ -443,14 +449,15 @@ void multiSlsDetector::addSlsDetector(const std::string &hostname) {
|
||||
detectors[pos]->setControlPort(port);
|
||||
detectors[pos]->setStopPort(port + 1);
|
||||
detectors[pos]->setHostname(host);
|
||||
multi_shm()->multiDetectorType = getDetectorTypeAsEnum(-1);// -1 needed here
|
||||
multi_shm()->multiDetectorType =
|
||||
getDetectorTypeAsEnum(-1); // -1 needed here
|
||||
}
|
||||
|
||||
void multiSlsDetector::updateDetectorSize() {
|
||||
FILE_LOG(logDEBUG) << "Updating Multi-Detector Size: " << size();
|
||||
|
||||
|
||||
const slsDetectorDefs::xy det_size = detectors[0]->getNumberOfChannels();
|
||||
|
||||
|
||||
int maxy = multi_shm()->numberOfChannels.y;
|
||||
if (maxy == 0) {
|
||||
maxy = det_size.y * size();
|
||||
@ -465,23 +472,21 @@ void multiSlsDetector::updateDetectorSize() {
|
||||
multi_shm()->numberOfDetector.x = ndetx;
|
||||
multi_shm()->numberOfDetector.y = ndety;
|
||||
multi_shm()->numberOfChannels.x = det_size.x * ndetx;
|
||||
multi_shm()->numberOfChannels.y = det_size.y * ndety;
|
||||
|
||||
FILE_LOG(logDEBUG)
|
||||
<< "\n\tNumber of Detectors in X direction:"
|
||||
<< multi_shm()->numberOfDetector.x
|
||||
<< "\n\tNumber of Detectors in Y direction:"
|
||||
<< multi_shm()->numberOfDetector.y
|
||||
<< "\n\tNumber of Channels in X direction:"
|
||||
<< multi_shm()->numberOfChannels.x
|
||||
<< "\n\tNumber of Channels in Y direction:"
|
||||
<< multi_shm()->numberOfChannels.y;
|
||||
multi_shm()->numberOfChannels.y = det_size.y * ndety;
|
||||
|
||||
FILE_LOG(logDEBUG) << "\n\tNumber of Detectors in X direction:"
|
||||
<< multi_shm()->numberOfDetector.x
|
||||
<< "\n\tNumber of Detectors in Y direction:"
|
||||
<< multi_shm()->numberOfDetector.y
|
||||
<< "\n\tNumber of Channels in X direction:"
|
||||
<< multi_shm()->numberOfChannels.x
|
||||
<< "\n\tNumber of Channels in Y direction:"
|
||||
<< multi_shm()->numberOfChannels.y;
|
||||
|
||||
for (auto &d : detectors) {
|
||||
d->updateMultiSize(multi_shm()->numberOfDetector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
slsDetectorDefs::detectorType multiSlsDetector::getDetectorTypeAsEnum() const {
|
||||
return multi_shm()->multiDetectorType;
|
||||
@ -528,7 +533,8 @@ slsDetectorDefs::xy multiSlsDetector::getNumberOfChannels(int detPos) const {
|
||||
|
||||
void multiSlsDetector::setNumberOfChannels(const slsDetectorDefs::xy c) {
|
||||
if (size() > 1) {
|
||||
throw RuntimeError("Set the number of channels before setting hostname.");
|
||||
throw RuntimeError(
|
||||
"Set the number of channels before setting hostname.");
|
||||
}
|
||||
multi_shm()->numberOfChannels = c;
|
||||
}
|
||||
@ -880,7 +886,7 @@ void multiSlsDetector::readAll(int detPos) {
|
||||
}
|
||||
|
||||
// multi
|
||||
parallelCall(&slsDetector::readAll);
|
||||
parallelCall(&slsDetector::readAll);
|
||||
}
|
||||
|
||||
void multiSlsDetector::configureMAC(int detPos) {
|
||||
@ -1058,7 +1064,6 @@ int multiSlsDetector::setDynamicRange(int dr, int detPos) {
|
||||
auto r = parallelCall(&slsDetector::setDynamicRange, dr);
|
||||
int ret = sls::minusOneIfDifferent(r);
|
||||
|
||||
|
||||
// change in dr
|
||||
if (dr != -1 && dr != prevValue) {
|
||||
|
||||
@ -1125,7 +1130,8 @@ int multiSlsDetector::getADC(dacIndex index, int detPos) {
|
||||
return sls::minusOneIfDifferent(r);
|
||||
}
|
||||
|
||||
slsDetectorDefs::timingMode multiSlsDetector::setTimingMode(timingMode pol, int detPos) {
|
||||
slsDetectorDefs::timingMode multiSlsDetector::setTimingMode(timingMode pol,
|
||||
int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->setTimingMode(pol);
|
||||
@ -1712,7 +1718,6 @@ void multiSlsDetector::setReceiverDataStreamingOutIP(const std::string &ip,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
std::string multiSlsDetector::getReceiverStreamingIP(int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
@ -2049,7 +2054,7 @@ int multiSlsDetector::getReceiverDbitOffset(int detPos) {
|
||||
}
|
||||
|
||||
void multiSlsDetector::writeAdcRegister(uint32_t addr, uint32_t val,
|
||||
int detPos) {
|
||||
int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
detectors[detPos]->writeAdcRegister(addr, val);
|
||||
@ -2139,7 +2144,8 @@ int multiSlsDetector::enableGapPixels(int val, int detPos) {
|
||||
|
||||
if (val != -1) {
|
||||
Parallel(&slsDetector::enableGapPixels, {}, val);
|
||||
Result<slsDetectorDefs::xy> res = Parallel(&slsDetector::getNumberOfChannels, {});
|
||||
Result<slsDetectorDefs::xy> res =
|
||||
Parallel(&slsDetector::getNumberOfChannels, {});
|
||||
multi_shm()->numberOfChannels.x = 0;
|
||||
multi_shm()->numberOfChannels.y = 0;
|
||||
for (auto &it : res) {
|
||||
@ -2150,9 +2156,10 @@ int multiSlsDetector::enableGapPixels(int val, int detPos) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void multiSlsDetector::setGapPixelsEnable(bool enable, Positions pos){
|
||||
void multiSlsDetector::setGapPixelsEnable(bool enable, Positions pos) {
|
||||
Parallel(&slsDetector::enableGapPixels, pos, static_cast<int>(enable));
|
||||
Result<slsDetectorDefs::xy> res = Parallel(&slsDetector::getNumberOfChannels, {});
|
||||
Result<slsDetectorDefs::xy> res =
|
||||
Parallel(&slsDetector::getNumberOfChannels, {});
|
||||
multi_shm()->numberOfChannels.x = 0;
|
||||
multi_shm()->numberOfChannels.y = 0;
|
||||
for (auto &it : res) {
|
||||
@ -2276,14 +2283,14 @@ void multiSlsDetector::resetFPGA(int detPos) {
|
||||
}
|
||||
|
||||
void multiSlsDetector::copyDetectorServer(const std::string &fname,
|
||||
const std::string &hostname,
|
||||
int detPos) {
|
||||
const std::string &hostname,
|
||||
int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
detectors[detPos]->copyDetectorServer(fname, hostname);
|
||||
detectors[detPos]->rebootController();
|
||||
detectors[detPos]->rebootController();
|
||||
// reboot and copy should be independant for
|
||||
// update command
|
||||
// update command
|
||||
}
|
||||
|
||||
// multi
|
||||
@ -2302,8 +2309,8 @@ void multiSlsDetector::rebootController(int detPos) {
|
||||
}
|
||||
|
||||
void multiSlsDetector::update(const std::string &sname,
|
||||
const std::string &hostname,
|
||||
const std::string &fname, int detPos) {
|
||||
const std::string &hostname,
|
||||
const std::string &fname, int detPos) {
|
||||
FILE_LOG(logINFO) << "This can take awhile. Please be patient...";
|
||||
// read pof file
|
||||
std::vector<char> buffer = readPofFile(fname);
|
||||
@ -2829,7 +2836,8 @@ void multiSlsDetector::readFrameFromReceiver() {
|
||||
// updates its header data
|
||||
gappixelsenable =
|
||||
(doc["gappixels"].GetUint() == 0) ? false : true;
|
||||
quadEnable = (doc["quad"].GetUint() == 0) ? false : true;
|
||||
quadEnable =
|
||||
(doc["quad"].GetUint() == 0) ? false : true;
|
||||
FILE_LOG(logDEBUG1)
|
||||
<< "One Time Header Info:"
|
||||
"\n\tsize: "
|
||||
@ -2906,12 +2914,11 @@ void multiSlsDetector::readFrameFromReceiver() {
|
||||
}
|
||||
}
|
||||
}
|
||||
FILE_LOG(logDEBUG)
|
||||
<< "Call Back Info:"
|
||||
<< "\n\t nDetPixelsX: " << nDetPixelsX
|
||||
<< "\n\t nDetPixelsY: " << nDetPixelsY
|
||||
<< "\n\t databytes: " << multisize
|
||||
<< "\n\t dynamicRange: " << dynamicRange;
|
||||
FILE_LOG(logDEBUG) << "Call Back Info:"
|
||||
<< "\n\t nDetPixelsX: " << nDetPixelsX
|
||||
<< "\n\t nDetPixelsY: " << nDetPixelsY
|
||||
<< "\n\t databytes: " << multisize
|
||||
<< "\n\t dynamicRange: " << dynamicRange;
|
||||
|
||||
// send data to callback
|
||||
if (data) {
|
||||
@ -2919,18 +2926,18 @@ void multiSlsDetector::readFrameFromReceiver() {
|
||||
// 4bit gap pixels
|
||||
if (dynamicRange == 4 && gappixelsenable) {
|
||||
if (quadEnable) {
|
||||
nDetPixelsX += 2;
|
||||
nDetPixelsY += 2;
|
||||
} else {
|
||||
nDetPixelsX = nX * (nPixelsX + 3);
|
||||
nDetPixelsY = nY * (nPixelsY + 1);
|
||||
}
|
||||
int n = processImageWithGapPixels(multiframe, multigappixels, quadEnable);
|
||||
FILE_LOG(logDEBUG)
|
||||
<< "Call Back Info Recalculated:"
|
||||
<< "\n\t nDetPixelsX: " << nDetPixelsX
|
||||
<< "\n\t nDetPixelsY: " << nDetPixelsY
|
||||
<< "\n\t databytes: " << n;
|
||||
nDetPixelsX += 2;
|
||||
nDetPixelsY += 2;
|
||||
} else {
|
||||
nDetPixelsX = nX * (nPixelsX + 3);
|
||||
nDetPixelsY = nY * (nPixelsY + 1);
|
||||
}
|
||||
int n = processImageWithGapPixels(multiframe, multigappixels,
|
||||
quadEnable);
|
||||
FILE_LOG(logDEBUG) << "Call Back Info Recalculated:"
|
||||
<< "\n\t nDetPixelsX: " << nDetPixelsX
|
||||
<< "\n\t nDetPixelsY: " << nDetPixelsY
|
||||
<< "\n\t databytes: " << n;
|
||||
thisData = new detectorData(
|
||||
getCurrentProgress(), currentFileName.c_str(), nDetPixelsX,
|
||||
nDetPixelsY, multigappixels, n, dynamicRange,
|
||||
@ -2986,15 +2993,18 @@ void multiSlsDetector::readFrameFromReceiver() {
|
||||
delete[] multigappixels;
|
||||
}
|
||||
|
||||
int multiSlsDetector::processImageWithGapPixels(char *image, char *&gpImage, bool quadEnable) {
|
||||
// eiger 4 bit mode
|
||||
int nxb = multi_shm()->numberOfDetector.x * (512 + 3); //(divided by 2 already)
|
||||
int multiSlsDetector::processImageWithGapPixels(char *image, char *&gpImage,
|
||||
bool quadEnable) {
|
||||
// eiger 4 bit mode
|
||||
int nxb =
|
||||
multi_shm()->numberOfDetector.x * (512 + 3); //(divided by 2 already)
|
||||
int nyb = multi_shm()->numberOfDetector.y * (256 + 1);
|
||||
int nchipInRow = 4;
|
||||
int nxchip = multi_shm()->numberOfDetector.x * 4;
|
||||
int nychip = multi_shm()->numberOfDetector.y * 1;
|
||||
if (quadEnable) {
|
||||
nxb = multi_shm()->numberOfDetector.x * (256 + 1); //(divided by 2 already)
|
||||
nxb = multi_shm()->numberOfDetector.x *
|
||||
(256 + 1); //(divided by 2 already)
|
||||
nyb = multi_shm()->numberOfDetector.y * (512 + 2);
|
||||
nxchip /= 2;
|
||||
nychip *= 2;
|
||||
@ -3002,8 +3012,6 @@ int multiSlsDetector::processImageWithGapPixels(char *image, char *&gpImage, boo
|
||||
}
|
||||
int gapdatabytes = nxb * nyb;
|
||||
|
||||
|
||||
|
||||
// allocate
|
||||
if (gpImage == nullptr) {
|
||||
gpImage = new char[gapdatabytes];
|
||||
@ -3021,8 +3029,8 @@ int multiSlsDetector::processImageWithGapPixels(char *image, char *&gpImage, boo
|
||||
dst = gpImage;
|
||||
for (int row = 0; row < nychip; ++row) { // for each chip row
|
||||
for (int ichipy = 0; ichipy < b1chipy;
|
||||
++ichipy) { // for each row in a chip
|
||||
for (int col = 0; col < nxchip; ++col) {// for each chip in a row
|
||||
++ichipy) { // for each row in a chip
|
||||
for (int col = 0; col < nxchip; ++col) { // for each chip in a row
|
||||
memcpy(dst, src, b1chipx);
|
||||
src += b1chipx;
|
||||
dst += b1chipx;
|
||||
@ -3043,7 +3051,8 @@ int multiSlsDetector::processImageWithGapPixels(char *image, char *&gpImage, boo
|
||||
for (int row = 0; row < nychip; ++row) { // for each chip row
|
||||
for (int ichipy = 0; ichipy < b1chipy;
|
||||
++ichipy) { // for each row in a chip
|
||||
for (int col = 0; col < nxchip; ++col) {// for each chip in a row
|
||||
for (int col = 0; col < nxchip;
|
||||
++col) { // for each chip in a row
|
||||
dst += b1chipx;
|
||||
mod = (col + 1) % nchipInRow; // get gap pixels
|
||||
// copy gap pixel(chip 0, 1, 2)
|
||||
@ -3394,7 +3403,7 @@ int multiSlsDetector::setLEDEnable(int enable, int detPos) {
|
||||
}
|
||||
|
||||
void multiSlsDetector::setDigitalIODelay(uint64_t pinMask, int delay,
|
||||
int detPos) {
|
||||
int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
detectors[detPos]->setDigitalIODelay(pinMask, delay);
|
||||
@ -3618,15 +3627,18 @@ void multiSlsDetector::registerDataCallback(
|
||||
}
|
||||
|
||||
int multiSlsDetector::setTotalProgress() {
|
||||
int nf = Parallel(&slsDetector::setTimer, {}, FRAME_NUMBER, -1).tsquash("Inconsistent number of frames");
|
||||
int nc = Parallel(&slsDetector::setTimer, {}, CYCLES_NUMBER, -1).tsquash("Inconsistent number of cycles");
|
||||
int nf = Parallel(&slsDetector::setTimer, {}, FRAME_NUMBER, -1)
|
||||
.tsquash("Inconsistent number of frames");
|
||||
int nc = Parallel(&slsDetector::setTimer, {}, CYCLES_NUMBER, -1)
|
||||
.tsquash("Inconsistent number of cycles");
|
||||
if (nf == 0 || nc == 0) {
|
||||
throw RuntimeError("Number of frames or cycles is 0");
|
||||
}
|
||||
|
||||
int ns = 1;
|
||||
if (getDetectorTypeAsEnum() == JUNGFRAU) {
|
||||
ns = Parallel(&slsDetector::setTimer, {}, STORAGE_CELL_NUMBER, -1).tsquash("Inconsistent number of additional storage cells");
|
||||
ns = Parallel(&slsDetector::setTimer, {}, STORAGE_CELL_NUMBER, -1)
|
||||
.tsquash("Inconsistent number of additional storage cells");
|
||||
++ns;
|
||||
}
|
||||
|
||||
@ -3707,12 +3719,12 @@ int multiSlsDetector::acquire() {
|
||||
// stop receiver
|
||||
if (receiver) {
|
||||
stopReceiver();
|
||||
if (dataReady != nullptr) {
|
||||
sem_wait(&sem_endRTAcquisition); // waits for receiver's
|
||||
}
|
||||
// external process to be
|
||||
// done sending data to gui
|
||||
|
||||
if (dataReady != nullptr) {
|
||||
sem_wait(&sem_endRTAcquisition); // waits for receiver's
|
||||
}
|
||||
// external process to be
|
||||
// done sending data to gui
|
||||
|
||||
incrementFileIndex();
|
||||
}
|
||||
|
||||
@ -3904,9 +3916,3 @@ std::vector<char> multiSlsDetector::readPofFile(const std::string &fname) {
|
||||
FILE_LOG(logINFO) << "Read file into memory";
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
|
||||
using namespace sls;
|
||||
|
||||
|
||||
// create shm
|
||||
slsDetector::slsDetector(detectorType type, int multi_id, int det_id,
|
||||
bool verify)
|
||||
@ -590,8 +589,10 @@ void slsDetector::updateNumberOfChannels() {
|
||||
|
||||
slsDetectorDefs::xy slsDetector::getNumberOfChannels() const {
|
||||
slsDetectorDefs::xy coord;
|
||||
coord.x = (shm()->nChan.x * shm()->nChip.x + shm()->gappixels * shm()->nGappixels.x);
|
||||
coord.y = (shm()->nChan.y * shm()->nChip.y + shm()->gappixels * shm()->nGappixels.y);
|
||||
coord.x = (shm()->nChan.x * shm()->nChip.x +
|
||||
shm()->gappixels * shm()->nGappixels.x);
|
||||
coord.y = (shm()->nChan.y * shm()->nChip.y +
|
||||
shm()->gappixels * shm()->nGappixels.y);
|
||||
return coord;
|
||||
}
|
||||
|
||||
@ -601,7 +602,6 @@ bool slsDetector::getQuad() {
|
||||
sendToDetector(F_GET_QUAD, nullptr, retval);
|
||||
FILE_LOG(logDEBUG1) << "Quad Type :" << retval;
|
||||
return (retval == 0 ? false : true);
|
||||
|
||||
}
|
||||
|
||||
void slsDetector::setQuad(const bool enable) {
|
||||
@ -617,10 +617,11 @@ void slsDetector::setQuad(const bool enable) {
|
||||
void slsDetector::setReadNLines(const int value) {
|
||||
FILE_LOG(logDEBUG1) << "Setting read n lines to " << value;
|
||||
sendToDetector(F_SET_READ_N_LINES, value, nullptr);
|
||||
FILE_LOG(logDEBUG1) << "Setting read n lines to " << value << " in Receiver";
|
||||
FILE_LOG(logDEBUG1) << "Setting read n lines to " << value
|
||||
<< " in Receiver";
|
||||
if (shm()->useReceiverFlag) {
|
||||
sendToReceiver(F_SET_RECEIVER_READ_N_LINES, value, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int slsDetector::getReadNLines() {
|
||||
@ -635,7 +636,6 @@ void slsDetector::updateMultiSize(slsDetectorDefs::xy det) {
|
||||
shm()->multiSize = det;
|
||||
}
|
||||
|
||||
|
||||
int slsDetector::setControlPort(int port_number) {
|
||||
int retval = -1;
|
||||
FILE_LOG(logDEBUG1) << "Setting control port to " << port_number;
|
||||
@ -736,7 +736,7 @@ void slsDetector::updateCachedDetectorVariables() {
|
||||
|
||||
// dr
|
||||
n += client.Receive(&i32, sizeof(i32));
|
||||
shm()->dynamicRange = i32;
|
||||
shm()->dynamicRange = i32;
|
||||
|
||||
// settings
|
||||
if ((shm()->myDetectorType != CHIPTESTBOARD) &&
|
||||
@ -1438,9 +1438,7 @@ int slsDetector::setDynamicRange(int n) {
|
||||
return shm()->dynamicRange;
|
||||
}
|
||||
|
||||
int slsDetector::getDynamicRangeFromShm() {
|
||||
return shm()->dynamicRange;
|
||||
}
|
||||
int slsDetector::getDynamicRangeFromShm() { return shm()->dynamicRange; }
|
||||
|
||||
int slsDetector::setDAC(int val, dacIndex index, int mV) {
|
||||
int args[]{static_cast<int>(index), mV, val};
|
||||
@ -2190,7 +2188,8 @@ void slsDetector::setROI(slsDetectorDefs::ROI arg) {
|
||||
arg.xmin = -1;
|
||||
arg.xmax = -1;
|
||||
}
|
||||
FILE_LOG(logDEBUG) << "Sending ROI to detector [" << arg.xmin << ", " << arg.xmax << "]";
|
||||
FILE_LOG(logDEBUG) << "Sending ROI to detector [" << arg.xmin << ", "
|
||||
<< arg.xmax << "]";
|
||||
auto client = DetectorSocket(shm()->hostname, shm()->controlPort);
|
||||
client.Send(&fnum, sizeof(fnum));
|
||||
client.Send(&arg.xmin, sizeof(int));
|
||||
@ -2203,7 +2202,7 @@ void slsDetector::setROI(slsDetectorDefs::ROI arg) {
|
||||
throw RuntimeError("Detector " + std::to_string(detId) +
|
||||
" returned error: " + std::string(mess));
|
||||
} else {
|
||||
memcpy(&shm()->roi, &arg, sizeof(ROI));
|
||||
memcpy(&shm()->roi, &arg, sizeof(ROI));
|
||||
if (ret == FORCE_UPDATE) {
|
||||
updateCachedDetectorVariables();
|
||||
}
|
||||
@ -2243,14 +2242,13 @@ slsDetectorDefs::ROI slsDetector::getROI() {
|
||||
client.Receive(&retval.xmin, sizeof(int));
|
||||
client.Receive(&retval.xmax, sizeof(int));
|
||||
FILE_LOG(logDEBUG1)
|
||||
<< "ROI retval [" << retval.xmin << ","
|
||||
<< retval.xmax << "]";
|
||||
<< "ROI retval [" << retval.xmin << "," << retval.xmax << "]";
|
||||
if (ret == FORCE_UPDATE) {
|
||||
updateCachedDetectorVariables();
|
||||
}
|
||||
// if different from shm, update and send to receiver
|
||||
if (shm()->roi.xmin != retval.xmin || shm()->roi.xmax != retval.xmax) {
|
||||
memcpy(&shm()->roi, &retval, sizeof(ROI));
|
||||
memcpy(&shm()->roi, &retval, sizeof(ROI));
|
||||
sendROItoReceiver();
|
||||
}
|
||||
}
|
||||
@ -2258,8 +2256,6 @@ slsDetectorDefs::ROI slsDetector::getROI() {
|
||||
return shm()->roi;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void slsDetector::setADCEnableMask(uint32_t mask) {
|
||||
uint32_t arg = mask;
|
||||
FILE_LOG(logDEBUG1) << "Setting ADC Enable mask to 0x" << std::hex << arg
|
||||
@ -2414,9 +2410,7 @@ bool slsDetector::setDeactivatedRxrPaddingMode(int padding) {
|
||||
return shm()->rxPadDeactivatedModules;
|
||||
}
|
||||
|
||||
int slsDetector::getFlippedDataX() const {
|
||||
return shm()->flippedDataX;
|
||||
}
|
||||
int slsDetector::getFlippedDataX() const { return shm()->flippedDataX; }
|
||||
|
||||
int slsDetector::setFlippedDataX(int value) {
|
||||
// replace get with shm value (write to shm right away as it is a det value,
|
||||
@ -2426,7 +2420,8 @@ int slsDetector::setFlippedDataX(int value) {
|
||||
}
|
||||
int retval = -1;
|
||||
int arg = shm()->flippedDataX;
|
||||
FILE_LOG(logDEBUG1) << "Setting flipped data across x axis with value: " << arg;
|
||||
FILE_LOG(logDEBUG1) << "Setting flipped data across x axis with value: "
|
||||
<< arg;
|
||||
if (shm()->useReceiverFlag) {
|
||||
sendToReceiver(F_SET_FLIPPED_DATA_RECEIVER, arg, retval);
|
||||
FILE_LOG(logDEBUG1) << "Flipped data:" << retval;
|
||||
|
Reference in New Issue
Block a user