mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 23:30:03 +02:00
moench has only analog readout
This commit is contained in:
parent
2676e8b43d
commit
abc7a9bd2f
@ -530,7 +530,9 @@ void setupDetector() {
|
|||||||
setTimer(FRAME_PERIOD, DEFAULT_PERIOD);
|
setTimer(FRAME_PERIOD, DEFAULT_PERIOD);
|
||||||
setTimer(DELAY_AFTER_TRIGGER, DEFAULT_DELAY);
|
setTimer(DELAY_AFTER_TRIGGER, DEFAULT_DELAY);
|
||||||
setTiming(DEFAULT_TIMING_MODE);
|
setTiming(DEFAULT_TIMING_MODE);
|
||||||
setReadOutFlags(NORMAL_READOUT);
|
|
||||||
|
// ensuring normal readout (only option for moench)
|
||||||
|
bus_w(addr, bus_r(addr) & (~CONFIG_DSBL_ANLG_OTPT_MSK) & (~CONFIG_ENBLE_DGTL_OTPT_MSK));
|
||||||
|
|
||||||
// clear roi
|
// clear roi
|
||||||
{
|
{
|
||||||
@ -819,60 +821,6 @@ int getSpeed(enum speedVariable ind) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum readOutFlags setReadOutFlags(enum readOutFlags val) {
|
|
||||||
enum readOutFlags retval = GET_READOUT_FLAGS;
|
|
||||||
uint32_t addr = CONFIG_REG;
|
|
||||||
|
|
||||||
// set
|
|
||||||
if (val != GET_READOUT_FLAGS) {
|
|
||||||
switch(val) {
|
|
||||||
case NORMAL_READOUT:
|
|
||||||
FILE_LOG(logINFO, ("Setting Normal Readout\n"));
|
|
||||||
bus_w(addr, bus_r(addr) & (~CONFIG_DSBL_ANLG_OTPT_MSK) & (~CONFIG_ENBLE_DGTL_OTPT_MSK));
|
|
||||||
break;
|
|
||||||
case DIGITAL_ONLY:
|
|
||||||
FILE_LOG(logINFO, ("Setting Digital Only Readout\n"));
|
|
||||||
bus_w(addr, bus_r(addr) | CONFIG_DSBL_ANLG_OTPT_MSK | CONFIG_ENBLE_DGTL_OTPT_MSK);
|
|
||||||
break;
|
|
||||||
case ANALOG_AND_DIGITAL:
|
|
||||||
FILE_LOG(logINFO, ("Setting Analog & Digital Readout\n"));
|
|
||||||
bus_w(addr, (bus_r(addr) & (~CONFIG_DSBL_ANLG_OTPT_MSK)) | CONFIG_ENBLE_DGTL_OTPT_MSK);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FILE_LOG(logERROR, ("Cannot set unknown readout flag. 0x%x\n", val));
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// get
|
|
||||||
uint32_t regval = bus_r(addr);
|
|
||||||
FILE_LOG(logDEBUG1, ("Config Reg: 0x%08x\n", regval));
|
|
||||||
// this bit reads analog disable, so inverse
|
|
||||||
analogEnable = (((regval & CONFIG_DSBL_ANLG_OTPT_MSK) >> CONFIG_DSBL_ANLG_OTPT_OFST) ? 0 : 1);
|
|
||||||
digitalEnable = ((regval & CONFIG_ENBLE_DGTL_OTPT_MSK) >> CONFIG_ENBLE_DGTL_OTPT_OFST);
|
|
||||||
|
|
||||||
if (analogEnable && digitalEnable) {
|
|
||||||
FILE_LOG(logDEBUG1, ("Getting readout: Analog & Digital\n"));
|
|
||||||
retval = ANALOG_AND_DIGITAL;
|
|
||||||
} else if (analogEnable && !digitalEnable) {
|
|
||||||
FILE_LOG(logDEBUG1, ("Getting readout: Normal\n"));
|
|
||||||
retval = NORMAL_READOUT;
|
|
||||||
} else if (!analogEnable && digitalEnable) {
|
|
||||||
FILE_LOG(logDEBUG1, ("Getting readout: Digital Only\n"));
|
|
||||||
retval = DIGITAL_ONLY;
|
|
||||||
} else {
|
|
||||||
FILE_LOG(logERROR, ("Read unknown readout (Both digital and analog are disabled). "
|
|
||||||
"Config reg: 0x%x\n", regval));
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
// update databytes and allocate ram
|
|
||||||
if (allocateRAM() == FAIL) {
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* parameters - timer */
|
/* parameters - timer */
|
||||||
|
@ -120,7 +120,7 @@ void setSpeed(enum speedVariable ind, int val);
|
|||||||
int getSpeed(enum speedVariable ind);
|
int getSpeed(enum speedVariable ind);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(EIGERD) || defined(CHIPTESTBOARDD) || defined(MOENCHD)
|
#if defined(EIGERD) || defined(CHIPTESTBOARDD)
|
||||||
enum readOutFlags setReadOutFlags(enum readOutFlags val);
|
enum readOutFlags setReadOutFlags(enum readOutFlags val);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1797,7 +1797,7 @@ int set_readout_flags(int file_des) {
|
|||||||
return printSocketReadError();
|
return printSocketReadError();
|
||||||
FILE_LOG(logDEBUG1, ("Setting readout flags to %d\n", arg));
|
FILE_LOG(logDEBUG1, ("Setting readout flags to %d\n", arg));
|
||||||
|
|
||||||
#if defined(JUNGFRAUD) || defined(GOTTHARDD)
|
#if defined(JUNGFRAUD) || defined(GOTTHARDD) || defined(MOENCHD)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
#else
|
#else
|
||||||
// set & get
|
// set & get
|
||||||
@ -1805,6 +1805,7 @@ int set_readout_flags(int file_des) {
|
|||||||
|
|
||||||
switch(arg) {
|
switch(arg) {
|
||||||
case GET_READOUT_FLAGS:
|
case GET_READOUT_FLAGS:
|
||||||
|
#ifdef EIGERD
|
||||||
case STORE_IN_RAM:
|
case STORE_IN_RAM:
|
||||||
case CONTINOUS_RO:
|
case CONTINOUS_RO:
|
||||||
case PARALLEL:
|
case PARALLEL:
|
||||||
@ -1812,7 +1813,7 @@ int set_readout_flags(int file_des) {
|
|||||||
case SAFE:
|
case SAFE:
|
||||||
case SHOW_OVERFLOW:
|
case SHOW_OVERFLOW:
|
||||||
case NOOVERFLOW:
|
case NOOVERFLOW:
|
||||||
#if defined(CHIPTESTBOARDD) || defined(MOENCHD)
|
#elif CHIPTESTBOARDD
|
||||||
case NORMAL_READOUT:
|
case NORMAL_READOUT:
|
||||||
case DIGITAL_ONLY:
|
case DIGITAL_ONLY:
|
||||||
case ANALOG_AND_DIGITAL:
|
case ANALOG_AND_DIGITAL:
|
||||||
@ -2178,7 +2179,7 @@ int send_update(int file_des) {
|
|||||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
|
|
||||||
#if defined(EIGERD) || defined(CHIPTESTBOARDD) || defined(MOENCHD)
|
#if defined(EIGERD) || defined(CHIPTESTBOARDD)
|
||||||
i32 = setReadOutFlags(GET_READOUT_FLAGS);
|
i32 = setReadOutFlags(GET_READOUT_FLAGS);
|
||||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
|
@ -1102,7 +1102,7 @@ int slsDetector::updateDetectorNoWait(sls::ClientSocket &client) {
|
|||||||
|
|
||||||
// readout flags
|
// readout flags
|
||||||
if (thisDetector->myDetectorType == EIGER ||
|
if (thisDetector->myDetectorType == EIGER ||
|
||||||
thisDetector->myDetectorType == CHIPTESTBOARD || thisDetector->myDetectorType == MOENCH) {
|
thisDetector->myDetectorType == CHIPTESTBOARD) {
|
||||||
n += client.receiveData(&i32, sizeof(i32));
|
n += client.receiveData(&i32, sizeof(i32));
|
||||||
thisDetector->roFlags = (readOutFlags)i32;
|
thisDetector->roFlags = (readOutFlags)i32;
|
||||||
}
|
}
|
||||||
@ -2449,28 +2449,46 @@ std::string slsDetector::setReceiver(const std::string &receiverIP) {
|
|||||||
overwriteFile(thisDetector->receiver_overWriteEnable);
|
overwriteFile(thisDetector->receiver_overWriteEnable);
|
||||||
setTimer(FRAME_PERIOD, thisDetector->timerValue[FRAME_PERIOD]);
|
setTimer(FRAME_PERIOD, thisDetector->timerValue[FRAME_PERIOD]);
|
||||||
setTimer(FRAME_NUMBER, thisDetector->timerValue[FRAME_NUMBER]);
|
setTimer(FRAME_NUMBER, thisDetector->timerValue[FRAME_NUMBER]);
|
||||||
if (thisDetector->myDetectorType != CHIPTESTBOARD && thisDetector->myDetectorType != MOENCH) {
|
|
||||||
|
// detector specific
|
||||||
|
switch(thisDetector->myDetectorType) {
|
||||||
|
case GOTTHARD:
|
||||||
setTimer(ACQUISITION_TIME, thisDetector->timerValue[ACQUISITION_TIME]);
|
setTimer(ACQUISITION_TIME, thisDetector->timerValue[ACQUISITION_TIME]);
|
||||||
}
|
|
||||||
if (thisDetector->myDetectorType == EIGER) {
|
break;
|
||||||
setTimer(SUBFRAME_ACQUISITION_TIME,
|
case JUNGFRAU:
|
||||||
thisDetector->timerValue[SUBFRAME_ACQUISITION_TIME]);
|
setTimer(ACQUISITION_TIME, thisDetector->timerValue[ACQUISITION_TIME]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EIGER:
|
||||||
|
setTimer(ACQUISITION_TIME, thisDetector->timerValue[ACQUISITION_TIME]);
|
||||||
|
setTimer(SUBFRAME_ACQUISITION_TIME, thisDetector->timerValue[SUBFRAME_ACQUISITION_TIME]);
|
||||||
setTimer(SUBFRAME_DEADTIME, thisDetector->timerValue[SUBFRAME_DEADTIME]);
|
setTimer(SUBFRAME_DEADTIME, thisDetector->timerValue[SUBFRAME_DEADTIME]);
|
||||||
}
|
|
||||||
setDynamicRange(thisDetector->dynamicRange);
|
setDynamicRange(thisDetector->dynamicRange);
|
||||||
if (thisDetector->myDetectorType == CHIPTESTBOARD || thisDetector->myDetectorType == MOENCH) {
|
|
||||||
setTimer(SAMPLES, thisDetector->timerValue[SAMPLES]);
|
|
||||||
}
|
|
||||||
if (thisDetector->myDetectorType == EIGER) {
|
|
||||||
setFlippedData(X, -1);
|
setFlippedData(X, -1);
|
||||||
activate(-1);
|
activate(-1);
|
||||||
setDeactivatedRxrPaddingMode(thisDetector->receiver_deactivatedPaddingEnable);
|
setDeactivatedRxrPaddingMode(thisDetector->receiver_deactivatedPaddingEnable);
|
||||||
enableGapPixels(thisDetector->gappixels);
|
enableGapPixels(thisDetector->gappixels);
|
||||||
}
|
|
||||||
if (thisDetector->myDetectorType == EIGER || thisDetector->myDetectorType == CHIPTESTBOARD || thisDetector->myDetectorType == MOENCH) {
|
|
||||||
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
||||||
setReadOutFlags(GET_READOUT_FLAGS);
|
setReadOutFlags(GET_READOUT_FLAGS);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case CHIPTESTBOARD:
|
||||||
|
setTimer(SAMPLES, thisDetector->timerValue[SAMPLES]);
|
||||||
|
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
||||||
|
setReadOutFlags(GET_READOUT_FLAGS);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case MOENCH:
|
||||||
|
setTimer(SAMPLES, thisDetector->timerValue[SAMPLES]);
|
||||||
|
enableTenGigabitEthernet(thisDetector->tenGigaEnable);
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
setReceiverSilentMode(thisDetector->receiver_silentMode);
|
setReceiverSilentMode(thisDetector->receiver_silentMode);
|
||||||
// data streaming
|
// data streaming
|
||||||
setReceiverStreamingFrequency(thisDetector->receiver_read_freq);
|
setReceiverStreamingFrequency(thisDetector->receiver_read_freq);
|
||||||
|
@ -213,7 +213,7 @@ public:
|
|||||||
* @param s number of samples
|
* @param s number of samples
|
||||||
* @param t tengiga enable
|
* @param t tengiga enable
|
||||||
*/
|
*/
|
||||||
virtual void setImageSize(slsDetectorDefs::readOutFlags f, std::vector<slsDetectorDefs::ROI> i, int s, bool t) {
|
virtual void setImageSize(std::vector<slsDetectorDefs::ROI> i, int s, bool t, slsDetectorDefs::readOutFlags f = slsDetectorDefs::GET_READOUT_FLAGS) {
|
||||||
cprintf(RED,"setImageSize is a generic function that should be overloaded by a derived class\n");
|
cprintf(RED,"setImageSize is a generic function that should be overloaded by a derived class\n");
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -535,12 +535,13 @@ public:
|
|||||||
ChipTestBoardData(){
|
ChipTestBoardData(){
|
||||||
myDetectorType = slsDetectorDefs::CHIPTESTBOARD;
|
myDetectorType = slsDetectorDefs::CHIPTESTBOARD;
|
||||||
nPixelsX = 36; // total number of channels
|
nPixelsX = 36; // total number of channels
|
||||||
nPixelsY = 1; // numberofsamples
|
nPixelsY = 1; // number of samples
|
||||||
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
|
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
|
||||||
dataSize = UDP_PACKET_DATA_BYTES;
|
dataSize = UDP_PACKET_DATA_BYTES;
|
||||||
packetSize = headerSizeinPacket + dataSize;
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
packetsPerFrame = 0; // to be calculated
|
//packetsPerFrame = 1;
|
||||||
imageSize = 0; // to be calculated
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
|
packetsPerFrame = ceil((double)imageSize / (double)UDP_PACKET_DATA_BYTES);
|
||||||
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
@ -554,7 +555,7 @@ public:
|
|||||||
* @param s number of samples
|
* @param s number of samples
|
||||||
* @param t tengiga enable
|
* @param t tengiga enable
|
||||||
*/
|
*/
|
||||||
void setImageSize(slsDetectorDefs::readOutFlags f, std::vector<slsDetectorDefs::ROI> i, int s, bool t) {
|
void setImageSize(std::vector<slsDetectorDefs::ROI> i, int s, bool t, slsDetectorDefs::readOutFlags f = slsDetectorDefs::GET_READOUT_FLAGS) {
|
||||||
int nchans = 0;
|
int nchans = 0;
|
||||||
if (f != slsDetectorDefs::GET_READOUT_FLAGS) {
|
if (f != slsDetectorDefs::GET_READOUT_FLAGS) {
|
||||||
// analog channels
|
// analog channels
|
||||||
@ -596,7 +597,12 @@ class MoenchData : public GeneralData {
|
|||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/** Structure of an jungfrau ctb packet header */
|
/** Number of analog channels */
|
||||||
|
const int NCHAN_ANALOG = 32;
|
||||||
|
/** Number of bytes per pixel */
|
||||||
|
const int NUM_BYTES_PER_PIXEL = 2;
|
||||||
|
|
||||||
|
/** Structure of an jungfrau ctb packet header (10G Udp) */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char emptyHeader[6];
|
unsigned char emptyHeader[6];
|
||||||
unsigned char reserved[4];
|
unsigned char reserved[4];
|
||||||
@ -607,23 +613,22 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/** Bytes Per Adc */
|
|
||||||
const uint32_t bytesPerAdc = 2;
|
|
||||||
|
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
MoenchData(){
|
MoenchData(){
|
||||||
myDetectorType = slsDetectorDefs::MOENCH;
|
myDetectorType = slsDetectorDefs::MOENCH;
|
||||||
nPixelsX = 400;
|
nPixelsX = 32; // total number of channels
|
||||||
nPixelsY = 400;
|
nPixelsY = 1; // number of samples
|
||||||
headerSizeinPacket = 22;
|
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
|
||||||
dataSize = 8192;
|
dataSize = UDP_PACKET_DATA_BYTES;
|
||||||
packetSize = headerSizeinPacket + dataSize;
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
packetsPerFrame = 1;
|
//packetsPerFrame = 1;
|
||||||
imageSize = nPixelsX * nPixelsY * 2;
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
|
packetsPerFrame = ceil((double)imageSize / (double)UDP_PACKET_DATA_BYTES);
|
||||||
frameIndexMask = 0xFFFFFF;
|
frameIndexMask = 0xFFFFFF;
|
||||||
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
|
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
|
||||||
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
|
||||||
defaultFifoDepth = 2500;
|
defaultFifoDepth = 2500;
|
||||||
|
standardheader = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -645,34 +650,42 @@ private:
|
|||||||
bunchId = (*((uint64_t*) header->bunchid));
|
bunchId = (*((uint64_t*) header->bunchid));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Setting packets per frame changes member variables
|
|
||||||
* @param ns number of samples
|
|
||||||
*/
|
|
||||||
void setNumberofSamples(const uint64_t ns) {
|
|
||||||
packetsPerFrame = ceil(double(2 * 32 * ns) / dataSize);
|
|
||||||
nPixelsY = (ns * 2) / 25;/* depends on nroich also?? */
|
|
||||||
imageSize = nPixelsX * nPixelsY * 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting ten giga enable changes member variables
|
* Set databytes (ctb, moench)
|
||||||
* @param tgEnable true if 10GbE is enabled, else false
|
* @param f readout flags
|
||||||
* @param dr dynamic range
|
* @param r roi
|
||||||
|
* @param s number of samples
|
||||||
|
* @param t tengiga enable
|
||||||
*/
|
*/
|
||||||
void SetTenGigaEnable(bool tgEnable, int dr) {
|
void setImageSize(std::vector<slsDetectorDefs::ROI> i, int s, bool t,
|
||||||
dataSize = (tgEnable ? 4096 : 1024);
|
slsDetectorDefs::readOutFlags f = slsDetectorDefs::GET_READOUT_FLAGS) {
|
||||||
|
int nchans = NCHAN_ANALOG;
|
||||||
|
// if roi
|
||||||
|
if (i.size()) {
|
||||||
|
nchans = abs(i[0].xmax - i[0].xmin);
|
||||||
|
}
|
||||||
|
|
||||||
|
nPixelsX = nchans;
|
||||||
|
nPixelsY = s;
|
||||||
|
// 10G
|
||||||
|
if (t) {
|
||||||
|
headerSizeinPacket = 22;
|
||||||
|
dataSize = 8192;
|
||||||
packetSize = headerSizeinPacket + dataSize;
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
packetsPerFrame = (tgEnable ? 4 : 16) * dr;
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
imageSize = dataSize*packetsPerFrame;
|
packetsPerFrame = ceil((double)imageSize / (double)packetSize);
|
||||||
};
|
standardheader = false;
|
||||||
|
}
|
||||||
/**
|
// 1g udp (via fifo readout)
|
||||||
* Print all variables
|
else {
|
||||||
*/
|
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
|
||||||
void Print(TLogLevel level = logDEBUG1) const {
|
dataSize = UDP_PACKET_DATA_BYTES;
|
||||||
GeneralData::Print(level);
|
packetSize = headerSizeinPacket + dataSize;
|
||||||
FILE_LOG(logINFO) << "Bytes Per Adc: " << bytesPerAdc;
|
imageSize = nPixelsX * nPixelsY * 2;
|
||||||
|
packetsPerFrame = ceil((double)imageSize / (double)UDP_PACKET_DATA_BYTES);
|
||||||
|
standardheader = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -447,8 +447,8 @@ int slsReceiverImplementation::setReadOutFlags(const readOutFlags f) {
|
|||||||
readoutFlags = f;
|
readoutFlags = f;
|
||||||
|
|
||||||
// side effects
|
// side effects
|
||||||
if (myDetectorType == CHIPTESTBOARD || myDetectorType == MOENCH) {
|
if (myDetectorType == CHIPTESTBOARD) {
|
||||||
generalData->setImageSize(readoutFlags, roi, numberOfSamples, tengigaEnable);
|
generalData->setImageSize(roi, numberOfSamples, tengigaEnable, readoutFlags);
|
||||||
for (const auto& it : dataProcessor)
|
for (const auto& it : dataProcessor)
|
||||||
it->SetPixelDimension();
|
it->SetPixelDimension();
|
||||||
if (SetupFifoStructure() == FAIL)
|
if (SetupFifoStructure() == FAIL)
|
||||||
@ -642,10 +642,10 @@ int slsReceiverImplementation::setROI(const std::vector<slsDetectorDefs::ROI> i)
|
|||||||
framesPerFile = generalData->maxFramesPerFile;
|
framesPerFile = generalData->maxFramesPerFile;
|
||||||
break;
|
break;
|
||||||
case MOENCH:
|
case MOENCH:
|
||||||
generalData->SetROI(i);
|
generalData->setImageSize(roi, numberOfSamples, tengigaEnable);
|
||||||
break;
|
break;
|
||||||
case CHIPTESTBOARD:
|
case CHIPTESTBOARD:
|
||||||
generalData->setImageSize(readoutFlags, roi, numberOfSamples, tengigaEnable);
|
generalData->setImageSize(roi, numberOfSamples, tengigaEnable, readoutFlags);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -789,18 +789,13 @@ int slsReceiverImplementation::setNumberofSamples(const uint64_t i) {
|
|||||||
if (numberOfSamples != i) {
|
if (numberOfSamples != i) {
|
||||||
numberOfSamples = i;
|
numberOfSamples = i;
|
||||||
|
|
||||||
switch(myDetectorType) {
|
if(myDetectorType == MOENCH) {
|
||||||
case MOENCH:
|
generalData->setImageSize(roi, numberOfSamples, tengigaEnable);
|
||||||
generalData->setNumberofSamples(i);
|
} else if(myDetectorType == CHIPTESTBOARD) {
|
||||||
break;
|
generalData->setImageSize(roi, numberOfSamples, tengigaEnable, readoutFlags);
|
||||||
case CHIPTESTBOARD:
|
}
|
||||||
generalData->setImageSize(readoutFlags, roi, numberOfSamples, tengigaEnable);
|
|
||||||
for (const auto& it : dataProcessor)
|
for (const auto& it : dataProcessor)
|
||||||
it->SetPixelDimension();
|
it->SetPixelDimension();
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (SetupFifoStructure() == FAIL)
|
if (SetupFifoStructure() == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
@ -811,6 +806,7 @@ int slsReceiverImplementation::setNumberofSamples(const uint64_t i) {
|
|||||||
|
|
||||||
|
|
||||||
int slsReceiverImplementation::setDynamicRange(const uint32_t i) {
|
int slsReceiverImplementation::setDynamicRange(const uint32_t i) {
|
||||||
|
// only eiger
|
||||||
if (dynamicRange != i) {
|
if (dynamicRange != i) {
|
||||||
dynamicRange = i;
|
dynamicRange = i;
|
||||||
generalData->SetDynamicRange(i,tengigaEnable);
|
generalData->SetDynamicRange(i,tengigaEnable);
|
||||||
@ -830,7 +826,20 @@ int slsReceiverImplementation::setTenGigaEnable(const bool b) {
|
|||||||
if (tengigaEnable != b) {
|
if (tengigaEnable != b) {
|
||||||
tengigaEnable = b;
|
tengigaEnable = b;
|
||||||
//side effects
|
//side effects
|
||||||
|
switch(myDetectorType) {
|
||||||
|
case EIGER:
|
||||||
generalData->SetTenGigaEnable(b,dynamicRange);
|
generalData->SetTenGigaEnable(b,dynamicRange);
|
||||||
|
break;
|
||||||
|
case MOENCH:
|
||||||
|
generalData->setImageSize(roi, numberOfSamples, tengigaEnable);
|
||||||
|
break;
|
||||||
|
case CHIPTESTBOARD:
|
||||||
|
generalData->setImageSize(roi, numberOfSamples, tengigaEnable, readoutFlags);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (SetupFifoStructure() == FAIL)
|
if (SetupFifoStructure() == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
|
@ -1947,7 +1947,7 @@ int slsReceiverTCPIPInterface::set_readout_flags() {
|
|||||||
if (interface->Server_ReceiveArg(ret, mess, &arg, sizeof(arg), true, receiver) == FAIL)
|
if (interface->Server_ReceiveArg(ret, mess, &arg, sizeof(arg), true, receiver) == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
if (myDetectorType == JUNGFRAU || myDetectorType == GOTTHARD)
|
if (myDetectorType == JUNGFRAU || myDetectorType == GOTTHARD || myDetectorType == MOENCH)
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
|
|
||||||
// base object not null
|
// base object not null
|
||||||
|
Loading…
x
Reference in New Issue
Block a user